PHP Bildanzahl auslesen
Anonym
- php
0 niklaskamenisch0 Anonym0 niklaskamenisch0 Auge
Hallo,
ich habe ein Problem mit PHP.
Ich habe auf meiner Webseite ein PHP-Script, dass einfach auf Knopfdruck mittels einer Variable mir das nächste Bild anzeigt. (1.jpg, etc... eines Verzeichnisses)
Problem ist immer natürlich das Anfangsbild etc.
Beim Anfangsbild war's kein Problem habe ich mit if gelöst. Also, wenn die Variable kleiner als 1 dann ist, sie automatisch 1!
Aber wie mache ich es mit dem Endbild.
Also ich müsste die Bildanzahl/Dateianzahl eines Verzeichnisses auslesen und dann einstellen mit if, das es nicht mehr weiter geht.
Kann mir da jemand helfen?
hi,
irgendwie kenne ich das thema doch ;)
wenn du es wie von mir angeraten mit dem array gemacht hast, kannst du count($array) verwenden. Das hat die Anzahl der Elemente im Array.
Das dann minus 1 und mit der variable prüfen.
Wenn du es direkt aus dem Verzeichnis ausliest, dann wird es etwas umständlicher. Du musst das Verzeichnis öffenen und alles durchgehen. Dabei jeden durchlauf prüfen ob das ein Bild ist. Das heißt erst mal schauen ob es eine Datei ist und dann noch die Dateiendung prüfen und weiterzählen.
Ich hatte langezeit das letztere gemacht und alle Bilder in ein Array geschrieben und dann eben wie oben beschrieben geprüft.
if ($_GET['id'] >= count($array){
$bild = $array[count($array)-1];
}
Gruß Niklas
Das Problem ist das sehr oft dort im Ordner Bilder hinzugefügt werden und entfernt von Laien. Deshalb würde ich eine automatische Zählung bevorzugen
hi,
Das Problem ist das sehr oft dort im Ordner Bilder hinzugefügt werden und entfernt von Laien. Deshalb würde ich eine automatische Zählung bevorzugen.
dann wird das nur wie beschrieben funktionieren.
Allerdings wirst du dann auch probleme mit den Größen der Bilder bekommen.
aber erst mal zu den Dateien:
if ($handle = opendir($_SERVER['DOCUMENT_ROOT'] . '/bilder/')) {
while (false !== ($file= readdir($handle))) {
if (substr($file,0,1) == '.'){continue;}
if (/* Prüfen ob bild ist */) {
$bilder[] = $file;
}
}
closedir($handle);
}
Wie du das mit dem Bild am besten prüfst ist schwer zu sagen.
if (strtolower(substr($file,-3)) == 'jpg' OR
strtolower(substr($file,-3)) == 'png' OR
strtolower(substr($file,-3)) == 'gif')
Besser wäre noch "in_array" statt der großen if
Reicht dir das als Ideen Anregung?
Gruß Niklas
Eigentlich müssen ja nur Dateien gezählt werden. Im Verzeichnis sind ausschließlich Bilder. Alle sind JPGs und identisch in Größe
hi,
Eigentlich müssen ja nur Dateien gezählt werden. Im Verzeichnis sind ausschließlich Bilder. Alle sind JPGs und identisch in Größe
die größe hab ich mal ausgelassen, dafür gibts nette dateien die dir helfen würden, aber du bist dir ja sicher das es passt. Hoch und Querformat hast du hoffentlich beachtet.
Die Anzahl würde ich nicht nehmen, da z.b. bei Windows nutzern schnell mal die thumbs mit hochgeladen wird oder ein unterordner "ausversehen" drinne ist. Genauso eben eine readme.txt oder sonnstiges. Hier lieber auf nummer sicher gehen und irgendwie auf bild prüfen. Das tut dir nicht weh und schützt dich. Also nur ein guter Rat, darfst auch gerne einfahc nur zählen und dann . und .. abziehen.
Gruß Niklas
Hallo
Das Problem ist das sehr oft dort im Ordner Bilder hinzugefügt werden und entfernt von Laien. Deshalb würde ich eine automatische Zählung bevorzugen
Dann solltest du das Verzeichnis öffnen und die enthaltenen Grafikdateien zählen.
$handle = opendir('/pfad/zum/verzeichnis');
$c = 0;
while ($file = readdir($handle)) {
$graphic = getimagesize($file)
if ($graphic !== false) {
$c++;
}
}
closedir($handle);
getimagesize gibt dir Infos zu den Grafiken aus (Typ, Dimensionen, HTML-String für width und height und anderer Kram). Die kann man auch gleich benutzen, was ich hier weggelassen habe. Im Fehlerfall – hier also, wenn etwas anderes als ein Bild vorgefunden wird – wird false zurückgegeben und der Fund wird nicht mitgezählt.
$c
enthält nun die Anzahl der gefundenen Bilder. Ein wenig aufgeblähter, dafür aber mit allen notwendigen Infos, wäre ein Array, das alle Infos enthält. Das kann man innerhalb der while-Schleife z.B. folgendermazen befüllen. Vor die schleife gehärt dann noch $images = array();
zur Initialisierung der Variable.
$images[$c]['filename'] = $file;
$images[$c]['type'] = $graphic[2];
$images[$c]['html_string'] = $graphic[3];
$c
als Zähler stünde so ebenfalls zur Verfügung. Die Generierung der Ausgabe im Dokument, kannst du jetzt mit den Infos in $images
erledigen.
Tschö, Auge
Habe es mit Auges Code probiert
$handle = opendir('/pfad/zum/verzeichnis');
$c = 0;
while ($file = readdir($handle)) {
$graphic = getimagesize($file)
if ($graphic !== false) {
$c++;
}
}
closedir($handle);
Der hat nicht geklappt. Do´rt kommt vor dem if ($graphic !== false) {
ein Syntaxfehler. Auch wenn ich das ! entferne
$graphic = getimagesize($file)
Der hat nicht geklappt. Do´rt kommt vor dem if ($graphic !== false) {
ein Syntaxfehler. Auch wenn ich das ! entferne
Na dann mach dich mal schlau, was am Ende einer Befehlszeile kommen muss ;)
hi,
$graphic = getimagesize($file)
ich helfe mal mit dem stichwort ";"
Gruß Niklas
Ja soweit war ich auch schon
Damit kommt auch ein Syntaxfehler
hi,
dann poste den code, damit wir dir helfen können =)
Gruß Niklas