Schleife in Schleife

low-group

Erfahrenes Mitglied
Hallo,

irgendwie stehe ich gerade auf dem Schlauch.
Ich habe eine DB-Abfrage und die Ausgabe als While-Schleife und dort drinne nochmal eine Abfrage mit Schleife.

Hier mal das Script:

PHP:
 $result= $db->query("SELECT themeid, theme FROM bb".$n."_cms_art_theme ORDER by sortorder ASC");
while($row=$db->fetch_array($result)){
$theme = $row['theme'];
$themeid = $row['themeid'];
$i=0;
$sta = $db->query("SELECT gr, posttime, COUNT(subject) AS grrecord FROM bb".$n."_cms_artikel WHERE themeid = ".$themeid." GROUP BY gr ORDER by grrecord DESC LIMIT 10");
while($row2=$db->fetch_array($sta))
{
$group = $row2['gr'];
$grouprec = $row2['grrecord'];
$i++;
eval ("\$abit .= \"".$tpl->get("aaaa-bit")."\";");
}
$themeid="";
$group="";
$grouprec="";
eval ("\$atheme .= \"".$tpl->get("aaaa-theme")."\";");
}


Bei der Ausgabe wird zuerst das Ergebniss vom ersten Durchlauf ausgegeben, danach aber leider das Ergebniss vom ersten und zweiten, obwohl da ja nur das von 2. Durchgang kommen sollte.
Wo liegt da mein Fehler?
 
Ich hab mal versucht die Abfrage zusammenzufassen und zu vereinfachen:
PHP:
<?php
	[…]
	$query = "
		SELECT
		        `a`.`gr`,
		        `a`.`posttime`,
		        COUNT(`a`.`subject`) AS `grrecord`,
		        `t`.`themeid`,
		        `t`.`theme`
		  FROM
		        `bb".$n."_cms_artikel` `a`,
		        `bb".$n."_cms_art_theme` `t`
		  WHERE
		        `a`.`themeid` = `t`.`themeid`
		  GROUP BY
		        `a`.`gr`
		  ORDER BY
		        `t`.`sortorder` ASC,
		        `grrecord` DESC
		  LIMIT
		        10
	";
	$result = $db->query($query);
	while( $row = $db->fetch_array($result) ) {
		$theme = $row['theme'];
		$themeid = $row['themeid'];
		$group = $row['gr'];
		$grouprec = $row['grrecord'];
		$abit .= $tpl->get("aaaa-bit");
		$atheme .= $tpl->get("aaaa-theme");
	}
	[…]
?>
 
naja so geht das nicht mit deinem Zusammenfassen @Gumbo , aber habe es mittlerweile gelöst.

In deinem Script geht er nur einmal in die DB und durchläuft die Schleife 10x.

Es sollte aber so sein, daß er in meinem Script oben die erste Abfrage macht und dort einen Wert rausholt und mit diesem Wert soll er in der Abfrage innerhalb der Schleife die anderen Werte rausholen. Wenn das ganze durch ist, geht er in die nächste Schleife der obersten Abfrage und holt den nächsten wert wo dann wiederum mit dem neuen Wert die innere Abfrage gemacht wird. u.s.w.
 
Zurück