1 van de 2 while loops werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hanno Weima

Hanno Weima

09/08/2016 15:14:20
Quote Anchor link
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?
 
PHP hulp

PHP hulp

19/04/2024 18:23:34
 
Ramon van Dongen

Ramon van Dongen

09/08/2016 15:17:29
Quote Anchor link
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.
 
Hanno Weima

Hanno Weima

09/08/2016 16:32:39
Quote Anchor link
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!
 
Pipo Clown

Pipo Clown

09/08/2016 17:36:11
Quote Anchor link
Plaats "$resulty = mysql_query("SELECT * FROM dby");" eens tussen de twee while-loops.
 
- SanThe -

- SanThe -

09/08/2016 17:39:57
Quote Anchor link
De tweede while zal slechts 1 keer doorlopen worden en dat gebeurt tijdens de eerste while bij het eerste record.
 
Hanno Weima

Hanno Weima

09/08/2016 17:48:37
Quote Anchor link
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?
 
- SanThe -

- SanThe -

09/08/2016 17:56:48
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
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
     }
}

?>
 
Ramon van Dongen

Ramon van Dongen

09/08/2016 18:02:59
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.