Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] (Ein Noob braucht hilfe) Validierung datepicker

Einklappen

Neue Werbung 2019

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

  • [Erledigt] (Ein Noob braucht hilfe) Validierung datepicker

    Im Rahmen einer Arbeit soll ich ein Webformular erstellen, bei dem ein Service bestellt werden kann.
    Derzeit habe ich jedoch das Problem, das ich eine Kalenderfunktion einbauen soll.
    Mit:

    PHP-Code:
    <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">  <script src="//code.jquery.com/jquery-1.10.2.js"></script>  <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>  <link rel="stylesheet" href="/resources/demos/style.css">  <script>  $(function() {    $( "#datepicker" ).datepicker();  });
    </script>

    </head>
    <body> 

    <input type="Text" name="prod" id="datepicker"> 
    Konnte ich dies erfolgreich umsetzen.
    Nun habe ich jedoch eine Validierungshürde.
    Ich muss verhindern, dass im Formular ein vergangenes Datum eingegeben werden kann. Da stosse ich auf meine Wissens-Grenzen, habe natürlich im Internet (google, selfhtml und auch hier) bereits nach Lösungen gesucht jedoch keine gefunden.
    Hat mir jemand eine Idee, wo ich nachschauen soll oder wie ich die Validierung umsetzen soll. Meine Versuche waren in etwa:

    PHP-Code:
    elseif (date('m/d/Y'strtotime($prod) == $prod)) 
    oder

    PHP-Code:
    elseif (empty($_POST['prod']))
    {
            echo 
    '<h3>Sie haben kein gültiges  Datum angegeben. </h3>  <a  href=\Webservice_Erfassung.html style=\"text-decoration:none\">Hier</a> gelangen Sie wieder zum Formular.<br><p></p>'
    Danke Leute!
    Euer Elci*neu*


  • #2
    Ich kann nicht ganz nachvollziehen wo konkret deine Hürde liegt? Du fragst den Wert des Feldes ab, versuchst daraus ein Date-Objekt zu machen und vergleichst das mit der aktuellen Zeit... Ist doch nur eine Frage der Recherche?

    Kommentar


    • #3
      Erklär doch mal was du damit vor hattest:
      PHP-Code:
      elseif (date('m/d/Y'strtotime($prod) == $prod)) 
      Der Vergleich $heutiges_datum > $angegebenes_datum sollte doch kein Problem darstellen, oder?

      Kommentar


      • #4
        @Monolith:
        Nun mein eigentliches Problem ist das ich die Daten als "mm/dd/JJJJ" zurück erhalte, und nun weiss ich nicht, wie ich diese mit der aktuellen Zeit vergleichen kann.

        Im grossen und ganzen hast du recht, es ist eine Frage der Recherche, jedoch hatte ich bislang wenig Erfolg mit meinen Recherchen. Deshalb frage ich nun hier, ob jemand ein Tipp für mich hat.

        Kommentar


        • #5
          Sieh dir mal DateTime::createFromFormat an

          Kommentar


          • #6
            @Tropi
            O klingt wirklich leicht.

            Beim Einfügen dieser Funktion erhalte ich jedoch die Fehlermeldung:

            Notice: Undefined variable: prod in /var/www/html/Mail.php on line 120 Warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in /var/www/html/Mail.php on line 120 Notice: Undefined variable: prod in /var/www/html/Mail.php on line 120 Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in /var/www/html/Mail.php on line 120

            Gehe ich richtig in der Annahme, dass ich da wohl noch den jetzigen Zeitpunkt als Parameter definieren sollte?

            A Danke für den Link ich werde diesen nun gut studieren. Danke dir!

            Kommentar


            • #7
              Zu den Fehlern:
              1. Die Variable $prod ist offenbar nicht definiert. Du musst logischerweise $_GET['prod'] oder $_POST['prod'] verwenden, wenn du den Wert noch keiner anderen Variablen zugewiesen hast.
              2. Zu den Zeitfunktionen stehen dir eh 2 Lösungswege beschrieben. Einfach eins davon machen.

              Du brauchst zwei Objekte. Eines für das gegebene Datum und eins für das heutige. Standardmäßig geht DateTime bei ausgelassenem $time-Paramter immer von "now" aus.

              Kommentar


              • #8
                You are *required* to use the date.timezone setting or the date_default_timezone_set() function
                Und dazu steht auch schon da, was du tun sollst, zB:

                PHP-Code:
                date_default_timezone_set('Europe/Berlin'); 
                Du kannst übrigens ab 5.2.2 die DateTime Objekte "direkt" vergleichen:

                Hinweis:
                As of PHP 5.2.2, DateTime objects can be compared using comparison operators.
                http://php.net/manual/de/datetime.diff.php
                Könnte zB in der Art laufen:

                PHP-Code:
                date_default_timezone_set('Europe/Berlin');

                $sDateAny '8/7/2014';
                $oDateAny DateTime::createFromFormat('m/d/Y'$sDateAny);

                $oDateNow = new DateTime('now');

                // direkter Vergleich wie oben angesprochen
                var_dump($oDateNow $oDateAny); // true 
                LG
                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  Ich vermute mal dass du mit JqueryUI arbeitest um den Datepicker zu erzeugen.

                  Du kannst, wenn ich das richtig verstanden habe bei der initialisierung des Datepickers das "minDate" angeben. Wie wäre es wenn du dort einfach das heutige Tagesdatum setzt? Dann sollte es keine Auswahl geben, die vor dem heutigen Tagesdatum (minDate) liegt...

                  Es sei denn, ich habe es falsch verstanden

                  Evtl. hilft dir das ja weiter:
                  http://api.jqueryui.com/datepicker/#option-minDate

                  Edit:
                  Ach da kann man ja Scrollen bei deinem Quelltextausschnitt. Ich korrigiere: Ich vermute nicht dass du mit JqueryUI arbeitest sondern ich lese es deutlich raus

                  Kommentar


                  • #10
                    Zitat von SylarBo Beitrag anzeigen
                    Du kannst, wenn ich das richtig verstanden habe bei der initialisierung des Datepickers das "minDate" angeben. Wie wäre es wenn du dort einfach das heutige Tagesdatum setzt? Dann sollte es keine Auswahl geben, die vor dem heutigen Tagesdatum (minDate) liegt...
                    Vertraue niemals Daten, die vom Client kommen
                    Zitat von nikosch
                    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

                    Kommentar


                    • #11
                      Na dann gleich auch das Format "mitnehmen": http://jqueryui.com/datepicker/#date-formats

                      Wobei du die Validierung nicht alleine JS übrig lassen solltest! Daher würde ich nicht auf DateTime verzichen. ich denke mal damit kann man allerhand blödes Zeug erschlagen, hab auf die Schnelle keine Filter-Funktion für Datum gefunden, daher ist das vermutlich eine gute Variante, da beim erzeugen des Objekte du sonst ein false zurückbekommst, auf das du prüfen kannst (solltest.. musst ).
                      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                      PHP.de Wissenssammlung | Kein Support per PN

                      Kommentar


                      • #12
                        Vertraue niemals Daten, die vom Client kommen
                        Ja, also es wäre eine Möglichkeit aber sicherlich nicht der optimale Weg alles über jqueryUI regeln zu lassen.
                        Da hat tkausl schon Recht

                        Kommentar


                        • #13
                          So, ich habe eure Ideen analysiert und umgesetzt ... und voila es funktioniert!

                          Der Feedback von Tropi und hausl haben dabei sehr geholfen.

                          Aber danke euch allen! Ihr seid meine heutigen Helden!

                          Gruss
                          Euer Elci

                          Kommentar

                          Lädt...
                          X