While binnen while

Status
Niet open voor verdere reacties.

JeroenE

Terugkerende gebruiker
Lid geworden
20 mrt 2005
Berichten
1.950
Hallo,

Kan het zijn dat een while-loop slechts 1 keer werkt binnen een andere while-loop?

PHP:
while ($alineone = mysql_fetch_object($aqueryone)) {
    while ($alinetwo = mysql_fetch_object($aquerytwo)) {
        ...
    }
}
 
Op zich mag je een While loop wel 1000 keer nesten. Als je dus problemen ervaart zal het een andere oorzaak hebben.
 
Maar waarom wil je dat? Je kan betere performance behalen door bijvoorbeeld je queries aan elkaar te knopen met een JOIN.
Dan kan je twee of meer tabellen ophalen met een enkele query. De enige voorwaarde is dat je een twee gelijke velden hebt, die vaak een ID-nummer zijn.
 
Inderdaad. Je kan beter de loop gebruiken om te query te bouwen dan om deze uit te voeren. Dat was de reden dat ik stelde dat je waarschijnlijk een ander probleem hebt.
 
Dag,

Gebruik gewoon JOIN in uw query

Code:
mysql_query("SELECT * FROM table1 JOIN table2 ON table1.id = table2.table1_id WHERE .....");
 
while ($alineone = mysql_fetch_object($aqueryone)||$alinetwo = mysql_fetch_object($aquerytwo)) {
werd verwijdert als incorrect van mij
PHP:
$i=0;

$exit = true;
while ($exit){
    $exit = true;
    if($alineone = mysql_fetch_object($aqueryone)){
        $exit = false;   
    }
    if($alinetwo = mysql_fetch_object($aquerytwo)){
        $exit = false; 
    }
    print "DEBUGCOUNT".$i++;
    if($i>1000){
        die("to mutch");
    }
}

denk ook aan ref:https://forums.digitalpoint.com/thr...ut-to-the-screen-during-a-while-loop.1223933/

PHP:
ob_start();
while ($status == 'single') {
  echo 'having fun ... ';
  ob_end_flush();
  flush();
  $status = go_date();
}
 
Laatst bewerkt:
De bedoeling is een menu te maken die eerst per regio alfabetisch staat, en dan per gemeente met de gemeente als link naar de organisatie in die gemeente.
Ik heb drie tabellen: regions, zipcodes en organizations.
Regions heeft enkel een ID.

PHP:
$aregionssql = "SELECT * from regions ORDER BY region";
$aregionsquer = mysql_query($aregionssql, $sdb) or die(mysql_error());

Zipcodes heeft een ID en een regions_id, dewelke overeenkomt met de ID van de tabel regions.

PHP:
$azipcodessql = "SELECT * from zipcodes ORDER BY location";
$azipcodesquer = mysql_query($azipcodessql, $sdb) or die(mysql_error());

Organizations heeft een ID en een zipcodes_id die dan overeenkomt met de ID van de tabel zipcodes.

PHP:
$aorgssql = "SELECT * from organizations ORDER BY id";
$aorgsquer = mysql_query($aorgssql,$sdb) or die(mysql_error());

Hier de geneste while loops zoals ze in mijn code staan:

PHP:
while ($aregionline = mysql_fetch_object($aregionsquer)) {
	$bo = 0;
	echo "<font color='#0000bb'><b>" . $aregionline->region . "</b></font><br />";
	while ($azipcodeline = mysql_fetch_object($azipcodesquer)) {
		if ($azipcodeline->region_id == $aregionline->id) {
			if ($azipcodeline->id%10 == 0) echo "<font color='#00bb00'><b>" . $atranslations[$azipcodeline->translation_id] . "</b></font><br />";
			//de vorige lijn werkt slechts & keer, en dat is de eerste keer dat de while loop door de regio's gaat
			while ($aorgline = mysql_fetch_object($aorgsquer)) {
				if ($aorgline->zipcode_id == $azipcodeline->id) {
// nog wat uit te voeren code
				}
		}
	}
}

Misschien niet onbelangrijk, maar deze code staat in een bestand dat aangeroepen wordt met ajax vanuit een javascript functie.
 
Heb je al gekeken naar Magneticweb zijn reactie, en geprobeer je querie hierin toe te passen.?
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan