Ankündigung

Einklappen
Keine Ankündigung bisher.

$_POST leeren

Einklappen

Neue Werbung 2019

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

  • $_POST leeren

    Hallo,

    ich bin PHP Anfänger und hab eine kleine Frage.

    Mit diesem Code prüfe ich, ob eine Uhrzeit richtig eingegeben wurde, wenn nicht z.B. 25:25 Uhr dann kommt eine Fehlermeldung. Dieses funktioniert nach meiner Meinung sehr gut

    PHP-Code:
    if (strlen($_POST['montagvon']) > 0) {
            
      
    $time $_POST['montagvon'];;

      if (
    $_POST['montagvon']
               != (
    preg_match("/^(\d{1,2}):(\d{1,2})$/"$time$matches) && ($matches[1] <= 24 && $matches[1] >= 0) && ($matches[2] <= 59 && $matches[2] >= 0) ))
          
    $errors[] = "Fehler";
      } 
    Mein HTLM Formular sieht so aus

    Code:
      <input type="text" name="montagvon" id="montagvon" class="time_input" value="<?php echo $_POST['montagvon'];?>" > -
    Jetzt möchte ich gerne wenn der Fehler ausgegeben wird dass der Wert, der in POST steht gelöscht wird aber NUR beim Fehler

    Ich dachte es geht so

    PHP-Code:
    if (strlen($_POST['montagvon']) > 0) {
            
      
    $time $_POST['montagvon'];;

      if (
    $_POST['montagvon']
               != (
    preg_match("/^(\d{1,2}):(\d{1,2})$/"$time$matches) && ($matches[1] <= 24 && $matches[1] >= 0) && ($matches[2] <= 59 && $matches[2] >= 0) ))
          
    $errors[] = "Fehler";
        
    $_POST['montagvon'] = 0;
      } 
    ABER leider bin ich auf dem falschen Weg. Könnt Ihr mir vielleicht helfen? Vielen Dank für eure Hilfe!


  • #2
    unset()?
    Wozu soll das gut sein?
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Der Hintergrund ist, wenn eine falsche Uhrzeit eingegeben wurde, sollte mein Feld wieder leer sein.

      Kommentar


      • #4
        Dann setz doch nen Leerstring.
        Zitat von nikosch
        Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

        Kommentar


        • #5
          Also du meinst so?

          PHP-Code:
          $_POST['montagvon'] = ""

          Kommentar


          • #6
            Ich nutze dafür gerne den Wert NULL:
            PHP-Code:
            $_POST['montagvon'] = null 
            darauf lässt sich dann auch schön prüfen:
            PHP-Code:
            is_null$_POST['montagvon'] ); 
            Competence-Center -> Enjoy the Informatrix
            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

            Kommentar


            • #7
              Ich hab mein Code mal um deine Zeile erweitert

              PHP-Code:
                $time $_POST['montagvon'];;

                if (
              $_POST['montagvon']
                         != (
              preg_match("/^(\d{1,2}):(\d{1,2})$/"$time$matches) && ($matches[1] <= 24 && $matches[1] >= 0) && ($matches[2] <= 59 && $matches[2] >= 0) ))
                    
              $errors[] = "Fehler";
                  
              $_POST['montagvon'] = null;
                } 
              klappt auch _aber_ wenn ein richtiger Wert eingetragen wurde, wird das Feld auch gelöscht. Das möchte ich natürlich nicht.

              Kommentar


              • #8
                Dann prüf mal deine geschweiften Klammern.
                Zitat von nikosch
                Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

                Kommentar


                • #9
                  Wie meinst du das? Alles was ich habe, steht oben. Mehr habe ich nicht. Und diese Zeile Code trifft doch nur zu wenn $_POST['montagvon'] ungleich preg_match ist

                  Kommentar


                  • #10
                    PHP-Code:
                    $bIsValid = !is_null$_POST['montagvon'] ) && strlen$_POST['montagvon'] ) > 0;


                    if ( 
                    $bIsValid ) {
                        
                        
                    preg_match'/^(\d{1,2}):(\d{1,2})$/'$_POST['montagvon'], $aMatches );
                        
                        
                    $bIsValidHours = (integer)$aMatches[1] <= 24 && (integer)$aMatches[1] >= 0;
                        
                    $bIsValidMinutes = (integer)$aMatches[2] <= 59 && (integer)$aMatches[2] >= 0;

                        if ( !
                    $bIsValidHours || !$bIsValidMinutes ) {
                            
                            
                    $aErrors[] = 'Fehler';
                            
                    $_POST['montagvon'] = null;
                        }    


                    ist ein bischen übersichtlicher vielleicht...
                    oder, um den Vergleich etwas zu vereinfachen:
                    PHP-Code:
                    $bIsValid = !is_null$_POST['montagvon'] ) && strlen$_POST['montagvon'] ) > 0;

                    $aValidHours range024 );
                    $aValidMinutes range059 );


                    if ( 
                    $bIsValid ) {
                        
                        
                    preg_match'/^(\d{1,2}):(\d{1,2})$/'$_POST['montagvon'], $aMatches );
                        
                        
                    $bIsValidTime in_array( (integer)$aMatches[1], $aValidHours ) && in_array( (integer)$aMatches[2], $aValidMinutes );

                        if ( !
                    $bIsValidTime ) {
                            
                            
                    $aErrors[] = 'Fehler';
                            
                    $_POST['montagvon'] = null;
                        }    


                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar


                    • #11
                      Vielen Dank für deine Hilfe. Hab es getestet. Jetzt habe ich folgendes Verhalten, wenn ich eine richtige Uhrzeit eingebe, dann passt alles, wenn ich z.B. 25:25 eingebe, dann bleibt er Wert weiterhin stehen und es wird keine Fehlermeldung mehr ausgegeben.

                      Kommentar


                      • #12
                        Kann ich nicht bestätigen, zumindest nicht bei der zweiten Variante, die ich Dir gepostet habe.
                        Die Prüfung und setzen des Fehlers passiert aber schon BEVOR Du die Form schreibst?!
                        Competence-Center -> Enjoy the Informatrix
                        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                        Kommentar


                        • #13
                          Mein ganzer Code Block sieht so aus

                          PHP-Code:
                          <?php
                          error_reporting
                          (E_ALL);

                          if(isset(
                          $_POST['abschicken'])){
                              
                              
                              
                          $bIsValid = !is_null$_POST['montagvon'] ) && strlen$_POST['montagvon'] ) > 0;
                              
                              
                          $aValidHours range024 );
                              
                          $aValidMinutes range059 );
                              
                              
                              if ( 
                          $bIsValid ) {
                                  
                                  
                          preg_match'/^(\d{1,2}):(\d{1,2})$/'$_POST['montagvon'], $aMatches );
                                  
                                  
                          $bIsValidTime in_array( (integer)$aMatches[1], $aValidHours ) && in_array( (integer)$aMatches[2], $aValidMinutes );
                              
                                  if ( !
                          $bIsValidTime ) {
                                      
                                      
                          $aErrors[] = 'Fehler';
                                      
                          $_POST['montagvon'] = null;
                                  }    
                              
                              }  
                          }
                          ?>
                          Und darunter dann dieses

                          Code:
                          <form name="form1" method="post" action="">
                              
                            <input type="text" name="montagvon" id="montagvon" class="time_input" value="<?php echo $_POST['montagvon'];?>" > - 
                            <p>
                              <input type="submit" name="abschicken" id="abschicken" value="Senden">
                            </p>
                          </form>
                          Aber ganz ehrlich, mein kleiner Code Block war mir persönlich am liebsten, denn ich habe später 112 Felder die geprüft werden müssen und hier deinen großen Code Block immer wieder zu kopieren ist einfach zu mächtig.

                          Kommentar


                          • #14
                            Aber ganz ehrlich, mein kleiner Code Block war mir persönlich am liebsten, denn ich habe später 112 Felder die geprüft werden müssen und hier deinen großen Code Block immer wieder zu kopieren ist einfach zu mächtig.
                            Ganz ehrlich, schon mal was von Funktionen gehört?! Dann vielleicht sogar gleich zu Klassen und Methoden übergehen.
                            Code-Blöcke kopieren klingt schon mal immer grauselig, unabhängig davon, ob Dir Dein IF-Vergleichs-Rattenschwanz besser gefällt, als meine Variante...

                            Stichwort: DRY
                            Competence-Center -> Enjoy the Informatrix
                            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                            Kommentar


                            • #15
                              Ohne Grundlagen geht es nicht. Feierabend.

                              Lerne Grundlagen | Quellensammlung
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X