Ankündigung

Einklappen
Keine Ankündigung bisher.

$_POST leeren

Einklappen

Neue Werbung 2019

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

  • A1B2C3
    hat ein Thema erstellt $_POST leeren.

    $_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!

  • Arne Drews
    antwortet
    Für mich ist einfach wichtig, dass ich pro Feld also in diesem Fall „montagvon“ jeweils eine eigene Fehlermeldung definieren kann, wenn das möglich ist, bin ich gerne bereit auch eine Funktion zu nehmen.
    Stichwort: Assoziative Arrays!
    Gehört nebenbei bemerkt übrigens auch zu den Grundlagen!

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    Sorry aber Funktionen sind beim besten Willen keine aber auch wirklich keine Grundlagen.
    Erstens doch und zweitens hat er das nie in Bezug gesetzt!

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von nikosch Beitrag anzeigen
    Ohne Grundlagen geht es nicht. Feierabend.

    Lerne Grundlagen | Quellensammlung
    Sorry aber Funktionen sind beim besten Willen keine aber auch wirklich keine Grundlagen. Was ich in meinem ersten Posting geschrieben habe, das sind Grundlagen.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Sorry ich sehe es jetzt erst dass du $aErrors genommen hast. Jetzt klappt es auch bei mir, wenn ich es wieder in $errors ändere.

    Vielen Dank für deine Hilfe. Ich werde jetzt mal schauen wie ich daraus vielleicht eine kleine Einfache Funktion basteln kann, denn du hast recht das ganze 112 mal zu kopieren wird einfach sehr unübersichtlich. Muss ich später etwas ändern muss ich dieses an 112 Stellen machen.

    Für mich ist einfach wichtig, dass ich pro Feld also in diesem Fall „montagvon“ jeweils eine eigene Fehlermeldung definieren kann, wenn das möglich ist, bin ich gerne bereit auch eine Funktion zu nehmen.

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    Deine Variante geht ja nicht, also ist sie doch nicht besser wie meine?
    Meine Variante funktioniert, habe sie selber getestet mit Deinen 25:25 => Fehler wurde gesetzt und $_POST['montagvon'] war NULL.

    Bspw. fällt mir auf, daß Du $errors verwendet hast, ich hingegen $aErrors.
    Wenns bei Dir nicht klappt, liegts nicht an dem Code-Block!

    Aber es ist Dir überlassen, ob Du lieber Deinen verwenden möchtest, ich zwing Dir hier nichts auf...

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Hab ich aber etwas weiter oben, dass deine Variante nicht funktioniert, du allerdings hast geschrieben dass du das nicht bestätigen kannst.

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    Ach so... Das muß einem doch gesagt werden...

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von Arne Drews Beitrag anzeigen
    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
    Deine Variante geht ja nicht, also ist sie doch nicht besser wie meine?

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Ohne Grundlagen geht es nicht. Feierabend.

    Lerne Grundlagen | Quellensammlung

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    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

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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.

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    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?!

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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.

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    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;
        }    


    Einen Kommentar schreiben:

Lädt...
X