for schleife funktioniert nicht richtig

xthetronx

Erfahrenes Mitglied
Hallo zusammen,

habe ein kleines Problem in sql, welches sich mir verschließt.

Zur Zeit dieser Code:
PHP:
$kundenprob = mysql_query("SELECT * FROM tabproblem WHERE KundenNr  '$KundenNr' AND FallBearbeitet = 0");
$anz = mysql_num_rows($kundenprob);
while ($zeile2 = mysql_fetch_row($kundenprob)){
//erster Teil klappt

//jetzt will ich die Aktionen auslesen, dies können n-aktionen sein

$sql       = "SELECT * FROM tabaktionaus WHERE Prod_ID = '$zeile2[0]'";
$aktionen  = mysql_query($sql);
$anz4      = mysql_num_rows($aktionen);
$zeile5    = mysql_fetch_row($aktionen);

for($i=0; $anz4 > $i; $i++){
$data = mysql_fetch_array($aktionen); 					
print($data[1]);
 }				
}

In $anz stehen jetzt z.B. 3 Datensätze drin, es werden in der for schleife aber nur 2 ausgegeben und zwar fehlt immer der erste Datensatz.

Kann mir vielleicht einer von euch erklären, was ich da falsch mache?

Gruß

Torsten
 
lösch mal diese Zeile
$zeile5 = mysql_fetch_row($aktionen);

dann müsste es funzen, das ist der erste Datensatz und der Befehl ist dort fehl am Platze.
Mit $data = mysql_fetch_array($aktionen); gehst dann über zum zweiten Datensatz, daher fehl der erste.
 
danke gissmo,

das kommt davon, wenn man zuviel herum probiert, bis man den Überblick verliert. :eek:
Ohne die Zeile klappt es prima!

Gruß

Torsten
 
Ich wollt grad schreiben "Generell würd' ich sowieso die while Schleife zum Auslesen benutzen", aber dann kam mir der Gedanke das die Variante mit dem for evtl. besser ist. Hinsichtlich der Performance o.ä. :)
 
Moin voodoo,

zuerst hatte ich das auch mit der while-schleife versucht, aber dass hatte nie funktioniert.
Allerdings hat es an mir gelegen. Habe es gerade mit einer while-schleife versucht und es klappt auch so.:p

Gruß

Torsten
 
Hab eigentlich gehofft, dass sich jetzt einer der PHP Experten meldet und mir sagt welche der beiden Schleifen die bessere ist. :)
 
Das würde doch glatt in philosophische Diskurse ausarten ... :rolleyes:

Ich persönlich wüsste jetzt nicht, wo der Performance Unterschied zwischen einer for und einer while Schleife liegen sollten, lasse mich allerdings

a) gerne bekehren und
b) würde ich subjektiv zur for Schleife als schnellere tendieren.

Warum ich zur for-Schleife als schnellere tendiere ?
Man gibt einen Startwert, einen Endwert und den Inkrementierungs-/Dekrementierungsschritt an. Damit ist die Sache klar und sie läuft.
Eine while Schleife hingegen kann/muss/soll/möchte viel mehr mit den Schleifen-internen Variablen hantieren und muss deshalb öfters gegenchecken ?

Ich weiss nicht, ich bin von meiner eigenen Argumentation weder überzeugt noch sonderlich angetan, also bitte, irgendwer möge erklären, ob und wenn ja wo der Performanceunterschied liegt.
 
Original geschrieben von _voodoo
Hab eigentlich gehofft, dass sich jetzt einer der PHP Experten meldet und mir sagt welche der beiden Schleifen die bessere ist. :)

Ich würd mal sagen, es kommt ganz drauf an, wie Du welche Schleife einsetzt. Zitat:

Bei den verschiedenen Schleifentypen fragt man sich doch, warum es die gibt bzw. wann man welche benutzten muss. Also, die Benutzung der richtigen Schleife hängt von der Anzahl der Schleifendurchläufe ab. Wenn man weiß wie oft eine Schleife durchläufen werden soll, nimmt man die for-Schleife. Denn da kann man angeben wie oft diese Durchlaufen soll, nämlich mit for($i=0; $i<ANZAHL; $i++). Die while-Schleife hingegen benutzt man wenn man nicht weiß wie oft die Schleife durchgelaufen wird. Dies ist z.B. beim Auslesen von Dateien und arbeiten mit MySQL der Fall, da man beim Programmieren nicht weiß wieviele Daten ausgelesen werden können.

Quelle: http://tut.php-q.net/schleifen.html
 
Zurück