Daten ausgeben
Sebastian
- php
0 Oliver Jooß0 Elessar0 Tobias Kloth
Hallo,
habe ein kleines Problem in PHP:
in meiner SQL-DB sind 2 Spalten als "DATE" festgelegt. Wenn ich nun diese Spalten als Text auf der PHP ausgeben möchte, so wird mir dieser im Format yyyy-mm-dd ausgegeben. Gibt es eine Möglichkeit diesen auch im Deutschen Format tt.mm.yyyy auszugeben ?
Wenn ja wie mache ich das ?
Und ein zweites Problem ist auch die Eingabe:
Wenn ich über ein Formular einen neuen Datensatz eingebe, dann gibt der Benutzer ja auch das Datum im Format tt.mm.yyyy ein. Nur wie kann man das umwandeln, dass das Datum dann auch richtig in der DB gespeichert wird ?
Vielen Dank !
Sebastian
Hallo Sebastian, wandle die Formate doch um:
*Datum von TT.MM. in JJJJ-MM-TT umwandeln*/
//$datum der Form tt.mm.
$datum_new = "2003-".$datum[3].$datum[4]."-".$datum[0].$datum[1];
Ich hoffe, ich konnte dir helfen.
Gruß Oliver
Hallo,
ich habe da eine bzw. mehrere kleine Funktionen gefunden, allerdings weiss ich als PHP-Newie erhlich gesagt nicht wie genau ich die einbinden muss. habe ich einfach mal dran versucht. beim anzeigen der Seite im Browser wird mir allerdings anstatt des eigentlich in der DB stehenden Datum nur 00.00.0000 angezeigt.
Danke für jeden Tip !
MFG
Sebastian
Hier mal mein Code:
<?php require_once('Connections/conAbwesenheit.php'); ?>
<?php
/**
* date_mysql2german
* wandelt ein MySQL-DATE (ISO-Date)
* in ein traditionelles deutsches Datum um.
*/
function date_mysql2german($datum) {
list($jahr, $monat, $tag) = explode("-", $datum);
return sprintf("%02d.%02d.%04d", $tag, $monat, $jahr);
}
/**
* date_german2mysql
* wandelt ein traditionelles deutsches Datum
* nach MySQL (ISO-Date).
*/
function date_german2mysql($datum) {
list($tag, $monat, $jahr) = explode(".", $datum);
return sprintf("%04d-%02d-%02d", $jahr, $monat, $tag);
}
/**
* timestamp_mysql2german
* wandelt ein MySQL-Timestamp
* in ein traditionelles deutsches Datum um.
*/
function timestamp_mysql2german($vom) {
return sprintf("%02d.%02d.%04d",
substr($t, 6, 2),
substr($t, 4, 2),
substr($t, 0, 4));
}
?>
<?php
mysql_select_db($database_conAbwesenheit, $conAbwesenheit);
$query_Recordset1 = "SELECT * FROM daten WHERE date_format(NOW(), '%d.%m.%y') BETWEEN date_format(vom, '%d.%m.%y') AND date_format(bis, '%d.%m.%y')";
$Recordset1 = mysql_query($query_Recordset1, $conAbwesenheit) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<p><font size="3" face="Arial, Helvetica, sans-serif"><?php echo $row_Recordset1['Vorname']; ?><br>
<?php echo $row_Recordset1['Nachname']; ?> <br>
</font> <?php echo $dbdatum = date_mysql2german($dbdatum); ?> </p>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>
Hi Sebastian!
In der offiziellen PHP-Dokumentation gibt's die date()-Funktion, mit der du Datumsangaben formatieren kannst.
http://www.php.net/manual/de/function.date.php
Dein Beispiel müsste dann in etwa so aussehen:
$datum_neu = date("d.m.Y",$datum)
Mfg
Elessar
Hallo Elessar,
dann wird mir nur 01.01.70 ausgegeben obwohl in der DB drinsteht 2003-07-01
Wieso ?
Was ist falsch oder fehlt in meinem Quellcode ? (Siehe meinen vorherigen Beitrag am Thread)
Danke für Deine (Eure) Mühe !
MFG
Sebastian
hi,
dann wird mir nur 01.01.70 ausgegeben obwohl in der DB drinsteht 2003-07-01
Was ist falsch oder fehlt in meinem Quellcode ? (Siehe meinen vorherigen Beitrag am Thread)
dein verständnis ist falsch.
die art von timestamp, die mysql verwendet, und die art, die php verwendet (unix-timestamp), sind nicht identisch.
gruss,
wahsaga
Hallo Sebastian,
Wenn ich nun diese Spalten als Text auf der PHP ausgeben möchte, so wird mir dieser im Format yyyy-mm-dd ausgegeben. Gibt es eine Möglichkeit diesen auch im Deutschen Format tt.mm.yyyy auszugeben ?
ja - gib bei SELECT nicht den Spaltennamen an, sondern sowas wie DATE_FORMAT(spaltenname,"%e.%c.%Y") as dedatum
siehe auch http://www.mysql.de/doc/de/Date_and_time_functions.html und http://www.mysql.de/doc/de/SELECT.html
Wenn ich über ein Formular einen neuen Datensatz eingebe, dann gibt der Benutzer ja auch das Datum im Format tt.mm.yyyy ein. Nur wie kann man das umwandeln, dass das Datum dann auch richtig in der DB gespeichert wird ?
ich mach das so, dass ich den String an den Punkten Trenne (mit explode()) und ihn dann wieder "mysql-gerecht" zusammenbaue - vielleicht gibt es aber auch noch eine bessere Variante :-)
Grüße aus Nürnberg
Tobias
Hallo,
siehe meinen Quelltext in einem Beitrag an diesem Thread. Dort mache ich das mit dem date_format schon !
MFG
Sebastian
Hallo Sebastian,
siehe meinen Quelltext in einem Beitrag an diesem Thread. Dort mache ich das mit dem date_format schon !
jain - du verwendest es zwar im WHERE-Teil nicht aber im SELECT-Teil - wenn du es im SELECT-Teil verwendest (statt des Sternchens ->http://dclp-faq.de/q/q-sql-select.html) kannst du dir die Umformerei mit php sparen.
Grüße aus Nürnberg
Tobias