php gibt die mysql datensätze doppelt aus
Wichtig
- php
Ich habe folgende Tabellen mit folgenden Einträgen:
"profile":
user pwd id
heinz xxx 1
petra ddd 2
"bestellungen":
id wid uid cid did datum dropped
1 1 1 2 2 05.06.08 0
"dinge":
uid wishid wish
1 1 playstation
Ausgegeben wird:
playstation heinz petra petra 05.06.08 0
heinz petra petra 05.06.08 0
also wird ein 2. mal ausgegeben nur diesmal ohne das ding(wish).
Hier der Code:
<?php
$sql="
SELECT
bestellungen.wid,
bestellungen.uid,
bestellungen.cid,
bestellungen.did,
bestellungen.datum,
bestellungen.dropped,
bestellungen.visible,
user1.user AS userx1,
user2.user AS userx2,
user3.user AS userx3,
dinge.wish
FROM bestellungen
JOIN dinge ON wishid=wid
JOIN profile AS user1 ON user1.id=bestellungen.uid
JOIN profile AS user2 ON user2.id=bestellungen.cid
JOIN profile AS user3 ON user3.id=bestellungen.did
WHERE bestellungen.visible='1'
";
$s=mysql_query($sql) or die(mysql_error().'<br/><br/>'.$sql);
while($g=mysql_fetch_array($s)){
if($g['visible']==1){
echo "
<tr>
<td class='b1'>".htmlspecialchars($g['wish'])."</td>
<td class='b2'>".$g['userx1']."</td>
<td class='b3'>".$g['userx2']."</td>
<td class='b4'>".$g['userx3']."</td>
<td class='b5'>".htmlspecialchars($g['datum'])."</td>
<td class='b6'>".$g['dropped']."</td>
</tr>
";
}
}
?>
Woran kann das liegen das jeder eintrag doppelt und der 2. dann immer fehlerhaft ausgegeben wird?
LG,
Wichtig
SOrry oben ist ein Tippfehler!
Da fehlt noch: visible welches IMMER 1 ist
"bestellungen":
id wid uid cid did datum dropped visible(1)
Hi!
Den generierten Query hast Du aber nicht schonmal manuell abgesetzt? Mit an Sicherheit grenzender Wahrscheinlichkeit hast Du kein Problem mit PHP.
Hi!
Den generierten Query hast Du aber nicht schonmal manuell abgesetzt? Mit an Sicherheit grenzender Wahrscheinlichkeit hast Du kein Problem mit PHP.
Doch, passiert das gleiche und es wird kein Fehler angezeigt.
Moinsen!
Den generierten Query hast Du aber nicht schonmal manuell abgesetzt? Mit an Sicherheit grenzender Wahrscheinlichkeit hast Du kein Problem mit PHP.
Doch, passiert das gleiche und es wird kein Fehler angezeigt.
Dann sind wir uns also einig, dass Du kein PHP-Problem hast, wenn Deine DB Dir das Resultset so liefert. Vielmehr hast Du ein Joinproblem.
Also ich vermeide all das explizite gejoine gewoehnlich und fange immer ganz einfach an: select ... from ... where ... Immer in kleinen Schritten, bis ich merke, dass ich damit nicht weiterkomme. (Okay. Meist haue ich sofort nen komplettes Statement hin und wen es nicht auf Anhieb klappt, fang ich nochmal Schritt fuer Schritt an)
In Deinem Fall saehe das dann so aus:
SELECT
dinge.wish,
user1.user,
user2.user,
user3.user,
bestellungen.datum,
bestellungen.dropped
FROM dinge, bestellungen, profile as user1, profile as user2, profile as user3
WHERE dinge.wishid = bestellungen.wid AND user1.id = bestellungen.uid AND user2.id=bestellungen.cid AND bestellungen.did = user3.id AND bestellungen.visible = 1
Das klappt auch wunderbar. Wenn Du da jetzt mit expliziten Joins drangehst, nimm doch bitte auch die richtigen.