Datum einstellig/zweistellig ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datum einstellig/zweistellig ?

    Falls dieses Problem schon mal irgendwo gepostet wurde weist mich bitte darauf hin, ich habe jedoch bisher nichts dazu gefunden:

    Ich habe 3 Eingabefelder für Datum und 2 für Uhrzeit auf einer HTML-Seite: Tag, Monat und Jahr und Stunde und Minute. Jeweils so wie es sich gehört 2, 2 und 4-stellig bzw. Uhrzeit 2 und 2-stellig.
    Das Datum wird zusammengesetzt mit der Uhrzeit und in der MySQL Datenbank als DATETIME abgelegt. So weit sogut, so lange der User in der Eingabemaske immer schön die '0' vornedranschreibt, also z.B. "03.09.2003" schreibt und nicht "3.9.03" eingibt, dann gibt es nämlich folgendes Problem: In der Datenbank wird "00-00-0000 00:00:00" gespeichert. Wie kann man dieses Problem am geschicktesten umgehen, ohne eine ewig lange If Abfrage zu machen und jeweils immer eine '0' vornedran zu setzen falls der Fall eintrifft ??

  • #2
    Re: Datum einstellig/zweistellig ?

    spontan würde mir einfallen, die zahlen einfach mittels str_pad() von links her mit nullen "aufzufüllen".
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      um andere nicht bedachte fahler zu vermeiden, würde ichj das ganze mit <select> feldern machen. die kann man schön leicht per schleife füllen. dann das datum noch mal schön mit check_date() abtasten und dann speichern
      h.a.n.d.
      Schmalle

      http://impressed.by
      http://blog.schmalenberger.it



      Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
      ... nur ohne :-)

      Kommentar


      • #4
        Ich habs jetzt mal nach "wahsaga's" Methode gemacht, scheint mir die elegantere Lösung zu sein. Das mit den Auswahlfeldern wäre zwar sicherer, aber ich finde bei Auswahlfeldern für die Uhrzeit ist das schon fast ewtas zu viel bei den Minuten beispielsweise.

        Hier so wie ichs gemacht hab:
        PHP-Code:
        $_POST['start_jahr'] = str_pad ($_POST['start_jahr'], 4"20"STR_PAD_LEFT);  // Den String links mit "20" auffüllen falls Eingabe zweistellig
        $_POST['start_monat'] = str_pad ($_POST['start_monat'], 2"0"STR_PAD_LEFT); // Den String links mit Nullen auffüllen falls Eingabe einstellig
        $_POST['start_tag'] = str_pad ($_POST['start_tag'], 2"0"STR_PAD_LEFT);
        $_POST['start_stunde'] = str_pad ($_POST['start_stunde'], 2"0"STR_PAD_LEFT);
        $_POST['start_minute'] = str_pad ($_POST['start_minute'], 2"0"STR_PAD_LEFT);
        $ausfall_startzeit $_POST['start_jahr'].'-'.$_POST['start_monat'].'-'.$_POST['start_tag'].$_POST['start_stunde'].':'.$_POST['start_minute'].':'.'00';
        if ( ( 
        $_POST['start_stunde'] > 23 && $_POST['start_minute'] > 59 ) || $_POST['start_minute'] == "" || $_POST['start_stunde'] == ""):
        {
            
        $check1 0;
        }
        else: 
        $check1 1;
        endif;
        $check3 checkdate($_POST['start_monat'], $_POST['start_tag'] , $_POST['start_jahr'] );  // Prüft ob Datum gültig ist und wandelt in "0" oder "1" 
        Das funktioniert soweit wunderbar, wenn man mal davon absieht das es nicht ganz zukunftsssicher ist mit dem Auffüllen mit "20", aber ich denke im Jahr 3000 exisitiert diese Webseite nicht mehr, und Jahre vor dem aktuellen werden nicht eingegeben bei mir, also kann man dieses Risiko eingehen.

        Kommentar

        Lädt...
        X