Fehler im Syntax - nur wo!?

Hallo,

es klappt alles wunderbar, doch gibt er nicht alle gespeicherten Werte wieder aus,sondern nur den zuletzt gespeicherten bzw, die zuletzt gespeicherten. Woran kann das liegen!? Hier meien Abfrage:

PHP:
$sid=session_id();
$sql="SELECT artnr, anz FROM Warenkorb WHERE sid='$sid'";
$result=mysql_query($sql) or die(mysql_error());

echo "<table width=\"100%\" border=\"0\">";
echo "      <tr>";
echo "        <td width=\"7%\">Menge</td>";
echo "        <td width=\"13%\">Artikelnummer</td>";
echo "        <td width=\"57%\">Artikelbezeichnung</td>";
echo "        <td width=\"11%\">Preis einzeln </td>";
echo "        <td width=\"12%\">Preis Gesamt </td>";
echo "      </tr>";

   		while($row = mysql_fetch_assoc($result)) {
		
    echo "<tr>";
    echo "  <td width=\"7%\">".$row['anz']."</td>";
    echo "  <td width=\"13%\">".$row['artnr']."</td>";
	$sql="SELECT beschreibung,preis FROM Produkte WHERE artnr=".$row['artnr']."";
	$result=mysql_query($sql) or die(mysql_error());
	$daten=mysql_fetch_assoc($result);
    echo "  <td width=\"57%\">".$daten['beschreibung']."</td>";
    echo "  <td width=\"11%\">".$daten['preis']."</td>";
	$preis_all=$daten['preis'] * $row['anz'];
	echo "  <td width=\"12%\">".$preis_all."</td>";
    echo " </tr>";
	
        }

Woran liegt das nur!?
 
Dein Fehler scheint zu sein, dass Du $result in der Schleife überschreibst.

Du kannst es jedoch auch eleganter in einem einzigen Query lösen:
Code:
SELECT 
  Warenkorb.artnr, 
  Warenkorb.anz,
  Produkte.beschreibung,
  Produkte.preis,
  Warenkorb.anz * Produkte.preis AS GesamtPreis
FROM Warenkorb 
LEFT JOIN Produkte
  ON Warenkorb.artnr=Produkte.artnr
WHERE Warenkorb.sid='$sid'
Viele einzeln ausgeführte Abfragen in einer Schleife benötigen in der Regel deutlich mehr Zeit, als eine einzige Abfrage mit entsprechendem JOIN.

Gruß hpvw
 
Zurück