1 van de 2 while loops werkt niet
Ik heb twee while loops waarvan alleen de tweede van a tot z loopt. De eerste begint wel maar eindigt bij het eerste record terwijl de tabel in de database vol staat met records.
$resultx = mysql_query("SELECT * FROM dbx");
$resulty = mysql_query("SELECT * FROM dby");
while ($row_x = mysql_fetch_array($resultx)) {
// hier doet ie iets
while ($row_y = mysql_fetch_array($resulty)) {
// hier doet ie iets anders
}
}
De loops zijn nagenoeg identiek maar toch functioneren ze anders. De tabel dbx bevat dus meerdere records maar de loop kijkt uitsluitend naar het eerste.
Iemand een idee hoe dit kan?
$resultx = mysql_query("SELECT * FROM dbx");
$resulty = mysql_query("SELECT * FROM dby");
while ($row_x = mysql_fetch_array($resultx)) {
// hier doet ie iets
while ($row_y = mysql_fetch_array($resulty)) {
// hier doet ie iets anders
}
}
De loops zijn nagenoeg identiek maar toch functioneren ze anders. De tabel dbx bevat dus meerdere records maar de loop kijkt uitsluitend naar het eerste.
Iemand een idee hoe dit kan?
Wellicht helpt het als je $resulty in de eerste while loop zet. Dus dat deze elke keer opnieuw uitgevoerd wordt.
Kijk daarna ook eens naar mysqli ipv mysql.
Kijk daarna ook eens naar mysqli ipv mysql.
Dank je!
Als ik mysqli hanteer doet het script helemaal niets meer. Ook geen foutmelding maar krijg geen data meer uit de tabellen...
Toevoeging op 09/08/2016 17:02:21:
Heb de eerste while vervangen door een foreach-loop op basis van een array. Als ik de loop laat uitvoeren zonder de twee loop (dus zonder while) dan loopt ie alle records uit dbx door. Zodra ik de while loop inzet (uit dby) dan wordt de foreach-loop direct gestopt na het eerste record. Dit gebeurde dus ook precies toen beide loops nog whiles waren op basis van dbx en dby.
Kortom: gebruik van foreach o.b.v. array ipv while statement o.b.v. database maakt geen donder uit. In beide gevallen stopt ie met elke loop als de while loop van dby gestart wordt.
Als ik de eerste loop helemaal achter wegen laat dan toont ie keurig alle records van dby
Als ik de tweede loop helemaal achter wegen laat dan toont ie keurig alle records van dbx
Snap er niets van!
Als ik mysqli hanteer doet het script helemaal niets meer. Ook geen foutmelding maar krijg geen data meer uit de tabellen...
Toevoeging op 09/08/2016 17:02:21:
Heb de eerste while vervangen door een foreach-loop op basis van een array. Als ik de loop laat uitvoeren zonder de twee loop (dus zonder while) dan loopt ie alle records uit dbx door. Zodra ik de while loop inzet (uit dby) dan wordt de foreach-loop direct gestopt na het eerste record. Dit gebeurde dus ook precies toen beide loops nog whiles waren op basis van dbx en dby.
Kortom: gebruik van foreach o.b.v. array ipv while statement o.b.v. database maakt geen donder uit. In beide gevallen stopt ie met elke loop als de while loop van dby gestart wordt.
Als ik de eerste loop helemaal achter wegen laat dan toont ie keurig alle records van dby
Als ik de tweede loop helemaal achter wegen laat dan toont ie keurig alle records van dbx
Snap er niets van!
Plaats "$resulty = mysql_query("SELECT * FROM dby");" eens tussen de twee while-loops.
De tweede while zal slechts 1 keer doorlopen worden en dat gebeurt tijdens de eerste while bij het eerste record.
Heb het nu omslachtig opgelost door alles in arrays te gooien en dan stuk voor stuk met for statements uit te lezen. Toen lukte het wel. Blijft vreemd dat dit niet met 2x while {} lukt ...
Toevoeging op 09/08/2016 17:51:00:
SanThe, hoe komt dat? Waarom kun je die tweede while niet een x-aantal keren uit laten voeren?
Toevoeging op 09/08/2016 17:51:00:
SanThe, hoe komt dat? Waarom kun je die tweede while niet een x-aantal keren uit laten voeren?
Hanno Weima op 09/08/2016 17:48:37:
SanThe, hoe komt dat? Waarom kun je die tweede while niet een x-aantal keren uit laten voeren?
Dan moet je het zo doen:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$resultx = mysql_query("SELECT * FROM dbx");
while ($row_x = mysql_fetch_array($resultx))
{ // hier doet ie iets
$resulty = mysql_query("SELECT * FROM dby");
while ($row_y = mysql_fetch_array($resulty))
{ // hier doet ie iets anders
}
}
?>
$resultx = mysql_query("SELECT * FROM dbx");
while ($row_x = mysql_fetch_array($resultx))
{ // hier doet ie iets
$resulty = mysql_query("SELECT * FROM dby");
while ($row_y = mysql_fetch_array($resulty))
{ // hier doet ie iets anders
}
}
?>
Als je niet elke keer 'andere' gegevens opvraagt maar elke keer dezelfde, is misschien http://php.net/manual/en/mysqli-result.data-seek.php nog een oplossing.




