Problem mit erkennen und darstellen von bildern
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
album
angegebene pfad
anzahl
bild
code
datei
dateiname
folgendes angezeigt code
fotoalbum
index
liegen
numerierung
ordner
page
schleife
server
tag
teil
url
vermeiden
-
hi!
hab nen problem, höchstwahrscheinlich liegts am php-tag/code">code.
ich habe mir ein fotoalbum geschrieben, ein skript, welches bilder in einem ordner erkennt, und in einer bestimmten reihenfolge darstellt etc. die bilder müssen dazu nach einem schema id-name.tag benannt sein (bsp: 12-Ein Hase.jpg). auf dem localen server (Xampp) funktioniert es einwandfrei, aber nicht auf lima city (egal ob firefox oder IE). habe den fehler selbst nicht finden können, hab schon (fast) alles probiert.
hier ist der quellcode:
<div class="album"> <ul> <hr> <?php $img = $_GET['img']; $pre1 = $_GET['dir']; if(empty($img) && empty($pre1)){ include('42'); } //der teil ist unwichtig, hat nix mit dem fehler zu tun. (einbindung der ordnerliste) ?> <hr> <div> <?PHP $dir = 'img/album'; //der ordner, in dem die einzelnen alben und bilder liegen $d = dir($dir); $anzahl = 5; //Anzahl der Bilder pro Zeile $bildbreite = substr(100 / $anzahl, 0, 2); //Breite, die ein bild zur verfügung hat (in %) $layout = 'picpreview'; //css-klasse für thumbnails if(!empty($pre1)){ //wenn ein album per id ausgewählt wurde while (false !== ($entry = $d->read())){ //jeder eintrag im ordner wird überprüft, ob er ein album ist und ob er zur id passt if(substr($entry, 0, strpos($entry, '-')) === $pre1){ $dir .= '/'.$entry; //Album Name if(strpos($entry, '-') == true){ // wenn ordnername '-' enthält, wird der teil bis zum ersten '-' abgeschnitten (präfix zur nummerierung) $dirname = substr($entry, strpos($entry, '-')+1); }else{ // wenn ordnername kein '-' enthält, ... $dirname = substr($entry, strpos($entry, '-'), strpos($entry, '.')-strpos($entry, '-')); } continue; //wenn das richtige album gefunden wurde, wird schleife abgebrochen } } } $d = dir($dir); $content = 0; if(empty($img)){//wen keine bild id explizit verlangt wird //festlegen der laufvariablen if(!empty($pre1)){ $j=1; echo '<li class="'.$layout.'" id="maindir_l_'.$pre1.'" style="width:'.$bildbreite.'%;" ><a href="index.php?page=4&intro=0"><div class="img" id="maindir_l_d_'.$pre1.'"><img id="maindir_l_d_i_'.$pre1.'" src="img/folder_1.png" title="Zurück"></div><br /><div class="txt"><span>Zurück</span></div></a></li>'; }else{ $j=0; } $id=0; //Verwechslungsgefahr: wenn $tag = false ist, geht die schleife weiter. //schmeißt nicht-bild-dateien raus while (false !== ($entry = $d->read())){ //schleife, listet die bilder (thumbnails) auf $tag = false; if(strpos(strtolower($entry), ".jpg") === false && strpos(strtolower($entry), ".png") === false && strpos(strtolower($entry), ".gif") === false ){ $tag = true; } // prefix wird ermittelt (für bild) $pre = substr($entry,0,strpos($entry, '-')); // Bild-Name wird erzeugt if(strpos($entry, '-') == true){ // wenn dateiname '-' enthält, wird der teil bis zum ersten '-' abgeschnitten (prefix zur nummerierung) $name = substr($entry, strpos($entry, '-')+1, strpos($entry, '.')-strpos($entry, '-')-1); }else{ // wenn dateiname kein '-' enthält, ... $name = substr($entry, strpos($entry, '-'), strpos($entry, '.')-strpos($entry, '-')); } if($name === 'album'){$name = $dirname; } //wenn bildname = album, dann nimmt bildname den albennamen an $album = 'index.php?page=4&intro=0&dir='.$pre1.'&img='.$pre.''; //dient zur abkürzung (bin etwas schreibfaul) $id++; //nicht-bild-dateien werden nicht angezeigt if($tag == true) continue; //versteckte dateien werden nicht angezeigt if (substr($entry,0,1)==".") continue; $content = 1; // bild-reihe wird erzeugt, mit $anzahl bildern $j++; if($j <= $anzahl) { echo '<li class="'.$layout.'" id="l_'.$id.'" style="width:'.$bildbreite.'%;" onmouseover="zoomIn('.$id.');" onmouseout="zoomOut('.$id.');"><a href="'.$album.'"><div class="img" id="l_d_'.$id.'"><img id="l_d_i_'.$id.'" src="'.$dir.'/'.$entry.'" title="'.$name.'"></div><br /><div class="txt"><span>'.$name.'</span></div></a></li>'; }else{ echo '</div><hr><div>'; $j=1; echo '<li class="'.$layout.'" id="l_'.$id.'" style="width:'.$bildbreite.'%;" onmouseover="zoomIn('.$id.');" onmouseout="zoomOut('.$id.');"><a href="'.$album.'"><div class="img" id="l_d_'.$id.'"><img id="l_d_i_'.$id.'" src="'.$dir.'/'.$entry.'" title="'.$name.'"></div><br /><div class="txt"><span>'.$name.'</span></div></a></li>'; } } }else{ //wenn eine bild id gegeben ist //vorheriges + nächstes bild $bw = $img - 1; $fw = $img + 1; //erzeuge linken und rechten button $button1 = '<a href="index.php?page=4&intro=0&dir='.$pre1.'&img='.$bw.'" ><img height="50" style="left:0px; text-decoration:none;" src="img/links2.png" height="20"></a>'; $button2 = '<a href="index.php?page=4&intro=0&dir='.$pre1.'&img='.$fw.'" ><img height="50" style="right:0px; text-decoration:none;" src="img/rechts2.png" height="20"></a>'; if($img <= 10 && $img > 1){ $button1 = '<a href="index.php?page=4&intro=0&dir='.$pre1.'&img=0'.$bw.'" ><img height="50" style="left:0px; text-decoration:none;" src="img/links2.png" height="20"></a>'; }//klappt if($img <= 8){ $button2 = '<a href="index.php?page=4&intro=0&dir='.$pre1.'&img=0'.$fw.'" ><img height="50" style="right:0px; text-decoration:none;" src="img/rechts2.png" height="20"></a>'; }//klappt //Datei Name (für quellpfad) //$dir = 'img/album'; $d = dir($dir); while (false !== ($entry = $d->read())){ if(substr($entry, 0, strpos($entry, '-')) === $img){ $imgsrc = $entry; //bild zur bild-id wird gesucht (analog zu oben / album-suche) $content = 1; $nextcontent = 1; //Bild Name if(strpos($entry, '-') == true){ // wenn dateiname '-' enthält, wird der teil bis zum ersten '-' abgeschnitten (prefix zur nummerierung) $name = substr($entry, strpos($entry, '-')+1, strpos($entry, '.')-strpos($entry, '-')-1); }else{ // wenn dateiname kein '-' enthält, ... $name = substr($entry, strpos($entry, '-'), strpos($entry, '.')-strpos($entry, '-')); } if($name === 'album'){$name = $dirname; } continue; } } if($nextcontent != 1){ $button2 = '<a href="index.php?page=4&intro=0&dir='.$pre1.'" ><img height="50" style="right:0px; text-decoration:none;" src="img/rechts2.png" height="20"></a>'; } //echo '<div class="outerpicture"><!--div class="left">'.$button1.'</div><!-- --><div class="innerpicture"><a href="index.php?page=4&intro=0"><img class="picture" title="name" src="bla.gif"></a></div><!--div class="right">'.$button2.'</div--><hr>'; echo '<table class="outerpicture" border="0"><tr><td class="left">'.$button1.'</td><td class="innerpicture"><a href="index.php?page=4&intro=0&dir='.$pre1.'"><img class="picture" title="name" src="'.$dir.'/'.$imgsrc.'"></a></td><td class="right">'.$button2.'</td></tr>'; echo '<tr><td colspan="3"><hr></td></tr><tr><td></td><td>'; echo 'Bild '.$img.', <br>'; echo $name; echo '<br><br><font size="1">(klicken sie auf das Bild, um zurück zu gelangen)</font></td><td></td></tr></table>'; } ?> </div> <?PHP if($content != 1 && empty($img)){ if(empty($pre1)){ echo "Bitte wählen Sie ein Fotoalbum aus"; }else{ echo "In diesem Album befinden sich noch keine Bilder!"; } } ?> <hr> </ul> </div>
wie gesagt, auf dem localhost klappt es wunderbar, aber online nicht. liegt es an der php version?? ist mein php veraltet? sind auf dem server bestimmte funktionen deaktiviert?
es ist sehr wichtig für mich, und wenn einer von euch weiß woran es liegt und mr helfen kann, wäre das echt toll!
mfg
PS: hier kann man sich das online anscheuen (auf dem lc server):
http://t-li.lima-city.de/balloninsel/ballon/index.php?page=4&intro=0
Beitrag zuletzt geändert: 25.7.2011 12:03:14 von t-li -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also so wie es scheint, liegt es nicht am PHP-Code, denn immerhin wird im Quelltext folgendes angezeigt:
<img class="picture" title="name" src="img/album/1-Glücksballon I/07-album.JPG">
was ja dafür spricht, dass PHP das Bild findet und den HTML-Tag richtig erstellt.
Bist du dir sicher, dass du absolut die gleiche Ordnerstruktur wie auf deinem Localhost verwendest?
Überprüfe nochmal manuell ob der angegebene Pfad auch existiert!
Und am besten auch Leerzeichen in Orndernamen vermeiden (siehe: 1-Glücksballon I) -
alfr3d schrieb:
Ja ;)
Also so wie es scheint, liegt es nicht am PHP-Code, denn immerhin wird im Quelltext folgendes angezeigt:
<img class="picture" title="name" src="img/album/1-Glücksballon I/07-album.JPG">
was ja dafür spricht, dass PHP das Bild findet und den HTML-Tag richtig erstellt.
Bist du dir sicher, dass du absolut die gleiche Ordnerstruktur wie auf deinem Localhost verwendest?
hab ich, und dabei ist mir etwas aufgefallen:
Überprüfe nochmal manuell ob der angegebene Pfad auch existiert!
es lag am umlaut!
ich hab das ü jetzt durch ue ersetzt und noch eine kleine funktion für die anzeige geschrieben, jetzt klappts!
vielen dank :-)
Und am besten auch Leerzeichen in Orndernamen vermeiden (siehe: 1-Glücksballon I)
jau, mach ich jetzt auch, obwohls daran nicht lag .
noch eine zweite frage:
die bilder werden außerdem in falscher reihenfolge angezeigt. zur besseren übersicht habe ich das skript erweitert und lasse vor jedem bild seine id anzeigen. eigentlich sollten sie in dieser reihenfolge angezeigt werden, und das funktioniert auch auf xampp, aber nicht auf lima. im ftp programm werden sie auch in richtiger reihenfolge angezeigt, aber im fotoalbum sind sie kreuz und quer.
weiß jemand, woran das liegen könnte??
hier nochmal der link:
http://t-li.lima-city.de/balloninsel/ballon/index.php?page=4&intro=0&dir=1&img=0
danke! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage