nach jahr sortieren...

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

  • nach jahr sortieren...

    howdie!

    bin neu hier (und recht frisch in php), habe gesucht und nicht gefunden. vielleicht kann mir ja jemand helfen, würde mich freuen.

    ich habe für eine bandhomepage eine termin-datenbank angelegt. beim auslesen werden die daten (welche als timestamp in der datenbank gespeichert sind) sortiert...:

    PHP-Code:
          // DATES vergangene daten anzeigen
          
    $date_now time()-86400;

          
    // DATES einträge einlesen
          
    $query "SELECT * FROM "$dbtabl_dates." WHERE date < "$date_now." ORDER BY date DESC";
          
    $result mysql_query($query$link); 
    mein problem ist nun folgendes:

    termine des jahrgangs 1999 sollen NACH 2000 ausgegeben werden, quasi umgekehrt chronologisch geordnet:
    2004->2003->2002->2001->2000->1999->1998->1997

    tatsächlich aber kommt bei mir folgende sortierung:
    1999->1998->1997->2004->2003->2002->2001->2000

    zum besseren verständnis, ich hab's manchmal nicht so mit dem erklären
    http://tourettes.fucked.by.nofuncrew...uck=dates_past


    hat da jemand ne ahnung? danke schonmal für die mühe, michi

  • #2
    ist der aktuelle timestamp nicht 10-stellig? war er bei deinem komischen sprung nicht mal 9-stellig gewesen?

    hast du das als VARCHAR() in der DB angelegt? dann wird es auch als string behandelt.

    probier/nimm doch mal DATETIME/DATE oder TIMESTAMP (<- vorsicht) für die termine. dann klappt es auch. ;-)
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      argh!

      jetzt hab ich in der datenbank mal auf DATETIME umgestellt, und plötzlich sind alles daten futsch und stehen auf null... hmpf. what did i wrong?

      "beweis":

      http://tourettes.fucked.by.nofuncrew...uck=dates_past

      Kommentar


      • #4
        der unix-timestamp und DATETIME sind nicht kompatibel..

        lösung:

        angenommen, deine jetzige spalte mit dem unix-timestamp heisst utime .

        dann mache eine neue spalte dtime vom typ DATETIME.

        anschliessend lässt du diese query über deine tabelle (nennen wir sie mal tab) laufen.

        Code:
        UPDATE tab SET dtime = FROM_UNIXTIME(utime)
        damit solltest du nun korrekte werte in dtime haben.

        anschliessend kannst du utime entfernen und neue daten nur noch in dtime eintragen.

        tipp: auch mal bei mysql.com die oben verwendeten funktionen ansehen.


        BTW
        *VERSCHIEB* nach sql. (hatte es eben vergessen. )
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          danke! werd ich gleich mal versuchen. php und mysql sind am anfang ja so erdrückend...

          Kommentar


          • #6
            jo. mach mal. ich klinke mich aber an dieser stelle aus ... wird ja bald wieder hell ...
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              ich habs so irgendwie nicht hingekommen. das mit den ganzem zeitgedöns ist mir echt mal noch zu undurchschaubar . also ich konnte das ganze ohne probleme in die andere tabelle umformatieren, aber mit der ausgabe war das irgendwie so'n ding.... hatte das problem (wie so einige andere auch), dass ich das engliche zeitformat nicht umformatiert bekommen habe. zwar sagen alle könner, dass das total einfach und logisch wäre, aber ich packs einfach nicht

              ich habe das problem (für meine belange) dennoch gelöst, indem ich in die termin-eintrage-funktion folgendes simple if-anweisung hinzugefügt habe:

              PHP-Code:
              if (strlen($gig_date) == 9) {
                 
              $gig_date "0"$gig_date;

              somit wird aus dem neunstelligen timestamp ein zehnstelliger. basta. ist zwar höxtwahrscheinlich derbe unsauber, aber wie gesagt, für meine belange reichts völlig....

              dennoch: für die rasche hilfestellung!

              bis zum näxten problem

              Kommentar


              • #8
                naja. wie du willst ... aber mit den datumsfunktionen von mysql ist's etwas schöner und sauberer.

                DATE_FORMAT() ist z.b. für die ausgabe interessant.. ;-)
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar

                Lädt...
                X