kostenloser Webspace werbefrei: lima-city


MySQL liefert Daten auf Englisch zurück

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    skullsplitter

    skullsplitter hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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!
  4. 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
  5. Autor dieses Themas

    skullsplitter

    skullsplitter hat kostenlosen Webspace.

    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 :(
  6. 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".
  7. Autor dieses Themas

    skullsplitter

    skullsplitter hat kostenlosen Webspace.

    was verstehst du unter umrechnen?

    so wie ich oben gesagt habe, mit einer switch-anweisung z.b.?
  8. 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
  9. Autor dieses Themas

    skullsplitter

    skullsplitter hat kostenlosen Webspace.

    wow thx ^^
    genau das habe ich gesucht :D
  10. 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&auml;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
  11. Autor dieses Themas

    skullsplitter

    skullsplitter hat kostenlosen Webspace.

    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

  12. 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
  13. Jungs, ein Array hat immer ein Index ohne führende Null!

    Also anstatt array[01] einfach array[1] verwenden ;-)

    Grüßle
  14. Autor dieses Themas

    skullsplitter

    skullsplitter hat kostenlosen Webspace.

    najo ich nehm die variante mit dem sql statement :)
  15. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!