[PHP] 'while' in a 'while'?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mr_wizard
  • Registratie: Februari 2003
  • Laatst online: 29-04 21:17
Ik heb me het afgelopen uur blind gestaart op het volgende. Uit 1 MySQL database trek ik 2 tabellen. Ik wil dat hij zovaak als er regels in de 1e tabel zijn de 2e tabel volledig doorloopt en eventueel verwerkt. Dit doe ik zo:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$member_info = mysql_query("select * from members", $db);
$account = mysql_query("select * from account", $db);

//foreach($members = mysql_fetch_array($member_info) AS $key=>$value){
while($members = mysql_fetch_array($member_info)){
//for ($i=0;$i<4;$i++){


$saldo = 0;
$no_entry = 0;
$member = $members["firstname"];
$member_username = $members["username"];

start_table_account($member);
        while ($entry = mysql_fetch_array($account)){
        echo $entry[1]."<br>";

        if (    $member_username == "1" && $entry[$username] == "2" && $entry["HO"] == "0"){
                $saldo = $saldo + $entry["amount"];
                echo $member_username;
                $no_entry = "1";

        }
        if (    $member_username == "2" && $entry[$username] == "1" && $entry["HO"] == "0"){
                $saldo = $saldo - $entry["amount"];
                echo $member_username;
                $no_entry = "1";
                
        }
        }
        if ($no_entry == "0"){
                content_table_account("0,00","","Geen posten","");
                $saldo = "0,00";
        }
}


Ik ben dus al connected aan de Dbase. ZOals je ziet heb ik foreach en for al commented want die helpen niets. Net als het gebruik van 'endwhile'.

Het probleem is dat hij het hele gehele netjes zovaak doorloopt als er regels in de table members staan. Alleen echo't hij maar 1x en dat is de eerste keer dat hij de 2e while doorloopt. Flush en unset($entry) werken ook niet.

Wie ziet het probleem of heeft een vervangend idee?!? _/-\o_

R&D professional


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19-09 21:24

.oisyn

Moderator Devschuur®

Demotivational Speaker

da's toch logisch? Als ie in de binnenste lus alle rijen uit $account heeft getrokken, dan is er niets meer over voor de volgende iteratie.

Dus dan moet je je query opnieuw uitvoeren, of nog beter gewoon de results eerst in een array stoppen en daarmee verder gaan.

Maar kun je het niet gewoon in 1 enkele SQL query verwerken?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Gooi je code weg, en schrijf het zooitje opnieuw. Maak dan beter gebruik van SQL, door bijvoorbeeld WHERE clauses te gebruiken.