• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Foreach gibt gequirltes(.)

mmp5

Member
Vielleicht versteh ich es ja auch nicht ganz aber:
Mein Schönes Script, welches mir die anzahl der in der DB stehenden Werte gibt, gibt mir am ende keine Verständliche ausgabe:

Code:
$query = "SELECT * FROM projectausgabe ";
$result = mysql_query($query);
$datensatz = mysql_fetch_array($result)$anzahl	=	mysql_num_rows( $result );
   echo "Anzahl der Ergebnisse: " . $anzahl . "<br>";

//for Schleife welche alle Ausgibt
for ($i=1; $i <= $anzahl; $i++)
{
// Fuer jeden Datensatz	
	foreach( $datensatz as $index => $wert)
	{
	  echo ("Index" . $index . "Wert:  " . $wert . "<br>");
	}
}

Gibt mir folgendes, obwohl 3 Datensätze in der DB stehen:
Code:
Anzahl der Ergebnisse: 3
Index0Wert: 1
IndexIDWert: 1
Index1Wert: manni
IndexnameWert: manni
Index0Wert: 1
IndexIDWert: 1
Index1Wert: manni
IndexnameWert: manni
Index0Wert: 1
IndexIDWert: 1
Index1Wert: manni
IndexnameWert: manni

Ich Dachte der Pointer bewegt sich von alleine auf den nächsten Datensatzt, oder nicht?
 

panamajo

Guru
mmp5 schrieb:
Code:
$datensatz = mysql_fetch_array($result)$anzahl	=	mysql_num_rows( $result );
Vor $anzahl = solltest du das Statement mit ; abschließen.

mmp5 schrieb:
Ich Dachte der Pointer bewegt sich von alleine auf den nächsten Datensatzt, oder nicht?
Das tut er auch. Aber dank der for() Schleife drumherum wird das Ergebnis 3x wiederholt.
 
Die äußere For-Schleife bewirkt ja nur, dass der Rumpf 3 mal ausgeführt wird. Der Pointer wird aber nur automatisch weitergesetzt, wenn Du auch den nächsten Datensatz aus dem Result ausliest. Versuch es mal so:

Code:
$query = "SELECT * FROM projectausgabe ";
$result = mysql_query($query);
$anzahl   =   mysql_num_rows( $result );
   echo "Anzahl der Ergebnisse: " . $anzahl . "<br>";

//lese nächsten Datensatz solange vorhanden
while ( $datensatz = mysql_fetch_array($result) )
{
// Fuer jedes Feld im Datensatz   
   foreach( $datensatz as $index => $wert)
   {
     echo ("Index" . $index . "Wert:  " . $wert . "<br>");
   }
}

Viele Grüße
 
OP
M

mmp5

Member
Code:
$query = "SELECT * FROM projectausgabe ";
$result = mysql_query($query);
$anzahl   =   mysql_num_rows( $result );
   echo "Anzahl der Ergebnisse: " . $anzahl . "<br>";

//lese nächsten Datensatz solange vorhanden
while ( $datensatz = mysql_fetch_array($result) )
{
// Fuer jedes Feld im Datensatz   
   foreach( $datensatz as $index => $wert)
   {
     echo ("Index" . $index . "Wert:  " . $wert . "<br>");
   }
}

Wenn ich es, wie du gesagt hast mache gibt er mir alles Doppel und wieder gequirlt wie vorher aus:
Code:
Anzahl der Ergebnisse: 6
Index0Wert: 1
IndexIDWert: 1
Index1Wert: sally
IndexnameWert: sally
Index0Wert: 2
IndexIDWert: 2
Index1Wert: stefan
IndexnameWert: stefan
Index0Wert: 3
IndexIDWert: 3
Index1Wert: astrid
IndexnameWert: astrid
Ich Versteh das nicht???
 
Oben