php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 21-11-2008, 15:36
katja86
 Newbie
Links : Onlinestatus : katja86 ist offline
Registriert seit: Oct 2008
Beiträge: 48
katja86 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Datumsformat

Hallo,

ich habe eine SQL-Abfrage, wo unteranderem das Datum mit abgefragt wird. Mit Hilfe des DATE_FORMAT's wird das Datum in der Form Tag & Monat & Jahr ausgegeben.

PHP-Code:
$select mysql_query("SELECT wert_a, wert_b, DATE_FORMAT(termin_a, '%d.%m.%Y'), DATE_FORMAT(termin_b, '%d.%m.%Y'), wert_c FROM ".$sql_tabelle." WHERE wert_a = '".$fpn."'"); 
Bis hierhin klappt alles, ein Problem ergibt sich nur, wenn die beiden Termine in ein Array (eine Variable) geschrieben werden sollen, siehe folgend:
PHP-Code:
  while($row mysql_fetch_object($select)){
      
$wert_a $row->wert_a;
      
$wert_b $row->wert_b;
      
$termin_a $row->termin_a;
      
$termin_b $row->termin_b;
      
$wert_c $row->wert_c;
  } 
Bis auf die beiden Termine wird alles richtig ausgegeben. Wie kann ich denn das formatierte Datum in PHP richtig ausgeben lassen?
Mit Zitat antworten
  #2 (permalink)  
Alt 21-11-2008, 16:06
XGremliN
 PHP Senior
Links : Onlinestatus : XGremliN ist offline
Registriert seit: Sep 2003
Ort: Karl-Marx-Stadt
Beiträge: 1.900
XGremliN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

zuerstmal: brich deinen code um.
zweitens: select date_format(...) as spaltenname
__________________
it's not a bug,
it's a feature!
Mit Zitat antworten
  #3 (permalink)  
Alt 21-11-2008, 16:12
katja86
 Newbie
Links : Onlinestatus : katja86 ist offline
Registriert seit: Oct 2008
Beiträge: 48
katja86 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

super, vielen dank
Mit Zitat antworten
  #4 (permalink)  
Alt 24-11-2008, 15:19
katja86
 Newbie
Links : Onlinestatus : katja86 ist offline
Registriert seit: Oct 2008
Beiträge: 48
katja86 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wie kann man das ganze in deutschen Format updaten?

PHP-Code:
mysql_query("SELECT DATE_FORMAT(termin_a, '%d.%m.%Y') AS termin_a ... FROM testtabelle); 
klappt ja schon ganz gut, das ganze würde ich natürlich gerne auch in diesen Format abspeichern, also irgendwas die Richtung:

PHP-Code:
mysql_query("UPDATE testtabelle SET DATE_FORMAT(termin_a, '%d.%m.%Y') AS termin_a ... ); 
leider klappt dies so nicht. Kann jemand zufällig weiterhelfen?

Lieben Gruß
Mit Zitat antworten
  #5 (permalink)  
Alt 24-11-2008, 15:32
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die Frage ist warum machst du das? Ansonstens UPDATE Syntax in der Doku nachlesen.
Mit Zitat antworten
  #6 (permalink)  
Alt 24-11-2008, 15:43
katja86
 Newbie
Links : Onlinestatus : katja86 ist offline
Registriert seit: Oct 2008
Beiträge: 48
katja86 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich habe eine Inputfeld, in welches man ein Datum eintragen kann. Da man im Deutschen gewöhnlich die Form "Tag.Monat.Jahr" wählt würde ich dies auch gerne so in der Datenbank speichern.

Mit der SQL_Anweisung:
PHP-Code:
mysql_query("UPDATE testtabelle SET termin_a = '24.12.2008' WHERE ... ); 
wird stattdessen in der Datenbank 20.12.2024 gespeichert.
Mit Zitat antworten
  #7 (permalink)  
Alt 24-11-2008, 16:07
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nein, so macht man nicht. Lokal spezifisches Format wird bei der Ausgabe zurecht formatiert. In die DB gehören Daten in die dafür vorgesehenen Formate. Wenn du termin_a als DATETIME deklariert hast, dann bitte nur in dem Format: YYYY-MM-DD HH:MM:SS ablegen, alles andere ist unfug.
Mit Zitat antworten
  #8 (permalink)  
Alt 24-11-2008, 16:18
katja86
 Newbie
Links : Onlinestatus : katja86 ist offline
Registriert seit: Oct 2008
Beiträge: 48
katja86 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das Format in der Datenbanktabelle kann ja beibehalten werden, das will ich ja gar nicht ändern.

Ich suche nur eine Möglichkeit, das Datum, welches in der Form Tag.Monat.Jahr vorliegt, richtig in der Datenbank zu speichern.
Es sollte also irgendwas sein, dass das Datum im Format "Tag.Monat.Jahr" übernimmt, in das Format "Jahr.Monat.Tag" transformiert und anschließend in der Datenbank speichert.
Mit Zitat antworten
  #9 (permalink)  
Alt 24-11-2008, 16:28
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

explode, array_reverse, implode wäre der naive Ansatz, strptime schon etwas elaborierter und richtig elegant ist, wenn man dieses Problem erst gar nicht hat.
Mit Zitat antworten
  #10 (permalink)  
Alt 24-11-2008, 16:28
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ein datum in der DB ist aber nur sinnvoll im Datumsformat abzulegen, heisst die Tabellenspalte sollte unbedingt das Datumsformat haben.
Also beherzige lieber den Ratschlag und ändere etwas an der DB und formatiere Dein Datum in den ausgabemedien so wie Du es haben möchtest, ansonsten wirst Du sicher in weitere Probleme laufen
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #11 (permalink)  
Alt 24-11-2008, 16:32
katja86
 Newbie
Links : Onlinestatus : katja86 ist offline
Registriert seit: Oct 2008
Beiträge: 48
katja86 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok danke für Eure Hilfe ich habe es aber herausbekommen:
PHP-Code:
UPDATE testtabelle SET termin_a = (SELECT STR_TO_DATE('24.12.2008'GET_FORMAT(DATE,'EUR'))) WHERE ... 
Mit Zitat antworten
  #12 (permalink)  
Alt 24-11-2008, 16:50
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

sorry, hab nicht den ganzen post gelesen...
Dein Problem ist gelöst, doch hast Du nun keinerlei Fehlerbehandlung, das könnte Dich wieder vor Probleme stellen
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #13 (permalink)  
Alt 24-11-2008, 19:36
phpguru42
 Newbie
Links : Onlinestatus : phpguru42 ist offline
Registriert seit: Oct 2008
Beiträge: 71
phpguru42 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von onemorenerd
... und richtig elegant ist, wenn man dieses Problem erst gar nicht hat.
Und wie macht man es "richtig elegant"?

In der Applikation eine Vermittlerschicht einbauen, die die verschiedenen Input- / Outputformate konvertiert? Also unabhängig von den gerade benutzen Datenquellen (HTML, XML, MySQL, Excel ...)?

Existiert dafür ein Pattern, oder meintest Du etwas anderes, onmorenerd?
Mit Zitat antworten
  #14 (permalink)  
Alt 24-11-2008, 19:55
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Da gibt es keine Patentlösung. Ich würde allerdings dem User kein Textfeld servieren, wo er ein Datum in einem bestimmten Format eintragen soll. Dazu nehme ich einen Datepicker oder drei Dropdowns für Tag, Monat und Jahr. Da kann der User vom Format her schon mal nichts falsch machen. Man muß die Werte lediglich auf Plausibilität prüfen (30. Februar und sowas).
Das Eintragen in die DB geht ohne jegliche Umwandlung .... SET col = '$year-$month-$day'. Man muß nur wissen, dass MySQL es im Format yyyy-mm-dd erwartet.
Mit Zitat antworten
  #15 (permalink)  
Alt 24-11-2008, 20:29
phpguru42
 Newbie
Links : Onlinestatus : phpguru42 ist offline
Registriert seit: Oct 2008
Beiträge: 71
phpguru42 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von onemorenerd
Ich würde allerdings dem User kein Textfeld servieren, wo er ein Datum in einem bestimmten Format eintragen soll. Dazu nehme ich einen Datepicker oder drei Dropdowns für Tag, Monat und Jahr. Da kann der User vom Format her schon mal nichts falsch machen.
OK. Aber bei einer Fließkommazahl sieht es schon anders aus, oder würdest Du dann auch zwei Input-Felder für Vor- und Nachkomma-Stelle draus machen?
Zitat:
Original geschrieben von onemorenerd
Das Eintragen in die DB geht ohne jegliche Umwandlung .... SET col = '$year-$month-$day'. Man muß nur wissen, dass MySQL es im Format yyyy-mm-dd erwartet.
Ist aber unflexibel, da man sich genau auf das MySQL-Format festlegen muss.

Ich hatte gefragt, weil ich eine Webanwendung (HTML/MySQL) betreue und mittlerweile die verschiedensten Konvertierungen benötigt werden:
1. (klassisch) HTML -> MySQL und ebenso MySQL -> HTML
2. Import von Datensätzen aus Excel in MySQL
3. Export von MySQL -> Excel / CSV
4. Export von MySQL -> XML

Bei Punkt 1 und 2 können Benutzer sehr kreativ sein

Naja, je mehr Anforderungen hinzukommen, desto mehr reduntanten Code schreibe ich - daher meine Frage.
Mit Zitat antworten
Antwort

Lesezeichen


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

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:36 Uhr.