Schleife in einer Schleife funktioniert nicht

Watusimann

Erfahrenes Mitglied
Guten Morgen,

Ich habe ein Array mit 4 Variablen, welche in der ersten implementiert werden. Nun soll aber einer 2. Schleife in der ersten ebenfalls pro Durchlauf 4x gestartet werden.
So wie ich dies gestalten wollte funktioniert das nicht. Beide Scripte laufen unabhängig von einander wunderbar, aber das zusammenfügen scheint irgendwie Probleme zu bereiten - ich bekomme auch keine Fehlermeldung. Hat jemand eine Idee woran das liegen könnte?
Vielen Dank im Voraus für die aufgebrachte Zeit

PHP:
for ($x=0; $x < count($filialen); $x++)
{
	$result	= mysql_query(" SELECT * FROM ". strtolower($filialen[$x]) ." 	WHERE status=1 ")or die(mysql_error());  
	while ($row = mysql_fetch_array($result))
	{
		$begin++;
		.
		.
		.
		.
		$suchteil = $row['tnr'];

		for ($y=0; $y < count($filialen); $y++)
		{
			$result = mysql_query(" SELECT * FROM 	_stamm_". strtolower($filialen[$y]) ." WHERE bestand > 0 ")or die(mysql_error());  
			while ($row = mysql_fetch_array($result))
                    {
						if (suchformat_tnr($row['tnr'])==suchformat_tnr($suchteil))
							{						 
								.
								.
								.
								.								
							}
					}
		}
	}
}
 
Ich hätte noch eine Alternative anzubieten, die ich gerade probiert habe, die allerdings auch nicht funktioniert :(
PHP:
for ($f=0; $f < count($filialen); $f++)
{
$result	= mysql_query(" SELECT 
								". strtolower($filialen[$f]) .".tnr, 
								". strtolower($filialen[$f]) .".menge, 
								". strtolower($filialen[$f]) .".filiale, 
								". strtolower($filialen[$f]) .".besteller,
								". strtolower($filialen[$f]) .".status,
								_stamm_weissensee.tnr,
								_stamm_weissensee.bezeichnung,
								_stamm_weissensee.sapick,
								_stamm_weissensee.bestand,
								_stamm_tempelhof.tnr,
								_stamm_tempelhof.bezeichnung,
								_stamm_tempelhof.sapick,
								_stamm_tempelhof.bestand,
								_stamm_huttenstrasse.tnr,
								_stamm_huttenstrasse.bezeichnung,
								_stamm_huttenstrasse.sapick,
								_stamm_huttenstrasse.bestand,
								_stamm_biesdorf.tnr,
								_stamm_biesdorf.bezeichnung,
								_stamm_biesdorf.sapick,
								_stamm_biesdorf.bestand,
						FROM
								`". strtolower($filialen[$f]) ."`, 
								`_stamm_weissensee`, 
								`_stamm_tempelhof`, 
								`_stamm_huttenstrasse`, 
								`_stamm_biesdorf` 
						WHERE
								". strtolower($filialen[$f]) .".tnr='_stamm_tempelhof.tnr' OR
								". strtolower($filialen[$f]) .".tnr='_stamm_huttenstrasse.tnr' OR
								". strtolower($filialen[$f]) .".tnr='_stamm_weissensee.tnr' OR
								". strtolower($filialen[$f]) .".tnr='_stamm_biesdorf.tnr'
								
					")or die(mysql_error());
while ($row = mysql_fetch_array($result))
	{
		echo $a++;
	}
}
//You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `weissensee`, `_stamm_weissensee`, `_stamm_tem' at line 23
Es ist aber alles richtig geschrieben und die Tabellen sind auch existent.
 
Du solltest das Datenbankschema ändern, so dass nicht jede Filiale eine eigene Tabelle bekommt. Denn dann ließe sich die Abfrage wesentlich vereinfachen.
 
Hallo Gumbo,

Leider habe ich diese Vorgabe, aber es wird wohl darauf hinauslaufen, jede Tabelle einzeln abzufragen. Wäre es denn möglich (wahrscheinlich ein ziemlich großer Aufwand), die abgerufenen Daten in eine Art Zwischenspeicher zu speichern, um die Datensätze dann zu ordnen?
 
Wenn es nicht so viele Daten sind vielleicht in einem Array. Soweit ich jedoch weiß hängt das von der Speicherbegrenzung(memory_limit) für ein Script in der php.ini ab.
 
Ich habe vorgegebene 8 Tabellen. in die ersten 4 Tabellen wird über ein Formular eine Bestellung aufgegeben - unter anderem mit einer Teilenummer. Diese TNR kann 7 oder 11 stellig sein. In den anderen 4 Tabellen steht der Teilestamm der einzelnen Filialen, d.h. ich gebe eine Bestellung auf, wo gleichzeitig die Teilestamm-tabellen durchleuchtet werden, ob diese TNR in einer der 4 Filialen ist.
 
Soderle ...

Ich hab mich nun für eine relativ unoriginelle Variante entschieden -> Ordnen kann ich es leider nicht, aber das ist ja auch schon mal was...
PHP:
function empfehlung_search($teilenummer)
{	
		if  (strlen($teilenummer)==11)
			{
				$result = mysql_query(" SELECT * FROM 	_stamm_marzahn WHERE (tnr='".$teilenummer."') AND (bestand > 0) ")or die(mysql_error());  
				while ($row = mysql_fetch_array($result))
						{
						
							 if(substr(strtoupper($row['sapick']), 0,1)=='O') { $color = "#fc9"; }
							 if(substr(strtoupper($row['sapick']), 0,1)=='L') { $color = "#ffc"; }
							 if(substr(strtoupper($row['sapick']), 0,1)=='A') { $color = "#cfc"; }
							 
							$auswahl .= "<tr >
    									<td colspan=\"1\" valign=\"top\">
										<img src=\"Search.gif\" alt=\"Find\" />
										</td>
										<td style=\"background-color:".$color."\" colspan=\"1\" valign=\"top\">
										".format_umlaut_out($row['bezeichnung'])."
										</td>
										<td style=\"background-color:".$color."\" colspan=\"1\" valign=\"top\">
										".format_umlaut_out($row['bestand'])."
										</td>
										<td style=\"background-color:".$color."\" colspan=\"1\" valign=\"top\">
										&nbsp;
										</td>
										<td style=\"background-color:".$color."\" colspan=\"1\" valign=\"top\">
										Marzahn
										</td>
										</td>
										<td style=\"background-color:".$color."\" colspan=\"1\" valign=\"top\">
										&nbsp;
										</td>
										<td style=\"background-color:".$color."\" colspan=\"1\" valign=\"top\">
										".format_umlaut_out($row['sapick'])."
										</td>
  									  </tr>";	
							$true = true;
						}
				$result = mysql_query(" SELECT * FROM 	_stamm_huttenstrasse WHERE (tnr='".$teilenummer."') AND (bestand > 0) ")or die(mysql_error());  
				while ($row = mysql_fetch_array($result))
						{
						
							 if(substr(strtoupper($row['sapick']), 0,1)=='O') { $color = "#fc9"; }
							 if(substr(strtoupper($row['sapick']), 0,1)=='L') { $color = "#ffc"; }
							 if(substr(strtoupper($row['sapick']), 0,1)=='A') { $color = "#cfc"; }
							 
							$auswahl .= "<tr >
    									<td colspan=\"1\" valign=\"top\">
										<img src=\"Search.gif\" alt=\"Find\" />
										</td>
										<td style=\"background-color:".$color."\" colspan=\"1\" valign=\"top\">
										".format_umlaut_out($row['bezeichnung'])."
										</td>
										<td style=\"background-color:".$color."\" colspan=\"1\" valign=\"top\">
										".format_umlaut_out($row['bestand'])."
										</td>
										<td style=\"background-color:".$color."\" colspan=\"1\" valign=\"top\">
										&nbsp;
										</td>
										<td style=\"background-color:".$color."\" colspan=\"1\" valign=\"top\">
										Huttenstraße
										</td>
										</td>
										<td style=\"background-color:".$color."\" colspan=\"1\" valign=\"top\">
										&nbsp;
										</td>
										<td style=\"background-color:".$color."\" colspan=\"1\" valign=\"top\">
										".format_umlaut_out($row['sapick'])."
										</td>
  									  </tr>";	
							$true = true;
						}
		if ($true!==true)
			{
			 return  "<tr ><td colspan=\"1\" valign=\"top\">&nbsp;</td><td colspan=\"3\" valign=\"top\">Kein Bestand in den Filialen</td></tr>";
			}
		else
			{
			return $auswahl;
			}
}

Vielleicht fällt jemand noch ein, wie man dies kürzer gestalten könnte, da diese Abruffunktion noch für zwei weitere Filialen habe. eine For Schleife will nicht so recht, warum auch immer.

Dank Euch trotzdem fürs Grübeln

Gruß der Dave
 
Zurück