Fehler in der While-Schleife

XMagic

Grünschnabel
Hallo,
ich habe mein Seite nun endlich online gebracht, wo man sämtliche Artikel online stellen kann.
So weit so gut, nun können auch Bilder darin "eingebaut" werden, also hab ich es so gemacht, dass er die Bildgbreite ermittelt und wenn sie kleiner ist als die Tabellenbreite, dann wird die Bildursprungsbreite genommen, so können Verzerrungen in der Seite ausgeschlossen werden.

Dazu habe ich folgenden Code geschrieben:
Code:
       while($ntext[$i+4])
          {
          $nimg="".$ntext[$i]."".$ntext[$i+1]."".$ntext[$i+2]."".$ntext[$i+3]."".$ntext[$i+4]."";
	 if($nimg == '[IMG]')
      	 {
      	   $image="";
      	   $t=$i+5;
      	   while($ntext[$t] != "[")
      		 {
      		 $image="".$image."".$ntext[$t]."";
      		 $t++;
      		 }
      	   $size=getimagesize($image);
      	   $width=$size[0]; // < 530 pix
      	   if($width < 530)
      		 {
      		 $ntext[$i+1]="N";
      		 }
      	   }
       	 $i++;
          }

Nun besteht das Problem, dass es nur das erste Bild verkleinert.
 
Zuletzt bearbeitet:
Ich denke dass das der falsche Code-Abschnitt für dein Problem ist.
Wo werden denn die verschiedenen DAtensätze übergeben?

Außerdem erkläre mal deine komischen Variablen ($ntext, $nimg, $image, $t, $i)
 
Es ist definitiv der richtige Codeabschnitt, weil allein dieser dafür sorgt.
Zur Erklärung:

In $ntext wird der Text des Artikel gespeichert (ausgelesen aus der MySQL DB).
Der BBCode wird dann zu HTML umformatiert dh. [IMG] zu <img src=" etc.

Mit $nimg speicher ich einfach nur vier hinternanderfolgende Zeichen von $ntext und prüfe, ob sie gleich [IMG] sind.

$i ist die Zählervariable damit jedes einzellne Textzeichen bzw. jede vier Zeichen geprüft werden.

$t ist die Zählervariable um alles, was zwischen [IMG] und [/IMG] abzuspeichern dh. die eigentliche URL zum Bild.
 
Du sagst doch aber, dass er nur das erste Bild verkleinert - das würde ich als Anlass zur Vermutung nehmen, dass deine anderen Datensätze gar nicht in diese while-Schleife hineingeraten...

Gib mal in der While-Schleife ein Echo aus. Wenn du nur einmal eine Rückgabe kriegst, dann hast du definitiv ein Problem damit, dass deine Datensätze nicht in die Schleife gehen.
 
Ich habe es so versucht, wie du´s gesagt hattest und leider musste ich feststellen, dass er zwar alle Stellen durchläuft, aber er komisch unregelmäßig in die IF-Abfrage reingeht...

Habe jetzt den Fehler gefunden, wenn im Text eine 0 stand, dann hat er aufgehört.
Code:
 $stringsize=strlen($ntext);
 while($ntext[$i] < $stringsize)
 					{
 		    	    $nimg="".$ntext[$i]."".$ntext[$i+1]."".$ntext[$i+2]."".$ntext[$i+3]."".$ntext[$i+4]."";
 					if($nimg == '[IMG]')
 						{
 						$image="";
 						$t=$i+5;
 		    		    while($ntext[$t] != "[")
 		    		    	{
 		    		    	$image="".$image."".$ntext[$t]."";
 		    		    	$t++;
 		    		    	}
 		    		    $size=getimagesize($image);
 			 		    $width=$size[0];
 		    			if($width < 530)
 		    		    	{
 		    		    	$ntext[$i+1]="N";
 		    		    	}
 						}
 					$i++;
 					}
Hier erzeug ich mir aber eine Endlosschleife, warum?
 
Zuletzt bearbeitet:
Zurück