php.de

Zurück   php.de > php.de Intern > Wiki Diskussionsforum

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.12.2008, 19:22  
Erfahrener Benutzer
 
Benutzerbild von Rezeptfrei
 
Registriert seit: 02.09.2008
Beiträge: 110
PHP-Kenntnisse:
Anfänger
Rezeptfrei befindet sich auf einem aufstrebenden Ast
Standard Datumskonvertierung

Moin moin,
bin zwar Einsteiger aber wurde von nikosch genötigt
Da immer wieder die Frage zur Datumskonvertierung aufkommt, hab ich mir gedacht, stell ich meine Datumskonvertierung hier vor.

Das Datenbank-Problem:
Englisches Format: YYYY-MM-DD
Deutsches Format: DD.MM.YYYY

Als erstes meine Functions-Datei konv.php:
PHP-Code:
<?php
// Datum ins deutsche konvertieren (aus Datenbank):
function konv_date($datum)
{
    
$jahr substr($datum,0,4);
    
$mon  substr($datum,5,2);
    
$tag  substr($datum,8,2);
    
$datneu $tag.'.'.$mon.'.'.$jahr;
return 
$datneu;
}
// Datum ins englische konvertieren (für Datenbank):
function konv_date2($datum)
{
    
$jahr substr($datum,6,4);
    
$mon  substr($datum,3,2);
    
$tag  substr($datum,0,2);
    
$datneu $jahr.'-'.$mon.'-'.$tag;
return 
$datneu;
}
?>
Beispiel für EIN SELECT
(ich geh davon aus, dass die Datenbank-Tabellen-Zelle immer "datum" heißt):
PHP-Code:
<?php
include("konv.php"); // Die Functions-Datei einbinden
$sql "SELECT * FROM TabelleXY
        WHERE ID = '"
.$_GET['ID']."'";
$erg mysql_query($sql);
$row mysql_fetch_object($erg);
{
?>
<input name="datum" type="text" value="<?php echo konv_date($row->datum); ?>">
oder einfach nur:
<?php echo konv_date($row->datum);
}
?>
Beispiel für INSERT INTO und UPDATE:
PHP-Code:
<?php
include("konv.php"); // Die Functions-Datei einbinden
$sql "INSERT INTO TabelleXY SET
        ID          = '"
.mysql_real_escape_string($_POST['ID'])."',
        datum       = '"
.mysql_real_escape_string(konv_date2($_POST['datum']))."',
        wasweissich = '"
.mysql_real_escape_string($_POST['wasweissich'])."'";
mysql_query($sql);
?>
 
<?php
include("konv.php"); // Die Functions-Datei einbinden
$sql "UPDATE TabelleXY SET
        wasweissich = '"
.mysql_real_escape_string($_POST['wasweissich'])."',
        datum       = '"
.mysql_real_escape_string(konv_date2($_POST['datum']))."'
        WHERE ID = '"
.$_POST['ID']."'";
mysql_query($sql);
?>
Das ganze kann man auch noch entsprechend um die Uhrzeit erweitern.

Also wie gesagt, mich nicht gleich erschlagen, bin Einsteiger.


Sonnigen Gruß

Geändert von Rezeptfrei (03.12.2008 um 19:25 Uhr).
Rezeptfrei ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.12.2008, 19:38  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Au, bei Beispiel 2 hast du SQL Injections außer Acht gelassen.
Wenn ich so frei sein darf, werde ich die Codebeispiele an unseren Wiki-Coding-Standard anpassen und unter Scripts ins Wiki stellen.

Beitrag editiert:
[…] Datumskonvertierung mit strtotime() und den MySQL-Datumsfunktionen sollte vielleicht noch aufgenommen werden.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 03.12.2008, 19:42  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

Wenn man eh ein Feld vom Datentyp DATE oder DATETIME in der Datenbank verwendet kann man sich die Daten auch von mysql direkt passend holen:

DATE_FORMAT
funktioniert ähnlich der date()-Funktion von php.
Und für die umgekehrte Richtung kann man das Feld durch
STR_TO_DATE
robo47 ist offline   Mit Zitat antworten
Alt 03.12.2008, 19:43  
Erfahrener Benutzer
 
Benutzerbild von Rezeptfrei
 
Registriert seit: 02.09.2008
Beiträge: 110
PHP-Kenntnisse:
Anfänger
Rezeptfrei befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Manko10 Beitrag anzeigen
Au, bei Beispiel 2 hast du SQL Injections außer Acht gelassen.
Klär mich mal bitte genauer auf...


Zitat:
Zitat von Manko10 Beitrag anzeigen
Wenn ich so frei sein darf, werde ich die Codebeispiele an unseren Wiki-Coding-Standard anpassen und unter Scripts ins Wiki stellen.
Immer zu
Rezeptfrei ist offline   Mit Zitat antworten
Alt 03.12.2008, 19:45  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

kein real_escape bei:
Zitat:
WHERE ID = '".$_GET['ID']."'";
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 03.12.2008, 19:52  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Schon längst geklärt, nikosch!
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 03.12.2008, 20:12  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Bezog sich doch auf
Zitat:
Klär mich mal bitte genauer auf...
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 03.12.2008, 20:14  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Achso.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 08.12.2008, 00:51  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.127
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

ich bin mal so frei:
PHP-Code:
// Datum ins deutsche oder englische konvertieren:
function konv_date($datum)
{
    
$pos strpos($datum'-');
       
    if(
$pos === false$change '.' else $change '-';
    
    
$tmp explode($change$date);
    
    if(
$change == '.')
      
$datneu $tmp[2].'-'.$tmp[1].'-'.$tmp[0];
    else
      
$datneu $tmp[2].'.'.$tmp[1].'.'.$tmp[0];
  
return 
$datneu;

Da müßt man vielleicht noch den Parameter prüfen.
Koala ist offline   Mit Zitat antworten
Alt 08.12.2008, 10:01  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Ich würde beide if-Strukturen zusammenfassen. Weil der Zusammenbau an sich ja gleich ist.
Oder so:

PHP-Code:
// Datum ins deutsche oder englische konvertieren:
function konv_date($date)
  {
  if(
false === strpos($date'-')) {
    return 
implode ('-' array_reverse (explode ('.' $date)));
    } 

  return 
implode ('.' array_reverse (explode ('-' $date)));
  } 
PS: Du hast oben übrigens $date und $datum gemischt.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php datum umwandeln deutsch englisch, php datumsformat von deutsch nach englisch umwandeln, php englisches datum, php englisches datum in deutsches umwandeln, php datumsumwandlung, php englisches datum umwandeln, php englisches datum in deutsches, php datum deutsch englisch umwandeln, datumskonvertierung, http://www.php.de/wiki-diskussionsforum/49545-datumskonvertierung.html, datumsumwandlung php, php englisch datum umwandeln in deutsch, englisches datum php, php englisches datumsformat, php datum konvertieren englisch deutsch, php datum umwandeln englisch, php deutsches datum in englisches umwandeln, php datumskonvertierung, englisches datumsformat php, deutsches datum in englisch umwandeln php

Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum