[PHP+MySQL] mysql_fetch_array in "for-schleife"...

name

Mitglied
Hej,
ich bin eigentlich anfänger in PHP, habe aber ein bisschen Erfahrung.
Ich habe ein Script programmiert (versucht zu mindest), dass acht html-tabellen-reihen (<tr>) erstellt, und in jeder zweiten html-tabellen-spalte (<td>) daten aus der MySQL Datenbank ausgiebt.

Hier der Code:

CODE
$sql = "SELECT * FROM laerer WHERE syg=1";
$res = mysql_query($sql,$db);

for($i=1; $i<=8; $i++) {
echo'
<tr>
<td valign="top"><div align="center">'.$i.'<br></div></td>
<td><div align="left">';
while($data2 = mysql_fetch_array($res)) {
$sql2 = "SELECT time".$i." AS 'time', time".$i."syg AS 'timesyg' FROM $ugedag WHERE laerer_id=".$data2['id'];
$res2 = mysql_query($sql2,$db);
while($data = mysql_fetch_array($res2)) { if($data['time']!="NULL" AND $data['timesyg']!="0") { echo $data['time']."<br>"; } else { echo "intet".$i."<br>"; }} }'</div>
</td>
</tr>';}



Dies ist natürlich nur ein Ausschnitt des Codes, aber ich werde versuchen diesen nun näher zu erläutern um es verständlicher zu machen.

Als erstes erstelle ich eine "for-schleife" (nennt die sich so?), dass eine variable definiert, eine bedingung enthält (die variable muss gleich oder unter 8 sein) und diese variable um eine zahl erhöht.
Diese schleife wiederholt also 8 mal alles was eigentlich in diesem Ausschnitt des Codes steht.

Als nächstes wird eine while-schleife erstellt, um der variable $data2 mehrere arrays zuzufügen und wird benutzt um einer nächsten variable anzugeben, wo sie ihre daten/arrays herholen soll.
Das nächste while erstellt dann eine neue variable ($data), die dann benutzt wird um bestimmte sachen der MySQL DB auszugeben.

NUN mein Problem:

Wenn ich diesen Code ausführe, erscheinen auch alle 8 html-tabllen-reihen (<tr>), aber nur die erste, 2. html-tabllen-spalte (<td> mit der while schleife für $data) wird mit daten befüllt.
Es ist als würde die variable nur für die erste FOR-schleife funktionieren und beim 2.,3.,X. durchlauf/mal nicht mehr.
Woran kann das liegen?
Die mysql_query stimmt...

Würde mich über Antworten sehr freuen
smile.gif

MfG
name
 
Aha, ich habs herausgefunden.... oh man....

Der oberste Code
CODE
$sql = "SELECT * FROM laerer WHERE syg=1";
$res = mysql_query($sql,$db);



Muss mit reingepackt werden in die FOR-Schleife, warum auch immer?
So dass der Code nun lautet:


CODE
for($i=1; $i<=8; $i++) {
echo'
<tr>
<td valign="top"><div align="center">'.$i.'<br></div></td>
<td><div align="left">';

$sql = "SELECT * FROM laerer WHERE syg=1";
$res = mysql_query($sql,$db);

while($data2 = mysql_fetch_array($res)) {
$sql2 = "SELECT time".$i." AS 'time', time".$i."syg AS 'timesyg' FROM $ugedag WHERE laerer_id=".$data2['id'];
$res2 = mysql_query($sql2,$db);
while($data = mysql_fetch_array($res2)) { if($data['time']!="NULL" AND $data['timesyg']!="0") { echo $data['time']."<br>"; } else { echo "intet".$i."<br>"; }} }'</div>
</td>
</tr>';}



Ich hab zwar keine Erklärung dafür, und habs auch nur durch Zufall herausgefunden, aber nun passt's
smile.gif


OK,
vielleicht hab ich ja irgendeinem geholfen der das selbe Problem hat/hatte, aber ich glaube eher es liegt an meinen Anfängerkenntnissen.

Ich würde mich deshalb freuen, falls jemand eine Erklärung für diese "Sache" hat
wink.gif


MfG
name
 
Zurück
Oben