SQL~ Kategorien/Beiträge sortiert ausgeben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SQL~ Kategorien/Beiträge sortiert ausgeben

    Hallöchen Community,

    ich befasse mich nun rund 1 Monat relativ intensiv mit PHP und SQL. Und habe mich, nachdem ich das ein oder andere Tutorial durchgenommen habe, dazu entschieden mein erstes eigenes, kleines Projekt zu verwirklichen. Alles funktioniert soweit... nur bei der Darstellung harperts noch.

    Was ist das für ein Projekt?

    Bei dem Projekt handelt es sich um ein Todolist Verwaltungsprogramm. Sprich: Man kann Kategorien und Todos Eintragen, editieren und löschen.. blablubb

    Problem?

    Ich möchte nun Kategorien und Beiträge aus der sql Datenbank auslesen. Das klappt auch wunderbar. Die Ausgabe sieht momentan so aus:

    Testkategorie
    Testeintrag | Dieser Testbeitrag wurde erfolgreich geändert! | 2007-06-09 00:18:13
    Testkategorie2
    ein weiterer Testbeitrag | Noch mehr Content und so | 2007-06-03 21:40:48
    Testkategorie
    blblblaaaabla | Ein weiterer Testeintrag. Ich bin gespannt, ob es funktioniert. | 2007-06-10 13:02:25
    Testkategorie
    Testeitrag 4 | Noch ein Testeitrag | 2007-06-10 13:03:02
    Ich möchte erreichen, dass es so ausgegeben wird:

    Testkategorie
    Testeintrag | Dieser Testeitrag wurde erfolgreich geändert! | 2007-06-09 00:18:13
    blblblaaaabla | Ein weiterer Testeintrag. Ich bin gespannt, ob es funktioniert. | 2007-06-10 13:02:25
    Testeitrag 4 | Noch ein Testeintrag | 2007-06-10 13:03:02

    Testkategorie2
    ein weiterer Testbeitrag | Noch mehr Content und so | 2007-06-03 21:40:48
    Also das die Kategorie gezeigt wird und darunter die Einträge und dann die nächste Kategorie wieder die entsprechend zugeordneten Einträge.

    Der Code dafür sieht wie folgt aus:

    PHP-Code:
    $sql "SELECT * FROM cats,todos WHERE CAT_ID=todo_CAT ";
    $result mysql_query($sql);

    while (
    $cat mysql_fetch_assoc($result)) {
            echo 
    $cat['CAT_name'] . "<br />\n";
            echo 
    $cat['todo_title'] . " | " $cat['todo_content'] . " | " $cat['todo_DATE'] . "<br />\n";
        } 

    Nur grübel ich schon ne ganze Weile hab jede Menge gesucht find aber keinen Lösungsansatz, zumal ich auch absolut keine Idee habe mit welche Technick man es lösen könnte. Also für jeglichen Denkanstoß wäre ich überaus dankbar !

    Btw: Bevor ihr mich auf Sinn und Unsinn dieses Projektes hinweist will ich erwähnen, dass es sich dabei nur um ein Lernprojekt für mich persönlich handelt.

    Beste Grüße
    -Dave

  • #2
    Wie wärs mit:
    PHP-Code:
    <?
    $sql = "SELECT * FROM cats,todos WHERE CAT_ID=todo_CAT ORDER BY [U][B]CAT_ID[/B][/U]";
    ?>
    Bzw. das selbe mal mit todo_CAT oder anderen Tabellenfeldern probieren, bis die gewünschte Sortierung erfolgt.

    Kommentar


    • #3
      WHERE CAT_ID=todo_CAT ORDER BY CAT_ID
      ist natürlich ziemlicher Unsinn, weil wenn ich nur Einträge EINER bestimmten Kategorie habe, brauche ich diese nicht mehr nach der Kategorie zu sortieren.

      Ansatz ist aber richtg. Sortiere nach der Kategorie, lass aber das WHERE weg.

      Und dann noch das Stichwort "Gruppenwechsel" für die Ausgabe. Danach kannst du suchen.
      EDIT:
      Sehe gerade, dass sich das WHERE auf Joins beziehen sollte. Am besten liest du den entsprechenden "Wichtig"-Thread hier im Forum dazu.

      Kommentar


      • #4
        Original geschrieben von TobiaZ
        ist natürlich ziemlicher Unsinn, weil wenn ich nur Einträge EINER bestimmten Kategorie habe, brauche ich diese nicht mehr nach der Kategorie zu sortieren.
        Ich meinte damit eher dass er ein ORDER BY verwenden soll. Das ORDER BY CAT_ID sollte nur als Beispiel dienen. Villeicht hätte ich das anders markieren sollen mh...

        Kommentar


        • #5
          cat_id ist eigentlich schon richtig, alternativ natürlich cat_name o.ä. (für ne alphabetische sortierung).

          Wie gesagt, hatte das WHERE zunächst so interpretiert, dass die Auswahl auf eine Kategorie beschränkt wird. Der "versuchte" JOIN war mir entgangen.

          Kommentar


          • #6
            Besten Dank an euch Beide !

            Habe es nun so gelöst(villeicht hilfts ja jemanden in ferner Zukunft ;D):
            PHP-Code:
            $sql "SELECT * FROM cats,todos WHERE CAT_ID=todo_CAT ORDER BY todo_CAT ";
            $result mysql_query($sql);

            $cat_old '';
            $cat_new '';
            while (
            $cat mysql_fetch_assoc($result)) {
                          
            $cat_new $cat['CAT_ID'];
                          if(
            $cat_old != $cat_new) {
                    echo 
            $cat['CAT_name'] . "<br />\n";
                    }
                    echo 
            $cat['todo_title'] . " | " $cat['todo_content'] . " | " $cat['todo_DATE'] . "<br />\n";
                    
            $cat_old $cat_new;
                } 
            Das Wort "Gruppenwechsel" wär mir zuvor einfach nicht geläufig, desrum Sorry für einen weiteren der schon existenten 291837 Threads zu disem Thema ;D.

            Kommentar

            Lädt...
            X