HILFE!!! Wie validire ich folgenden String mit RegEx

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

  • HILFE!!! Wie validire ich folgenden String mit RegEx

    Hi zusammen,

    ich breche mir grad die Finger mit RegEx. Wie validiere ich folgenden Datumsstring?

    DD.MM.YYYY HH:mm
    Ich muss den String so validieren und danach in ein MySQL Feld (DATETIME) schreiben. Wie mache ich das dann?

    Hoffe habt mein Problem verstanden.

    Danke schon mal für die Hilfe
    Ans Ziel kommt nur der, der auch eins hat. www.e-cross.info

  • #2
    schreibe es doch direkt in die DB.
    wenn da was nicht stimmt, sollte die DB meckern. das kannst du dann abfangen.
    EDIT:
    kommando zurück. zu schnell geschrieben ...
    die DB meckert nicht. die schreibt einfach 0000-00-00 00:00:00 rein.



    du kannst aber auf deiner website ein formular mit dropdown's machen. da kann dann eigentlich keine fehlerhalfte eingabe dazwischen rutschen.


    Zuletzt geändert von Abraxax; 29.01.2003, 17:47.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Aber wie geht das?
      In dem Eingabefeld möchte ich folgendes Format stehen haben
      DD.MM.YYYY HH:mm
      aber an die MySQL Datenbank muss ich das doch wie folgt übergeben, oder nicht?
      YYYY-MM-DD HH-mm
      Oder verstehe ich da was falsch?
      Ans Ziel kommt nur der, der auch eins hat. www.e-cross.info

      Kommentar


      • #4
        ich habe schon verstanden was du willst.
        wenn der user alles korrekt eingeben würde könntest du ja suchen/ersetzen im string machen.

        das ist aber zu unsicher. daher schlage ich vor, dass du einfach dropdownfelder nimmst.

        hatte da eher an sowas gedacht. (ist ein ganz ganz alter code von mir)

        PHP-Code:
            <select name="von_datum_tag" class="dropdown" style="width:50px;">
            <?PHP
                $counter 
        0;
                while ( 
        $counter 31 )
                {
                  
        $counter++;
                  
        $zahl $counter;
                  if ( 
        $counter 10 ) { $zahl "0".$counter; }
                  
        $check "";
                  if ( 
        $zahl == $von_datum_tag ) { $check " SELECTED ";  }
                  echo 
        "<option value=\"" $zahl "\"" $check ">" $zahl "</option>\n";
                }
            
        ?>
            </select>
            .
            <select name="von_datum_monat" class="dropdown" style="width:50px;">
            <?PHP
                $counter 
        0;
                while ( 
        $counter 12 )
                {
                  
        $counter++;
                  
        $zahl $counter;
                  if ( 
        $counter 10 ) { $zahl "0".$counter; }
                  
        $check "";
                  if ( 
        $counter == $von_datum_monat ) { $check " SELECTED ";  }
                  echo 
        "<option value=\"" $zahl "\"" $check ">" $zahl "</option>\n";
                }
            
        ?>
            </select>
            .
            <select name="von_datum_jahr" class="dropdown" style="width:60px;">
            <option value="2000" <?PHP if ($von_datum_jahr=="2000") { echo " SELECTED "; } ?>>2000</option>
            <option value="2001" <?PHP if ($von_datum_jahr=="2001") { echo " SELECTED "; } ?>>2001</option>
            <option value="2002" <?PHP if ($von_datum_jahr=="2002") { echo " SELECTED "; } ?>>2002</option>
            <option value="2003" <?PHP if ($von_datum_jahr=="2003") { echo " SELECTED "; } ?>>2003</option>
            <option value="2004" <?PHP if ($von_datum_jahr=="2004") { echo " SELECTED "; } ?>>2004</option>
            <option value="2005" <?PHP if ($von_datum_jahr=="2005") { echo " SELECTED "; } ?>>2005</option>
            </select>
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Danke für den Code, aber mit DropDowns möchte ich das nicht machen.
          Andere Frage. Wenn ich das ganze mit RegEx auf Richtigkeit prüfen möchte. Wie sieht dann mein RegEx aus?
          Ans Ziel kommt nur der, der auch eins hat. www.e-cross.info

          Kommentar


          • #6
            das müsste so aussehen. bin mir aber auch nicht ganz sicher.

            Code:
            /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-2][0-9]:[0-9]{2}/
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Ich würde sowas machten:

              PHP-Code:
              function checkDateString($date) {
                  if ( 
              preg_match("/(\\\\d{2})\\.(\\\\d{2})\\.(\\\\d{4})\\s+(\\\\d{2}):(\\\\d{2})/"$date$matches) ) {
                      return 
              checkDate((int)$matches[2], (int)$matches[1], (int)$matches[3]) && ((int)$matches[4]<=23 && (int)$matches[4]>=0) && ((int)$matches[5]<=59 && (int)$matches[5]>=0);
                  } else return 
              FALSE;
              }

              $datum="04.12.2001 10:00";
              if ( 
              checkDateString($datum) ) {
                  
              $datum=preg_replace("/(\\\\d{2})\\.(\\\\d{2})\\.(\\\\d{4})\\s(\\\\d{2}):(\\\\d{2})/""\\\\3-\\\\2-\\\\1 \\\\4:\\\\5:00"$datum);
              } else 
              $datum="Wurstpellenmarmelade"
              carpe noctem

              [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
              [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

              Kommentar

              Lädt...
              X