+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 15 von 20

Thema: daten nach datum und uhrzeit sortieren

  1. #1
    TP-Member DonJure macht alles soweit korrekt Avatar von DonJure
    Registriert seit
    Sep 2003
    Ort
    NRW - Moers
    Beiträge
    35

    daten nach datum und uhrzeit sortieren

    hallo... ich bins noch mal...

    also..ich habe ein kleines forum gebastelt.
    ich möchte meine themen nach datum und uhrzeit sortiert haben,
    also so das der akktuellste zuerst erscheint...

    in meiner datenbank habe ich das datum und zeit mit date() erfasst und in der tabelle gespeichert. Die tabelle hat den wert char.... 01.10.2003 18:47:50 (ich glaub das ist zum bearbeiten falsch)

    könnt ihr mir weiterhelfen...
    I wasted all my pretty years on you!

  2. #2
    TP-Specialist prefix ist auf einem guten Weg
    Registriert seit
    Aug 2002
    Ort
    Nähe Wien
    Beiträge
    4.642
    hi!

    also ich persönlich würde den zeitpunkt des postings mit einem timestamp erfassen und auch so in die db schreiben.

    bei der ausgabe dann mittels folgender function in klartext ausgeben:

    PHP-Code:
    function unix2date($unixzeit,$format,$clock)
    // Wandelt einen UNIX-Timestamp in ein normales Datum um
    // und schickt einen String zurueck ...
    // 11.09.2002 18:03 Uhr
    {

        if(
    $format=="long"$months = array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
        if(
    $format=="short"$months = array("Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez");
        if(
    $format=="digit"$months = array("01.","02.","03.","04.","05.","06.","07.","08.","09.","10.","11.","12.");

        list(
    $mday,$month,$year) = split("( )",date("d n Y",$unixzeit));
        
    $month -= 1;

        if(
    $clock=="uhr")
        {
            
    $uhrzeit=date("H:i",$unixzeit);
            return 
    $this_day="$mday. $months[$month] $year - $uhrzeit";
        }
        else
        {
            return 
    $this_day="$mday. $months[$month] $year";
        }

    diese und noch mehr functions sind hier zu finden

  3. #3
    TP-Specialist Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Avatar von Stuck Mojo
    Registriert seit
    Feb 2001
    Ort
    Helmstedt/Wolfsburg
    Beiträge
    4.108
    Warum so kompliziert?

    MySQL beherscht die Datumsfunktionen (meiner Meinung nach sogar besser als PHP)... warum also Funktionen selberbauen, wenn man all das direkt in der Datenbank erledigen kann.

    Um Daten und Uhrzeiten in MySQL zu speichern bietet MySQL extra vordefinierte Feldtypen: DATETIME, DATE, TIME

    Speicher das Datum eines Postings einfach in einem Datetime feld ab. Beim Insert brauchst du noch nichtmal das Datum manuell übergeben, sondern kannst einfach die NOW()-Funktion von MySQL nutzen.
    Nach Feldern vom Typ DATETIME kannst du ohne Probleme via ORDER BY sortieren.
    Willst du nun das Datum formatiert ausgeben, braucht man ebenfalls keine PHP-Funktion, da man MySQL "sagen" kann, wie man das Datum haben möchte. Dazu schau mal hier vorbei: http://www.mysql.com/doc/en/Date_and...s.html#IDX1333

    Auch einen Unixtimestamp kann man direkt aus dem Feld abfragen: http://www.mysql.com/doc/en/Date_and...s.html#IDX1346

    Gruss
    Jan

    PS: Falls du jetzt Probleme hast, dein Varchar-Feld mit Produktiv-Daten in ein datetime-feld umzuwandeln, sag bescheid. Auf keinen Fall mit Produktivdaten testen, da die Felder mit hoher Sicherheit zerstört werden.

  4. #4
    TP-Specialist prefix ist auf einem guten Weg
    Registriert seit
    Aug 2002
    Ort
    Nähe Wien
    Beiträge
    4.642
    na da schau her, da tun sich ja neue wissens-welten für mich auf

    thx jan - toller tipp!

  5. #5
    TP-Member DonJure macht alles soweit korrekt Avatar von DonJure
    Registriert seit
    Sep 2003
    Ort
    NRW - Moers
    Beiträge
    35
    k ich werde das nachdem ich noch ein par bäume gefällt habe ausprobieren...

    also ich mache 2 datenfelder vom type time und date
    beide kann ich mit now() ermitteln.
    und der $sql wie sähe der aus?
    ORDER BY datum -> dann habe ich nur nach datum und nicht nach uhrzeit...
    oder kann man auch beides machen?

    @mojo k vielen danke für dein angebot, aber das forum ist noch in der testphase also egal wegen datenverlust...
    I wasted all my pretty years on you!

  6. #6
    TP-Specialist Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Avatar von Stuck Mojo
    Registriert seit
    Feb 2001
    Ort
    Helmstedt/Wolfsburg
    Beiträge
    4.108
    wieso 2 Felder??? DATETIME ist das Feld, das du brauchst!

  7. #7
    TP-Specialist prefix ist auf einem guten Weg
    Registriert seit
    Aug 2002
    Ort
    Nähe Wien
    Beiträge
    4.642
    also, ich hoff ich liege jetzt richtig, aber das müsste dann beispielsweise so aussehen:

    PHP-Code:
    $sql mysql_query("SELECT DATE_FORMAT('datumsfeld','%d %M %Y') FROM tabelle ORDER BY datumsfeld DESC"); 
    oder?? ich denke, so sollte das funktionieren...

  8. #8
    TP-Member DonJure macht alles soweit korrekt Avatar von DonJure
    Registriert seit
    Sep 2003
    Ort
    NRW - Moers
    Beiträge
    35
    jetzt leuchtet mir einiges ein...
    I wasted all my pretty years on you!

  9. #9
    TP-Specialist Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Avatar von Stuck Mojo
    Registriert seit
    Feb 2001
    Ort
    Helmstedt/Wolfsburg
    Beiträge
    4.108
    das würde nicht funktionieren, da du als Datum einen String übergibst und keine Feldbezeichnung. Entweder die single-quotes weg (') oder durch Ticks ersetzen (`). Mit DATE_FORMAT(...) AS juhu kannst du einen Alias benutzen, unter dem das "Feld" dann im Resultset zu finden ist.

  10. #10
    TP-Specialist prefix ist auf einem guten Weg
    Registriert seit
    Aug 2002
    Ort
    Nähe Wien
    Beiträge
    4.642
    ok, aber folgendes müsste dann stimmen?

    PHP-Code:
    $sql mysql_query("SELECT DATE_FORMAT(datumsfeld,'%d %M %Y') FROM tabelle ORDER BY datumsfeld DESC"); 

  11. #11
    TP-Specialist Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Stuck Mojo ist ein richtiges Arbeitstier - DANKE Avatar von Stuck Mojo
    Registriert seit
    Feb 2001
    Ort
    Helmstedt/Wolfsburg
    Beiträge
    4.108
    jap...wobei so wäre fürs Auswerten besser, es sei denn man fragt wirklich nur dieses eine Feld ab:
    PHP-Code:
    $sql mysql_query("SELECT DATE_FORMAT(datumsfeld,'%d %M %Y') AS datum FROM tabelle ORDER BY datumsfeld DESC");
    $r mysql_fetch_assoc($sql);
    echo 
    $r['datum']; 

  12. #12
    TP-Specialist prefix ist auf einem guten Weg
    Registriert seit
    Aug 2002
    Ort
    Nähe Wien
    Beiträge
    4.642
    so, danke vielmals - hat mir echt viel gebracht

    @donjure: sorry für's "dazwischen-reden" *lol*

  13. #13
    TP-Member DonJure macht alles soweit korrekt Avatar von DonJure
    Registriert seit
    Sep 2003
    Ort
    NRW - Moers
    Beiträge
    35
    np

    bin genauso interessiert an den antworten...
    I wasted all my pretty years on you!

  14. #14
    TP-Specialist prefix ist auf einem guten Weg
    Registriert seit
    Aug 2002
    Ort
    Nähe Wien
    Beiträge
    4.642
    noch eine kurze zusatzfrage hätte ich, jan

    annahme: tabelle mit folgenden feldern:

    - id, int, not_null, auto_incr
    - vorname, varchar(50)
    - nachname, varchar(50)

    bisher hab ich db-ausgaben immer so gelöst:

    PHP-Code:
    $abfrage mysql_query("SELECT * FROM tabelle ORDER BY nachname, vorname ASC");
    while (
    $ausgabe mysql_fetch_object($abfrage)) {
        
    $vorname $ausgabe->vorname;
        
    $nachname $ausgabe->nachname;
        echo 
    "$nachname $vorname <br />";

    mittels array sollte da ja eine sinnvoller lösung möglich sein (vor allem, wenn man viele felder ansprechen und ausgeben muss) - oder??

    würde das so funktionieren?:

    PHP-Code:
    $abfrage mysql_query("SELECT * FROM tabelle ORDER BY nachname, vorname ASC");
    while(
    $r mysql_fetch_assoc($sql)) {
        echo 
    "$r['nachname'] $r['vorname']";

    so, jetzt frag ich mich grad: warum probier ich das eigentlich nicht aus??

    ich mach schon....

    EDIT
    ich seh schon (nach kurzem testen) kleinere probleme - versuch die mal zu lösen
    Geändert von prefix (02.10.2003 um 12:11 Uhr)

  15. #15
    TP-Specialist prefix ist auf einem guten Weg
    Registriert seit
    Aug 2002
    Ort
    Nähe Wien
    Beiträge
    4.642
    perfekt, das geht ja echt so

    PHP-Code:
    $abfrage mysql_query("SELECT * FROM user ORDER BY nachname ASC");
    while(
    $r mysql_fetch_assoc($abfrage)) {
        echo 
    $r['nachname']." ".$r['vorname']."<br />";

    also jetzt erspar ich mir viel viel tippserei - thx!

+ Antworten
Seite 1 von 2 1 2 LetzteLetzte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

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