kostenloser Webspace werbefrei: lima-city


Datum aus Datenbank formatieren

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    fp08

    fp08 hat kostenlosen Webspace.

    Hallo,
    auf meine Webseite soll für jedes Profil das Datum des Letzten Logins gespeichert werden.
    Also loggt man sich ein wir das aktuelle Datum so in die Datenbank geschrieben:
    $username = $_POST['username'];
    	mysql_query("UPDATE login SET letzterlogin = NOW()
    	   WHERE name = '$username' ");


    Das Feld letzterlogin ist ein Feld vom Typ DATETIME

    Bis hier funktioniert das auch ganz gut, es wird zB. 2011-04-23 15:18:54 in die Spalte eingetragen.

    Dann will ich das ganze Formatiert ausgeben. Es sollte so dargestellt werden: 23. April 2011 15:18 Uhr
    Bis jetzt geb ich das Datum so aus:
    $sql = "SELECT * FROM login WHERE name='$username'";
    $abfrageergebnis = mysql_query( $sql);
    
     while ($datensatz = mysql_fetch_array( $abfrageergebnis ))
    {         $mitgliedsletzterlogin=htmlspecialchars( $datensatz['letzterlogin'] );
    }
    echo $mitgliedsletzterlogin;


    Hab etwas gesucht und bin auf date() gestoßen. Ganze Monatsnamen kann man aber nur mit strftime() ausgeben also hab ichs so versucht:
    echo strftime("%d. %B %Y %R", $mitgliedsletzterlogin);

    allerdings wird der 01. January 1970 01:33 angezeigt.

    Ich vermute es liegt an der Variable $mitgliedsletzterlogin. Aber ich weis nicht wie ich es anders schreiben soll dass er den Inhalt der Variable in das Format umwandeln soll ? Die Beispiele die ich für strftime() gefunden hab hatten alle keine Variable :D

    Ich hoffe ihr könnt mir helfen
    Danke

    LG Pami

  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Statt das mit PHP umzumodeln würde ich das Datum gleich formatiert abfragen (siehe MySQL-Doku zu DATE_FORMAT).
  4. benutz doch statt now(), die php funktion time() und speicher diese in der Datenbank.
    dann bekommst du einen Timestamp, mithilfe dessen kannst du dann mit der date() funktion das datum ermitteln...

    z.B.
    $mitgliedsletzterlogin = //timestamp aus der DB holen
    echo date('d.m.Y', $mitgliedsletzterlogin)


    ...also so würde ich es zumindestens machen

    ps: dazu aber das Tabellen feld von DATETIME auf z.b. INT umstellen
  5. Autor dieses Themas

    fp08

    fp08 hat kostenlosen Webspace.

    okay habs jetzt mal so :

    $sql = "SELECT DATE_FORMAT('letzterlogin', '%e %M %Y') FROM login WHERE name='$username'";
    $abfrageergebnis = mysql_query( $sql);
    
     while ($datensatz = mysql_fetch_array( $abfrageergebnis ))
    {    $mitgliedsletzterlogin=htmlspecialchars( $datensatz['letzterlogin'] );
    }
    
    echo $mitgliedsletzterlogin;


    aber jetzt gibt er garnichts mehr aus. Die Variable ist "leer". Stimmt das denn so?

    das mit dem time() hab ich auch versucht :

    mysql_query("UPDATE login SET letzterlogin = time()
    	   WHERE name = '$username' ");

    die Spalte letzterlogin ist jetzt INT
    allerdings wird dann garnichts gespeichert...
  6. vesuchmal eine variable vorher zu definieren also in etwa so...

    $zeit = time()
    
    mysql_query("UPDATE login SET letzterlogin = '$zeit' WHERE name = '$username' ");


  7. srftime kann mittels setlocale übersetzt werden:

    setlocale(LC_TIME, "de_DE");


    oder

    setlocale(LC_TIME, "de_DE@euro", "de_DE", "deu_deu");


    Rein über MySQL müsstest du das vorran setzen:

    mysql_query("SET lc_time_names = 'de_DE'");


    Alternativ könnte man die Ausgabe auch mittels SELECT REPLACE vorformatieren, das halte ich aber für inperformant.
  8. Autor dieses Themas

    fp08

    fp08 hat kostenlosen Webspace.

    also ich habs mal so umgeschrieben:
    $zeit = time()
    
    mysql_query("UPDATE login SET letzterlogin = '$zeit' WHERE name = '$username' ");


    jetzt steht in der DB bei letzter login 1303574094 ?!

    Das mit dem Übersetzen probier ich sobald ichs geschafft habe, dass das richtige Datum dransteht danke :)
  9. fp08 schrieb:

    jetzt steht in der DB bei letzter login 1303574094 ?!



    ja das ist der Timestamp (vergangene sekunden vom 1.1.1970 , glaube ich :biggrin:)
    denn kannst du wie oben schon geschrieben mit date() umwandeln z.b. date('d.m.Y', $zeit)
    und $zeit ist hier bei der wert aus der datenbank
  10. Autor dieses Themas

    fp08

    fp08 hat kostenlosen Webspace.

    aaaaaaaaaah okay also jetzt zeigts schonmal 23. April 2011 18:14 an :) hab den Wochentag noch davor damit man erkennt obs englisch oder deutsch ist.
    Leider englisch ..
    mit den 3 Codes von fabo ändert sich daran nichts..

    vllt liegt es an dem hier:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    wegen dem EN ? Das ist bei mir im head..
  11. Es wäre gut möglich, dass setlocale nicht funktioniert.

    Das lässt sich so ganz gut rausfinden:

    <?php
    if (setlocale(LC_TIME, "de_DE@euro", "de_DE", "deu_deu") === false) {
    	echo "setlocale konnte nicht angewandt werden.";
    }
    ?>


    In diesem Falle bliebe dir nichts anderes übrig, als die Ausgabe mittels PHP zu formatieren.

    Die Auswahl der Sprachen hängt vom verwendeten Server ab. Auf meinem Server erzeugt

    <?php
    setlocale(LC_TIME, 'de_DE');
    echo strftime("%A, %d. %B %Y  - %R Uhr");
    ?>


    beispielsweise

    Samstag, 23. April 2011 - 18:41 Uhr


    Es wäre nicht auszuschließen, dass auf Lima-City die locales nicht definiert sind.

    Beitrag zuletzt geändert: 23.4.2011 18:42:52 von fabo
  12. Autor dieses Themas

    fp08

    fp08 hat kostenlosen Webspace.

    hmm er gibt aus "setlocale konnte nicht angewandt werden."
    schade ^^
    habs jetzt mit Hilfe von Arrays gemacht. Aufwändiger aber geht :)

    Danke danke :)
  13. Du könntest Lima auch vorschlagen, Locales zu setzen ;) Ist nix großartiges und ich schätze, dass es hier einige Leute gibt, denen das lieber ist, als die prinzipiell unnötige Veerwendung von Arrays.
  14. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!