warum ergibt das ne endlosschleife?

Rios

Erfahrenes Mitglied
Also folgendes php script hab ich, soll ne ausgabe in flash sein, daher die form: varx=inhalt&vary=inhalt2&varz=inhalt3
jetzt wollt ich zum test einfach mal alle wörter, die in meinem badwordfilter sind ausgeben, das ergibt dann ne endlosschleife und ich check nicht warum.. die ausgabe sieht so aus:

varwort1=wort1&varwort2=wort2&varwort3=wort3&var=&var=&var=&var=&var .... und dann immer so weiter

findet jemand nen fehler??

PHP:
<?php
include "dbconnect.php";

$sql = "select * from boeseworte";
$result = mysql_query($sql);
$anzresult = mysql_num_rows($result);

for ($i=0; $i < $anzresult; $i++)
{
$rowresult = mysql_fetch_array($result);

if ($i==0)
	{$var.$i = $rowresult['wort'];
	echo "var";
	echo $i;
	echo "=";
	echo $var.$i;
	echo "&";
	}
	
		else if ($i == ($anzresult-1))
			{$var.$i = $rowresult['wort'];
			echo "var";
			echo $i;
			echo "=";
			echo $var.$i;
			}
			
				else
				{$var.$i=$rowresult['wort'];
 				echo "var";
				echo $i;
				echo "=";
				echo $var.$i;
				echo "&";
				}

				
}

?>
 
hmm naja schaut schonn lustig aus :-) aber hier mal nen paar tips

1. $rowresult = mysql_fetch_array($result, MYSQL_ASSOC);
damit du $rowresult[XY] beutzen kannst dan n würde ich das nicht mit echo machen sondern mit $variable .= "string" schaut find eich schöner aus warum das ne endlos schleiße ist weiß ich auch net kann aber eigentlich garnet sein :-(


MFG Badgott
 
ich würde mal behaupten, die endlosschleife kommt dadurch, dass du die zählervariable der schleife veränderst.
entweder du nimmst innerhalb der schleife nicht die variable $i - oder du benutzt einfach eine andere schleife. beispielsweise so:
Code:
while($rowresult = mysql_fetch_array($result)) { ... }
 
hmm ja die echo befehle hab ich mal mit absicht so blöd in jede zeile, weil ich da probleme mit der ausgabe hatte und shen wollte worans liegt.

Das problem mit der whileschleife ist, dass ich abfragen muss, ob er grad beim ersten oder letzten eintrag ist, da der echo dann ja anders sein muss.

@asphyxia was meinst du damit, dass ich die zählervariable verändere?
ich benutz sie doch nur bei der ausgabe
 
ich meinte z.b. diese zeile:
Code:
$var.$i = $rowresult['wort'];

um sicher zu gehen, solltest du das feld in der klasse nicht $i nennen. kann aber auch sein, dass ich falsch liege.
 
PHP:
$var.$i = $rowresult['wort'];
Wie bist du denn darauf gekommen? :eek: Nach der Zeile steht in $i der Inhalt von $rowresult['wort'] und $var verändert sich gar nicht... Ein Wunder dass der Interpreter da nicht meckert... Die Ausgabe ist dann natürlich korrekt, da ja $var (also nichts) und darauf $i (also $rowresult['wort']) ausgegeben wird. Dass eine Endlosschleife entsteht ist klar, da ja $i während der Schleife verändert wird...

Ich würd das ja so machen:
PHP:
<?php
include "dbconnect.php";

$sql = "select * from boeseworte";
$result = mysql_query($sql);

$i = 0;
while ($row = mysql_fetch_array($result)) {
	$i++;
	$badwords[] = "var".$i."=".$row['wort'];
}

echo join("&", $badwords);
?>

HTH
 
Original geschrieben von reima
PHP:
$var.$i = $rowresult['wort'];

Wie bist du denn darauf gekommen? :eek: Nach der Zeile steht in $i der Inhalt von $rowresult['wort'] und $var verändert sich gar nicht... Ein Wunder dass der Interpreter da nicht meckert... Die Ausgabe ist dann natürlich korrekt, da ja $var (also nichts) und darauf $i (also $rowresult['wort']) ausgegeben wird. Dass eine Endlosschleife entsteht ist klar, da ja $i während der Schleife verändert wird...

Ich würd das ja so machen:
PHP:
<?php
include "dbconnect.php";

$sql = "select * from boeseworte";
$result = mysql_query($sql);

$i = 0;
while ($row = mysql_fetch_array($result)) {
	$i++;
	$badwords[] = "var".$i."=".$row['wort'];
}

echo join("&", $badwords);
?>


HTH

genau so meinte ich das ja auch. ;)
 
Zurück