Datumsausgabe formatieren

 


toffifee
Zaungast

24.01.09
21:09 Uhr
Moin,

ich möchte ein Datum aus einer MySQL-Datenbank abfragen (Datentyp: DATE). Es soll aber nicht als 2008-10-25 angezeigt werden, sondern als 25.10.2008.
Hier der „Ur-Quellcode“:
  1. <?php
  2. $result = mysql_query('SELECT * FROM apps WHERE id = ' . mysql_real_escape_string($_GET['id']));
  3. while ($row = mysql_fetch_array($result)){
  4. echo "[...]<div id=\"autor\">Letzes Update: " . $row['added'] . " </div>"[...];
  5. }
  6. ?>
Quelltext in Zwischenablage kopieren
Nun habe ich in einem anderen Forum den Trick mit explode gefunden:
  1. <?php
  2. $result = mysql_query('SELECT * FROM apps WHERE id = ' . mysql_real_escape_string($_GET['id']));
  3. while ($row = mysql_fetch_array($result)){
  4. echo "[...]<div id=\"autor\">Letzes Update: " . $zeit = explode('-', $row['added']);
  5. echo $zeit[2].'.'.$zeit[1].'.' . " </div>[...]";
  6. }
  7. ?>
Quelltext in Zwischenablage kopieren
Aber jetzt wird komischerweise „Array25.10.“ ausgegeben. Woran liegt das?
Link zu diesem Beitrag in die Zwischenablage kopieren
phloo
Veteran

24.01.09
21:16 Uhr
Du kannst direkt in Mysql die Abfrage formatieren mit DATE_FORMAT
Siehe: http://dev.mysql.com/doc/refman/5.1/de/d...tions.html ()
Link zu diesem Beitrag in die Zwischenablage kopieren
toffifee
Zaungast

24.01.09
21:19 Uhr
Das hatte ich auch schon gesehen, aber ich verstehe nicht, wie ich das anwende.
Könntest du das mal in meine Abfrage einbauen?
Link zu diesem Beitrag in die Zwischenablage kopieren
phloo
Veteran

24.01.09
21:22 Uhr
Da steht doch sogar das Beispiel auf der Infoseite

SELECT DATE_FORMAT('added', '%d.%c.%Y') as datum
Link zu diesem Beitrag in die Zwischenablage kopieren
toffifee
Zaungast

24.01.09
21:37 Uhr
Aber wie bekomm ich jetzt die anderen Spalten in den Select-Befehl?
  1. <?php
  2. $result = mysql_query('SELECT DATE_FORMAT('added', '%d.%c.%Y') as `datum`, iconurl, Name, version, Homepage, Autor FROM apps WHERE id = ' . mysql_real_escape_string($_GET['id']));
  3. while ($row = mysql_fetch_array($result)){
  4. echo "[...]<div id=\"autor\">Letzes Update: " . $row['added'] . " </div>[...]";
  5. }
  6. ?>
Quelltext in Zwischenablage kopieren
Das funktioniert nicht...
Parse error: syntax error, unexpected T_STRING
Link zu diesem Beitrag in die Zwischenablage kopieren
phloo
Veteran

25.01.09
00:52 Uhr
Natürlich nicht, du musst die ' ' escapen.

Hast du mal ein PHP Tutorial gelesen bzw SelfPHP?
Würde dir als Einstieg mal empfehlen )
Link zu diesem Beitrag in die Zwischenablage kopieren
toffifee
Zaungast

25.01.09
14:22 Uhr
Ups das hatte ich ganz übersehen hm
Nun kommt zumindestens kein PHP-Error mehr, dafür wird jetzt das Datum gar nicht mehr ausgegeben.
Ich habe den Befehl mal direkt in der DB ausgeführt und da steht nun für _added NULL...
  1. SELECT DATE_FORMAT('added', GET_FORMAT(DATE,'EUR')) as _added, iconurl, Name, version, Homepage, Autor, BeschreibungDe FROM apps WHERE id = 1
Quelltext in Zwischenablage kopieren
Link zu diesem Beitrag in die Zwischenablage kopieren
phloo
Veteran

25.01.09
17:49 Uhr
Was soll denn der GET_FORMAT Befehl da drin?
oben stand doch schon wie es formatiert werden muss

Vielleicht solltest du mal genauer die Tutorials durchlesen und Beispiele ausprobieren, statt auf gut Glück irgendwas zu kombinieren )
Link zu diesem Beitrag in die Zwischenablage kopieren
toffifee
Zaungast

25.01.09
17:57 Uhr
Das hab ich von der mysql-Seite:
mysql> SELECT DATE_FORMAT('2003-10-03',GET_FORMAT(DATE,'EUR'));
'03.10.2003'
Aber auch mit
  1. SELECT DATE_FORMAT('added', '%d.%c.%Y') as _added, iconurl, Name, version, Homepage, Autor, BeschreibungDe FROM apps WHERE id = 1
Quelltext in Zwischenablage kopieren
geht es nicht...
Link zu diesem Beitrag in die Zwischenablage kopieren
phloo
Veteran

25.01.09
18:21 Uhr
Welche Fehlermeldung erhälst du denn?
Link zu diesem Beitrag in die Zwischenablage kopieren
caZpa
Veteran

25.01.09
18:46 Uhr
  1. $date = explode('-',$row['added']);
  2. echo $date[2] . '.' . $date[1] . '.' . $date[0];
Quelltext in Zwischenablage kopieren
Link zu diesem Beitrag in die Zwischenablage kopieren
toffifee
Zaungast

25.01.09
19:37 Uhr
phloo schrieb am 25.01.09, 18:21 Uhr:

Welche Fehlermeldung erhälst du denn?
Gar keine, das Datum wird einfach nicht angezeigt rafftnix

caZpa schrieb am 25.01.09, 18:46 Uhr:

  1. $date = explode('-',$row['added']);
  2. echo $date[2] . '.' . $date[1] . '.' . $date[0];
Quelltext in Zwischenablage kopieren
Jetzt wird „Array25.12.2008“ angezeigt o.O
Link zu diesem Beitrag in die Zwischenablage kopieren
caZpa
Veteran

25.01.09
19:50 Uhr
Editiert: 25.01.09, 20:09 Uhr
zeig mal den ganzen code

//weil an dem 2zeiler kann es eigentlich nicht liegen...
Link zu diesem Beitrag in die Zwischenablage kopieren
toffifee
Zaungast

25.01.09
23:38 Uhr
  1. <?php
  2. $result = mysql_query('SELECT * FROM apps WHERE id = ' . mysql_real_escape_string($_GET['id']));
  3. while ($row = mysql_fetch_array($result)){
  4. echo "<li>
  5. <img id=\"icon\" src=\"" . $row['iconurl'] . "\" alt=\"" . $row['Name'] . "\" />
  6. <div id=\"name\">" . $row['Name'] . "</div>
  7. <div id=\"version\">Version: " . $row['version'] . "</div> </li><li>
  8. <div id=\"autor\">Autor: " . $row['Autor'] . " (<a href=\"" . $row['Homepage'] . "\">Homepage</a>)</div></li>
  9. <li><div id=\"autor\">Letzes Update: " . $date = explode('-',$row['added']);
  10. echo $date[2] . '.' . $date[1] . '.' . $date[0] . " </div></li></ul>
  11. <ul><li>Beschreibung:</li><li><div id=\"beschreibung\"><p>" . $row['BeschreibungDe'] . "</p></div></li>";
  12. }
Quelltext in Zwischenablage kopieren
Ich hoffe das hilft planlos
Link zu diesem Beitrag in die Zwischenablage kopieren
Patric
Veteran

25.01.09
23:41 Uhr
  1. <li><div id=\"autor\">Letzes Update: " . $date = explode('-',$row['added']);echo $date[2] . '.' . $date[1] . '.' . $date[0] . " </div></li></ul>
Quelltext in Zwischenablage kopieren

ich glaube so kannst du das nicht machen.
du verbindest da die strings mit einem . und darin dann wieder setzt du $date mit = auf explode(...)

Setze
  1. $date = explode('-',$row['added']);
Quelltext in Zwischenablage kopieren
mal vor dein echo und im echo dann nur $date[1] ... usw

So wie du das machst, versucht gibt er auch „$date“ aus - und das kann echo nicht, sagt also, dass es ein array ist
Link zu diesem Beitrag in die Zwischenablage kopieren
stese
Moderator

25.01.09
23:54 Uhr
äh viel zu kompliziert


  1. $timestamp = strtotime($row['added']);
  2. <li><div id=\"autor\">Letzes Update: " . date('d.m.Y', $timestamp). " </div></li>
Quelltext in Zwischenablage kopieren

strtotime ist einre funktion diedir aus einem datumsstring (z.b. auch 12.04.2009) einen timestamp rechnet den du mittels funktion date() formatieren kannst
Link zu diesem Beitrag in die Zwischenablage kopieren
Toni
Veteran

26.01.09
09:25 Uhr
Irrelevanter Beitrag (anzeigen):

Link zu diesem Beitrag in die Zwischenablage kopieren
toffifee
Zaungast

26.01.09
11:56 Uhr
Patric schrieb am 25.01.09, 23:41 Uhr:

  1. <li><div id="autor">Letzes Update: " . $date = explode('-',$row['added']);echo $date[2] . '.' . $date[1] . '.' . $date[0] . " </div></li></ul>
Quelltext in Zwischenablage kopieren

ich glaube so kannst du das nicht machen.
du verbindest da die strings mit einem . und darin dann wieder setzt du $date mit = auf explode(...)

Setze
  1. $date = explode('-',$row['added']);
Quelltext in Zwischenablage kopieren
mal vor dein echo und im echo dann nur $date[1] ... usw

So wie du das machst, versucht gibt er auch „$date“ aus - und das kann echo nicht, sagt also, dass es ein array ist

Ahh es funktioniert )
Danke!
Link zu diesem Beitrag in die Zwischenablage kopieren
marcus_a
Veteran

26.01.09
18:07 Uhr
Editiert: 27.01.09, 12:28 Uhr
Und gleich so aus der Datenbank „abholen“?:
  1. SELECT DATE_FORMAT(datum, '%d. %m. %Y') as neues_datum FROM table;
Quelltext in Zwischenablage kopieren

Hier gibts auch noch was! http://davidwalsh.name/dates-mysql-php
Link zu diesem Beitrag in die Zwischenablage kopieren
 
#