MySQL liefert Daten auf Englisch zurück
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
april
array
august
ausgabe
code
datenbank
datum
februar
feld
januar
juli
juni
mai
monat
oktober
problem
samstag
september
tag
zahl
-
Hallo,
ich habe ein kleines tag/problem">Problem.
Wenn ich meine Datenbank mit folgendem SQL-Statement quäle:
SELECT `Vorname` , `Nachname` , `Anrede` , `Strasse` , `PLZ` , `Ort` , `Telefon` , `Homepage` , `Foto` , DATE_FORMAT(`Geburtsdatum`,'%d.%M.%Y') AS datum, DATE_FORMAT(`Geburtsdatum`,'%d.%m.%Y') AS monat,`Beruf` FROM benutzer_daten
dann liefert mir "datum" einmal das Datum in diesem Format:
1970.01.31
und "monat":
1970.Januar.31
Wenn sich ein Benutzer auf meiner Seite anmeldet, dann speichert es ein Datum in folgendem Format in die Datenbank:
Jahr-Monat-Tag
0000-00-00
(natürlich mit den Werten, die angegeben werden)
Der Feldtyp ist "date".
So und wenn man dann irgendwann mal wieder sein Profil editiert, wird das GebDatum ganz oben in den 3 Select-Feldern (1. Feld Tag, 2. Feld Monat 3. Feld Jahr) aufgelistet.
Für den Monat benötige ich "monat" in der Abfrage.
Mein Problem ist jetzt allerdings, dass nach einer Änderung, das Datum zwar in der gleichen Form in der Datenbank steht, wie bei der Anmeldung, nur werden nach einer Änderung die Monate ins Englische übersetzt.
Weiß jemand woran das liegt?
Danke
Gruß
Skull
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ich schätze, da kann man nichts dran ändern, damit bin auch ich überfordert
Naja, vielleicht schaffst du es doch noch selbst, also Viel Glück! -
Hey
das liegt daran da dein feldtyp date ist und er nun mit daten gefüttert wird Januar oder Februar automatisch in das für ihn bekannte Format janary oder february also in den Englischen Namen übersetzt. Abhilfe würde schaffen das Monat weiterhin als Zahl zu speichern und dann beim auslesen die Zahl durch das entsprechende Monat zu ersetzen. Eine andere Lösung für dieses Problem ist mir im moment nicht bekannt.
mfg -
das würde bedeuten, ich müsste eine abfrage starten....
z.b.
switch($monat) { case "01": $ausgabe = "Jän"; break; case "02": $ausgabe = "Feb"; break; }
mein ihr das so?^^
Schade, dass die Ausgabe nicht mehrsprachig ist, und sich nach der Sprache vom phpMyAdmin richtet :(
-
Das ist kein "Problem", das ist einfach eine Tatsache. Das wäre ja schön, wen ein englisches PHP-Script auf einem deutschen Server etwas anderes ausgeben würde.
Sprachen werden nun mal im (amerikanischen) Englisch definiert, und nicht übersetzt. Sonst wäre das eine neue Sprache. Du kannst zur Ausgabe ja die einzelnen Daten aus der Variable auslesen und in die dt. Schreibweise "umrechnen". -
was verstehst du unter umrechnen?
so wie ich oben gesagt habe, mit einer switch-anweisung z.b.? -
Wenn ich dich richtig verstehe, willst du dein engl. Datum in der Datenbank in deutsch ausgeben, oder?
Dies könntest du im SQL so machen:
Lokalisierung der Wochentage: SELECT ELT( WEEKDAY('2004-04-10')+1, 'Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'); für lange Monate: SELECT DATE_FORMAT( '2004-04-10', CONCAT( ELT( WEEKDAY('2004-04-10')+1, 'Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'),', %d. ', ELT( MONTH('2004-04-10'), 'Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'),' %Y')); --> Samstag, 10. April 2004 für kurze Monate: SELECT DATE_FORMAT( FROM_UNIXTIME(1081548000), CONCAT( ELT( WEEKDAY(FROM_UNIXTIME(1081548000))+1, 'Mo','Di','Mi','Do','Fr','Sa','So'),', %d. ', ELT( MONTH(FROM_UNIXTIME(1081548000)), 'Jan.','Feb.','März','April','Mai','Juni','Juli','Aug.','Sept.','Okt.','Nov.','Dez.'),' %Y')); --> Sa, 10. April 2004
und mit der Funktion STR_TO_DATE sich das Format der Datenbank geben lassen und per insert speichern:
SELECT STR_TO_DATE('10.31.2003',GET_FORMAT(DATE,'USA')); --> 2003-10-31
Grüßle
Beitrag geändert: 12.11.2008 18:52:29 von scout -
wow thx ^^
genau das habe ich gesucht :D -
Ich habe solche Probleme ganz einfach mit einem Array gelöst:
<?php function calcmonat($wert) // Der Monat als Zahl, nur für die Ausgabe im HTML { $monate = array("keine Auswahl" , "Januar" ,"Februar" ,"März","April","Mai","Juni","Juli", "August" ,"September" ,"Oktober" ,"November" ,"Dezember"); return $monate[$wert]; } ?>
Das Menü sieht dann folgendermaßen aus:
<select name="monat" size="1"> <option value="1 ">Januar</option> <option value="2" >Februar</option> <option value="3" >März</option> <option value="4" >April</option> <option value="5" >Mai</option> <option value="6" >Juni</option> <option value="7" >Juli</option> <option value="8" >August</option> <option value="9" >September</option> <option value="10" selected='selected'>Oktober</option> <option value="11" >November</option> <option value="12" >Dezember</option> </select>
In der Datenbank speicherst du dann das ganze immer so ab: jjjj-mm-tt
Gruß, Prog -
wäre natürlich auch eine möglichkeit, stimmt. :)
die variante mit dem array finde ich irgendwie besser.
wer weiß, ob die abfrage in der neuen mysql version noch funktioniert o.O
aber muss sagen, ich bin sichtlich überrascht, was mit sql alles möglich ist!
thx!
edit:
bei deiner variante mit den arrays gibt es doch ein problem, wenn man den monat so speichert:
yyy.mm.dd
mm = 01 = jänner
array[01] gibt es nicht?
habs getestet und es kam ein fehler.^^
Beitrag geändert: 12.11.2008 19:32:36 von skullsplitter -
aber muss sagen, ich bin sichtlich überrascht, was mit sql alles möglich ist!
Ich bin auch überrascht, was da alles möglich ist.
edit:
bei deiner variante mit den arrays gibt es doch ein problem, wenn man den monat so speichert:
yyy.mm.dd
mm = 01 = jänner
array[01] gibt es nicht?
habs getestet und es kam ein fehler.^^
Ich hatte dieses Problem noch nie.
Hast du es so mal ausprobiert
<?php list ($tag, $monat, $jahr) = split('[/.-]', $datum); $monatsname = $monate[$monat]; ?>
Gruß, Prog
Beitrag geändert: 12.11.2008 19:45:19 von prog -
Jungs, ein Array hat immer ein Index ohne führende Null!
Also anstatt array[01] einfach array[1] verwenden
Grüßle -
najo ich nehm die variante mit dem sql statement :)
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage