Webdesign in Siegen

Bilder zählen und ausgeben mit Bedingungen

Fragen zum Thema PHP können hier gestellt werden

Moderator: Basti

Bilder zählen und ausgeben mit Bedingungen

Beitragvon susi1600 am 23.04.2008, 15:47

Hallo,

nach längerer Zeit mal wieder hier, hoffe ich auf die große Hilfe, die ich schon früher hier bekommen habe.
Offensichtlich stelle ich mich zu blöd an, denn so schwer ist mein Vorhaben eigentlich nicht.

Man stelle sich vor, ich habe einen bestimmten Artikel mit Beschreibung etc. und die Möglichkeit, bis zu 6 Bilder dazu anzuzeigen, es müssen aber nicht immer 6 sein. Manchmal sind es nur 2, manchmal nur 1 und manchmal gibts dazu noch keine Bilder.

Vorgehen also: Ordner mit Bildern wählen, Bilddateien, in diesem Fall .jpg-Dateien auszählen und Bedingungen schreiben.
Ist Anzahl gleich 0, dann ausgeben: Bilder folgen in Kürze;
Ist Anzahl gleich 1, dann nichts ausgeben;
Ist Anzahl größer 1, dann alle Bilder ausgeben

Hier man mein Code:

Code: Alles auswählen
      //Thumbs zählen
      $thumb_pfad = "bilder/verleih_andere/$bildname/thumbs";
      $thumb_verzeichnis = opendir($thumb_pfad);
      $anzahl = 0;
      
      while ($bilder = readdir($thumb_verzeichnis)) {
         if($bilder!="." && $bilder!=".." && is_file($thumb_pfad."/".$bilder)) {
            if(substr($bilder, -4) == ".jpg") {
            $anzahl++;
            }
         }
      }
      
      // Wenn noch keine Bilder, dann ausgeben
      if ($anzahl == 0) {
      echo "<b>Bilder folgen in K&uuml;rze</b>";
      }

      // Wenn nur 1 Thumb, dann nicht ausgeben
      if ($anzahl == 1) {
         echo "";
      }
      
      //Thumbs mehr als 1 Thumb, dann ausgeben
      if ($anzahl > 1) {      
         
         while ($bilder = readdir($thumb_verzeichnis)) {
               echo '<a href="accessoires-artikel.php?id='.$id.'&gb='.$bild.'"><img src="'.$thumb_pfad.'/'.$bild.'"></a>';   
         }
         
      }   


Es hakt bei dem letzten Punkt: Die Thumbs/Bilder werden nicht ausgegeben.
Was ist denn hier falsch? Oder wie kann ich das besser machen?

Bedanke mich schon mal im Voraus
susi1600
Mitglied
 
Beiträge: 23
Registriert: 06.10.2007, 19:10

Re: Bilder zählen und ausgeben mit Bedingungen

Beitragvon Basti am 23.04.2008, 16:14

Meine Frage vorweg wäre, woher die Variablen $id und $bild in der Schleife für die Thumbausgabe stammen. Fehlt da ein Teil deines Codes oder wie werden die Variablen belegt?

Zur Problemlösung ist das aber irrelevant. Der Fehler liegt nämlich darin, dass du den Verzeichnis-Handle $thumb_verzeichnis zweimal in einer Schleife durchgehen möchtest. Es ist nun aber so, dass die Zeigerposition bei jedem Durchlauf weiterrückt, sodass nach der ersten Schleife zur Feststellung der Bildanzahl der Zeiger bereits auf der "Endposition" steht.
Die zweite Schleife wird demnach gar nicht mehr ausgeführt.

Deshalb musst du vor Beginn der zweiten Schleife die Zeigerposition des Verzeichnis-Handles wieder zurücksetzen. Alles was du dazu benötigst ist folgende Funktion:

Code: Alles auswählen
... 1. Schleife ...

$thumb_verzeichnis = rewinddir($thumb_verzeichnis);

... 2. Schleife ...


Ich habe das ganze jetzt zwar noch nicht ausprobiert, aber eigentlich sollte es so funktionieren.
Benutzeravatar
Basti
Moderator
 
Beiträge: 1781
Registriert: 15.06.2006, 17:33
Wohnort: Rheinbreitbach

Re: Bilder zählen und ausgeben mit Bedingungen

Beitragvon susi1600 am 23.04.2008, 18:11

Hi Basti,

vielen Dank für die schnelle Antwort!
Leider funktioniert sie nicht so richtig, folgende Fehlerausgabe habe ich:

Warning: readdir(): supplied argument is not a valid Directory resource in verzeichnis\accessoires-artikel.php on line 93

Zeile 93 ist in diesem Fall der Anfang der zweiten Schleife:
Code: Alles auswählen
while ($bilder = readdir($thumb_verzeichnis))


Was deine Frage wg. der Variablen betrifft:
$id wird übergeben und $bild sollte eigentlich $bilder heißen, passend eben zur Schleife und zu den Bildern die als Thumbs ausgegeben werden. Habe dies in meinem Code schon berichtigt.
susi1600
Mitglied
 
Beiträge: 23
Registriert: 06.10.2007, 19:10

Re: Bilder zählen und ausgeben mit Bedingungen

Beitragvon susi1600 am 23.04.2008, 18:14

Habe jetzt vor der 2. Schleife die Variable "zurückgesetzt", heißt:

Schleife 1

$thumb_verzeichnis = opendir($thumb_pfad);

Schleife 2


So funktionierts - ist das jetzt auch richtig?
susi1600
Mitglied
 
Beiträge: 23
Registriert: 06.10.2007, 19:10

Re: Bilder zählen und ausgeben mit Bedingungen

Beitragvon Basti am 23.04.2008, 19:22

Ah, tut mir Leid, hatte die Funktion ein wenig falsch angewandt.

Also das ganze muss nicht wieder der Variable für den Verzeichnis-Handle zugewiesen werden sondern lediglich auf diese angewendet werden:

Code: Alles auswählen
... 1. Schleife ...

rewinddir($thumb_verzeichnis);

... 2. Schleife ...


Jetzt sollte es aber auch wirklich funktionieren ;)
Extra einen neuen Handle zu erzeugen wie du es jetzt gerade gemacht hast ist nämlich nicht so effektiv.
Benutzeravatar
Basti
Moderator
 
Beiträge: 1781
Registriert: 15.06.2006, 17:33
Wohnort: Rheinbreitbach


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast