phpbar.de logo

Mailinglisten-Archive

[php] schleifen mit querys

[php] schleifen mit querys

php_(at)_phpcenter.de php_(at)_phpcenter.de
Thu, 8 Nov 2001 21:56:26 +0100 (MET)


Gute Abend Liste,

unten stehendes Script läuft bei mir und liefert auch die gewünschten
Ergebnisse. Aber die Laufzeit ist, wohl bedingt durch die vielen geschachtelten
Querys, einfach miserabel. Wie könnte ich das besser gestalten?

Ziel des ganzen ist eine Art virtuelles Kochbuch mit "Kühlschrank und
Einkaufshilfe". Das Script hier soll eigentlich nichts anderes machen als sehen was
vorhanden ist und diese Liste sinnvoll (um eine Zutat pro Rezept) erweitern,
um mal etwas Abwechslung auf den Tisch zu bringen ohne gleich Massig neues
Zeugs kaufen zu müssen.

Ich hoffe das man sich darunter ein bisschen was vorstellen kann und 
bedanke mich jetzt schon recht herzlich für eure Hilfe

Andreas

<?php
$Rezepte = mysql_query("select DISTINCT zutaten_einfach.RezeptNr from
fav_zutaten,zutaten_einfach where
fav_zutaten.ZutatenNr=zutaten_einfach.ZutatenNr");

$Anzahlrezepte = mysql_num_rows($Rezepte);
	while($i<$Anzahlrezepte)
	{
		$FZutat[]=0;
		$i1 = 0;
		$Istwert = 0;
		$Rezept = mysql_fetch_array($Rezepte);
		$RezeptNr = $Rezept["RezeptNr"];
		
		$Zutaten = mysql_query("select ZutatenNr from zutaten_einfach where
zutaten_einfach.RezeptNr='$RezeptNr'");
		$Sollwert = _(at)_mysql_numrows($Zutaten);

		while($i1<$Sollwert)
		{
			$ZutatenNr1 = mysql_fetch_array($Zutaten);
			$ZutatenNr = $ZutatenNr1["ZutatenNr"];
			
			$Abgleich = mysql_query("SELECT ZutatenNr FROM fav_zutaten where
fav_zutaten.ZutatenNr ='$ZutatenNr'");
			$vorhanden = _(at)_mysql_numrows($Abgleich);

			if ($vorhanden!=0)
			{
				$Istwert++;
			}
			/* Bestaetigung, wenn alles uebereinstimmen sollte */

			if ($Istwert+1==$Sollwert)
			{
				$Fehlende = mysql_query("select zutaten_einfach.ZutatenNr from
zutaten_einfach,fav_zutaten where zutaten_einfach.RezeptNr='$RezeptNr' and 
zutaten_einfach.ZutatenNr!=fav_zutaten.ZutatenNr");
				$FehlendeZutat1 = mysql_fetch_array($Fehlende);
				$FehlendeZutat2 = $FehlendeZutat1["ZutatenNr"];
				$FZutat[]=$FehlendeZutat2;
			}
			$i1++;
		}
		$i++;
	}

_(at)_asort($FZutat);
_(at)_reset($FZutat);
$FZutat1= _(at)_array_unique($FZutat);
$FZutat2 = count($FZutat1);

while (($i9+1)<$FZutat2)
{
	$result = next($FZutat1);$i9++;
	$result2 = mysql_query("select * from zutaten LEFT JOIN fav_zutaten ON
zutaten.ID=fav_zutaten.ZutatenNr where '$result'=zutaten.ID and
fav_zutaten.ZutatenNr is NULL order by Title");
	$Ausgabe = mysql_fetch_array($result2);
	$vorhandenz = _(at)_mysql_numrows($result2);
	$Ausgabe1 = $Ausgabe["ID"];
	$Ausgabe2 = $Ausgabe["Title"];
	if ($vorhandenz!=0)
	{
		echo "<td><input type=\"checkbox\"
name=\"ZutatenNr[]\"value=\"$Ausgabe1\">$Ausgabe2</td>\n";$td++;$break++;
		if ($break ==10 )
		{
			break;
		}
		while ($td == 3)
		{
			echo "</tr><tr>\n";$td =0;
		}
	}
}
?>

-- 
GMX - Die Kommunikationsplattform im Internet.
http://www.gmx.net



php::bar PHP Wiki   -   Listenarchive