PHP/MYSQL Join auf 3 Tabellen
Ralf
- datenbank
0 Vinzenz Mai0 dedlfix- php
0 Ralf0 Ralf
Hallöchen,
ich beiße mir an einem join über 3 tabellen die Zähne aus. Vielleicht kann mir wer sagen was falsch läuft...
Tabellen:
phpbb3_users -> username / user_id
maptool_games -> game_id / game_name
maptool_image -> id / game / name / url / creator / created / deleted
alle id's sowie maptool_image.game sind int(8)
ich habe 4 games drin, mein test war auf herr der ringe mit game_id 9 und wenn ich entsprechend die hochgeladenen karten (jpg) mir ansehe dann steht in der maptool_image.game der drei test karten ebenfalls 9
zur ausgabe habe ich folgenden code
$sql = "SELECT maptool_image.game,maptool_image.name,maptool_image.url,maptool_image.creator,maptool_image.created,maptool_image.deleted,maptool_games.game_id,maptool_games.game_name ".
"FROM maptool_image LEFT JOIN maptool_games ".
"ON maptool_image.game = maptool_games.game_id ".
"WHERE maptool_image.deleted=0 ".
"ORDER BY maptool_games.game_name,maptool_image.name ASC";
$anzeigen = mysql_query($sql);
$ausgabe .= '<table width="600"><tr width="100%"><th>Spiel</th><th>Aktive Karte von (Region)</th><th>Speicherort</th><th>Erstellt von</th><th>am</th><th>inaktiv</th><th></th><th></th></tr>';
while($row = mysql_fetch_array($anzeigen))
{
$ausgabe .='<tr>';
$ausgabe .='<td>'.$row['maptool_games.game_name'].'</td>';
$ausgabe .='<td>'.$row['maptool_image.name'].'</td>';
$ausgabe .='<td><a href="'.$row['maptool_image.url'].'">'.$row['maptool_image.url'].'</a></td>';
/*
$u_id = $row['maptool_image.creator'];
$anzeigen2 = mysql_query("SELECT username FROM phpbb3_users WHERE user_id = $u_id");
$row2 = mysql_fetch_array($anzeigen2);
*/
$ausgabe .='<td>'.$row['maptool_image.creator'].'</td>';
$ausgabe .='<td>'.date("d.m.Y-H:i:s",$row['maptool_image.created']).'</td>';
if ($row['deleted'] == 1)
{
$ausgabe .='<td align="center"><input type="checkbox" checked="checked"></td>';
}
ELSE
{
$ausgabe .='<td align="center"><input type="checkbox"></td>';
}
$ausgabe .= '<td>';
$ausgabe .='</td><td></td></tr>';
}
ich habe schon alles mögliche probiert, dass ist die letzte version, da ich über 3 tables nicht geschafft habe wollte ich erstmal 2 hinbekommen, selbst das will nicht...
ich erhalte nur 3 leere Datensätze
siehe auch:
Ich kann mir das nicht erklären, vielleicht kann mich wer von Euch darauf schubsen? Danke!
Hallo,
phpbb3_users -> username / user_id
maptool_games -> game_id / game_name
maptool_image -> id / game / name / url / creator / created / deleted
ein paar Beispieldatensätze wären auch ganz nett.
alle id's sowie maptool_image.game sind int(8)
ich habe schon alles mögliche probiert, dass ist die letzte version, da ich über 3 tables nicht geschafft habe wollte ich erstmal 2 hinbekommen, selbst das will nicht...
ich erhalte nur 3 leere Datensätze
Ich kann mir das nicht erklären, vielleicht kann mich wer von Euch darauf schubsen? Danke!
PHP ist uninteressant, wenn es sich um ein SQL-Problem handelt, siehe auch Zitat 1353.
Wie lauten die generierte SQL-Anweisung?
Was erhältst Du als Ergebnis, wenn Du diese Anweisung mit phpMyAdmin oder einem anderen MySQL-Client ausführen lässt?
Freundliche Grüße
Vinzenz
echo $begrüßung;
ich erhalte nur 3 leere Datensätze
Ich kann mir das nicht erklären, vielleicht kann mich wer von Euch darauf schubsen? Danke!
Neben der von Vinzenz schon vorgeschlagenen Methode, das Statement beispielsweise in phpMyAdmin zu testen, kann ich auch nur allgemeine Ratschlage geben: Stell das error_reporting auf E_ALL (und display_errors auf on), damit dir auch Zugriffe auf nicht vorhandene Variablen/Array-Elemente als Meldung angezeigt werden. Verwende var_dump() um Kontrollausgaben zu erzeugen. var_dump() erzeigt in jedem Fall eine Ausgabe. Wenn du einen Leerstring erhältst, dann war der sicher so in der Datenbank. Bekommst du stattdessen NULL angezeigt, hat dir das E_ALL des error_reportings vermutlich auch den Grund genannt.
echo "$verabschiedung $name";
Ok ich habs gefunden ^^
-> habe den Spalten nen Alias gegeben und schwupps kriege ich mit fetch_array eine Ausgabe, hätte ich das mal eher gewußt, dass das ein Problem ist ^^
Nur der Vollständigkeit halber:
$sql = "SELECT phpbb3_users.username AS username, maptool_image.name AS mi_name, maptool_image.url AS mi_url, maptool_image.creator AS mi_creator, maptool_image.created AS mi_created, maptool_image.deleted AS mi_deleted, maptool_games.game_id AS mg_game, maptool_games.game_name AS mg_name ".
"FROM maptool_image LEFT JOIN maptool_games ".
"ON maptool_image.game = maptool_games.game_id ".
"LEFT JOIN phpbb3_users ".
"ON phpbb3_users.user_id = maptool_image.creator ".
"WHERE maptool_image.deleted=1 ".
"ORDER BY maptool_games.game_name,maptool_image.name ASC";