Daten aus zwei Tabellen (MySQL) ausgeben
Otto Marks
- php
Hallo,
ich habe ein Problem und zwar bekomme ich es nicht hin über den Schlüssel von Tablle content den titel von frame_links oder den titel von frame_rechts auszugeben.
Also ich habe folgendes:
xxcontent
-------------------------------------------------
titel | content | id_links | id_rechts
frame_links
----------------------------------
id_links | titel | content
frame_rechts
---------------------------------
id_rechts | titel | content
In meiner Ausgabe möchte ich dann alle titel bekommen aber ich bekomme nur die Ausagebe von content.titel
So sieht meine SQL Befehl aus:
SELECT * FROM xxcontent LEFT JOIN frame_links ON xxcontent.id_links = content_links.id_links
LEFT JOIN frame_rechts ON content.id_rechts = frame_rechts.id_rechts
was ist hier falsch?
oder wie mache ich eine ausgabe in php?
momentan mache ich die ausgabe so:
$row['titel'] gibt es hier auch die möglichkeit zusagen ich möchte nur frame_links.titel bloss wie sähe das dann aus?
Hi!
xxcontent
titel | content | id_links | id_rechts
frame_links
id_links | titel | content
frame_rechts
id_rechts | titel | content
SELECT
*
FROM
xxcontent
LEFT JOIN frame_links
ON xxcontent.id_links = content_links.id_links
LEFT JOIN frame_rechts
ON content.id_rechts = frame_rechts.id_rechts
was ist hier falsch?
content_links? Welche Tabelle soll das sein?
oder wie mache ich eine ausgabe in php?
momentan mache ich die ausgabe so:
$row['titel'] gibt es hier auch die möglichkeit zusagen ich möchte nur frame_links.titel bloss wie sähe das dann aus?
Wenn Du nur links willst, wieso dann dern Join auf 2 Tabellen?
Zum einen hast Du wie gesagt ein Problem mit der SQL-Abfrage, was Du auch hättest erfahren können wenn Du nach mysql_query() folgende Zeile eingefügt hättest:
echo mysql_error();
das hätte Dir was ausgegeben, der Art "Tabellenname nicht gefunden..."
(Bitte ausprobieren damit Du es fürs nächste mal behälst!)
Außerdem hast Du das Problem, dass beide Spalten gleich heißen, woher soll dann PHP/MySQL wissen welchen Titel Du jetzt haben willst?
Daher würde ich sowas vorschlagen:
SELECT
frame_rechts.titel as titel_rechts,
frame_links.titel as titel_links,
frame_rechts.content as content_rechts,
frame_links.content as content_links
FROM
...
das kannst Du dann im Script über $row['titel_rechts'] .. abfragen. Aber bedenke dass Du nur die Spalten "selektieren" solltest, die Du auch tatsächlich brauchst, und vor allem solltest Du nur auf die Tabellen joinen, die Du brauchst.
Und noch ein Hinweis, wenn Du nicht weißt was genau Dir MySQL zurückgibt, schreibe mal statt einfach blind zu probieren wie echo $row['titel']:
var_dump($row);
Da bekommst Du dann genaue Infos was genau Dir MySQL zurückgegeben hat, probiere das am besten auch mal aus!
Lese Dir auch sorgfältig http://de3.php.net/mysql durch, da lernst Du dann auch die ganzen Dir zur Verfügung stehenden Funktionen kennen, man musst nicht direkt alles anwendern oder 100%ig verstehen, es ist aber schon ein großer Vorteil wenn man weiß was es so alles gibt.
Grüße
Andreas
Hi!
SELECT
*
FROM
xxcontent
LEFT JOIN frame_links
ON xxcontent.id_links = content_links.id_links
LEFT JOIN frame_rechts
ON content.id_rechts = frame_rechts.id_rechts
und hier ist noch ein Fehler drin sehe ich gerade, welcher sagt Dir sicher "echo mysql_error();"
;-)
Grüße
Andreas
frame_rechts.titel as titel_rechts,
heisst das frame_rechts.titel unbenannt wird auf titel_rechts?
oder genauer gesagt ein alias vergeben wird?
weil as finde ich unter mysql nirgends...
Hallo!
frame_rechts.titel as titel_rechts,
heisst das frame_rechts.titel unbenannt wird auf titel_rechts?
oder genauer gesagt ein alias vergeben wird?
genau das.
weil as finde ich unter mysql nirgends...
Aber alias: http://www.mysql.com/doc/de/Problems_with_alias.html#IDX1728
Grüße
Andreas
Hi!
weil as finde ich unter mysql nirgends...
Aber alias: http://www.mysql.com/doc/de/Problems_with_alias.html#IDX1728
Und auch in der SELECT Referenz steht es in einem der ersten Sätze:
http://www.mysql.com/doc/de/SELECT.html#IDX1332
Grüße
Andreas