Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Datum nach Jahr,Monat und Tag sortieren

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Datum nach Jahr,Monat und Tag sortieren

    Hallo,

    ich habe folgendes Problem und finde irgendwie keine Lösung!

    Ich habe in meiner SQL-Datenbank meine News gespeichert und möchte nun ein News Archiv erstellen in dem die News als erstes in Jahren unterteilt werden sollen, diese sollten dann über ein Pulldownmenü aus gewählt werden, so das immer nur die News eines Jahres auf einer Seite stehen.
    Auf den einzlenen Jahresseiten sollen die News weiter in Monaten unterteilt werden und dort wieder rum nach Tag/Uhrzeit sortiert werden.

    Hat jemand eine Idee wie ich das hintereinander bekommen kann.

    Mir fehlt irgendwie jeder Ansatz!


    P.S. Ich hoffe das diese Frage hierher gehört und nicht in den SQL Bereich, ansonsten Bitte einfach verschieben

    Danke



    Gruß


    Arguss

  • #2
    Im welchem Format hast du das Datum in deiner SQL-Datenbank gespeichert?

    Kommentar


    • #3
      Ich habe das Datum im format datetime gespeichert!

      Ich habe die mysql Funktion "EXTRACT()" gefunden, aber leider verstehe ich nicht ganz wie diese Funktion in die SQL abfrage eingebunden wird.

      Kannst du mir da weiterhelfen?


      Gruß


      Arguss

      Kommentar


      • #4
        Hallo, eigentlich ist das doch ganz einfach:

        Code:
        SELECT *, MONTH(datetime) AS m, DAY(datetime) AS d FROM table WHERE YEAR(datetime) = 2008
        PHP-Code:
        <?php
        // ..
        $arrResult = array();
        while (
        $objRow mysql_fetch_object($resResult)) {
          
        $intMonth $objResult->m;
          
        $intDay $objResult->d;
          if (!
        array_key_exists($intMonth$arrResult)) {
            
        $arrResult[$intMonth] = array(); // element fuer monatliche Zurordnung anlegen
          
        }
          if (!
        array_key_exists($intDay$arrResult[$intMonth])) { 
            
        $arrResult[$intMonth][$intDay] = array(); // Zuordnung des Tages in der monatlichen Zuordnung
          
        }
          
        $arrResult[$intMonth][$intDay][] = $objRow;
        }
        echo 
        "2008:<hr />";
        ksort($arrResult);
        foreach (
        $arrResult as $intMonth => $arrDays) {
          echo 
        "Monat $intMonth:<hr />";
          
        ksort($arrDays);
          foreach (
        $arrDays as $intDay => $objResult) {
            echo 
        "Tag $intDay:<hr />";
            echo 
        $objResult->Title"<br />";
          }
        }
        ?>
        (ungetestet)

        Versuch bitte, wenn ich dir schon soviel vorgekaut habe, den Code zu verstehen: Du hast einen mehrdimensionalen Array angelegt, dessen erste Dimension als Schluessel die Monate hat und dessen zweite Dimension als Schluessel die Tage und als Werte die Datenbank-Objekte hat.
        Wenn du eine Funktion nicht kennst, schlag sie bitte zunaechst im Handbuch nach.
        "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

        Kommentar


        • #5
          Hallo,


          erst mal Danke für eure Hilfe, ihr habt mir ein gutes Stück weiter geholfen!

          Der SQL Befehl fehlte mir, da ich noch blutiger Anfänger bin hatte ich erst ein paar Probleme damit, aber jetzt klappt es wunderbar.

          Das mit dem mehrdimensionalen Array werde ich mir auch noch zugemüte führen.

          Gruß

          Arguss

          Kommentar


          • #6
            auch sehr nützliche (my)SQL-Funktion: DATE_FORMAT()

            Kommentar


            • #7
              Hallo,

              könnt ihr mir noch einmal unter die Arme greifen, irgendwie ist hier noch der Wurm drin und anscheinend sehe ich den Wald vor lauter Bäumen nicht.

              Ich möchte eigentlich nur das ein Datum nicht zwei mal ausgegeben wird, leider scheint es nur hin und wieder zu funktionieren.
              Ich habe keine Ahnung warum der 13.Juni korrekt ausgegeben wird und der 7.Juni nicht!

              Das ganze hier befindet sich in einer foreach Schleife


              if (prev($temp_datum) == $datum)
              {$datum = "";}
              else {
              $datum = $datum. '&nbsp;' . $year;
              }

              $datum entspricht dem Datum jeweils hinter dem array

              Array ( [0] => 17.Juli [1] => 18.Juni ) 18.Juni
              Array ( [0] => 17.Juli [1] => 18.Juni [2] => 13.Juni ) 13.Juni
              Array ( [0] => 17.Juli [1] => 18.Juni [2] => 13.Juni [3] => 13.Juni ) 13.Juni
              Array ( [0] => 17.Juli [1] => 18.Juni [2] => 13.Juni [3] => 13.Juni [4] => 7.Juni ) 7.Juni
              Array ( [0] => 17.Juli [1] => 18.Juni [2] => 13.Juni [3] => 13.Juni [4] => 7.Juni [5] => 7.Juni ) 7.Juni
              Array ( [0] => 17.Juli [1] => 18.Juni [2] => 13.Juni [3] => 13.Juni [4] => 7.Juni [5] => 7.Juni [6] => 2.Juni ) 2.Juni

              AUSGABE:

              18.Juni 2008
              08:45:00 der Laufkalender

              13.Juni 2008
              11:59:00 und wie weit ??
              08:58:00 leider keine Zeit .....

              7.Juni 2008
              13:19:00 am Freitag den 13. ab nach Heckershausen

              7.Juni 2008
              13:00:00 Oelder Citylauf ist sehr zu empfehlen

              2.Juni 2008
              15:40:00 22. Bentfelder Abendlauf am 30.05.2008


              Ich hoffe man kann einigermaßen verstehen was ich möchte!
              Eventuell könnt ihr mir auch einen Tip geben warum der 7.Juni zwei mal ausgegeben wird.


              Gruß


              Arguss

              Kommentar

              Lädt...
              X