das Problem ist das "SELECT *" ...
"SELECT *" ist meist ein Anzeichen von Faulheit oder undurchdachtem SQL-Query...
man sollte immer genau definieren, was man überhaupt zurück braucht... gerade wenn man 2 mal über die gleiche Tabelle JOINt, sonst bekommt man in der Ausgabe eben nur 1 Ausgabefeld "veranstaltungname" zurück...
hier ein Code, der funktionieren sollte:
PHP-Code:
<?php
if ($sql=mysql_connect("localhost","root",""))
{
if(mysql_select_db("tests_habo"))
{
$query = "
SELECT
p.veranstaltungdatum as datum,
v_alt.veranstaltungname as name_alt,
v_neu.veranstaltungname as name_neu
FROM Plan p
LEFT JOIN Veranstaltungen v_alt
ON p.planveranstaltungid=v_alt.id
LEFT JOIN Veranstaltungen v_neu
ON p.neuveranstaltungid=v_neu.id
ORDER BY datum ASC
";
if(!$result=mysql_query($query))
die("MySQL-Fehler: [".mysql_errno()."] ".mysql_error());
if(mysql_num_rows($result)>0)
{
echo "
<table>
<tr>
<th>
Datum
</th>
<th>
geplant
</th>
<th>
stattdessen
</th>
</tr>
";
while($line=mysql_fetch_object($result))
{
echo "
<tr>
<td>
".$line->datum."
</td>
<td>
".$line->name_alt."
</td>
<td>
".$line->name_neu."
</td>
</tr>
";
}
echo "
</table>
";
}
}
}
?>
hab deine Datenbank-Struktur auch noch minimal verändert:
Für das Feld "veranstaltungdatum" lohnt sich der Typ "datetime" - dann kann man auch gleich, wie in dem Beispielcode, zuverlässig nach diesem sortieren...
Ausgabe:
Code:
Datum geplant stattdessen
2009-12-21 17:00:00 turnen
2009-12-21 21:00:00 tanzen tischtennis
2009-12-23 18:00:00 schwimmen fußball
2009-12-27 12:00:00 tanzen
edit:
Die Darstellung des Datums lässt sich mit
DATE_FORMAT im SQL-Query beeinflussen