Einzelnen Beitrag anzeigen
Alt 20.12.09, 17:59   #7 (permalink)
beavisbee
Member of Honour
 
Benutzerbild von beavisbee
 
Registriert seit: 22.02.07
beavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium III
beavisbee eine Nachricht über ICQ schicken
Likes: 75
Standard

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
beavisbee ist offline   Mit Zitat antworten
 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61