multiple selectbox + checkbox mit fehlersuche

  • Hallo zusammen, bin neu hier und hätte da auch glei mal ein Problem, bei dem ich hoffe, dass mir wer weiterhelfen kann :o

    Hab ein Formular mit Textfeldern, Checkboxen und einer Selectbox, welches ein paar Pflichtfelder hat und diese sollen vorm abschicken überprüft werden, wenn was nicht passt, sollen die Fehler angezeigt werden. Bei den Textfeldern hat alles wunderbar geklappt doch leider häng ich jetzt seit Tagen fest bei der Selectbox und den Checkboxen.

    "Verschwerend" hinzu kommt noch, dass meine selectbox aus einer zweiten php Datei ausgelsen wird, der Code dazu sieht folgendermaßen aus.

    Formular:

    PHP
    <form action="<?php $_SERVER['SELF_PHP'] ?>" method="post">
    <?php
    echo "Bücher zur Auswahl *"; include("buecher.php");
    ?>

    da ist eben die zweite Datei eingebunden, welche folgendermaßen aussieht:

    Ich hab nun versucht mittels if-Abfrage zu überprüfen ob ein Feld ausgewählt wurde, aber haut nichts hin.....

    Code
    $buch = $_POST['BUECHER'];
    
    
       if(!isset($buch)){
        $errMsg[BUECHER]= "Bitte min 1 Buch auswählen.";
      }

    Ziel soll es sein, dass zuerst überprüft wird ob etwas ausgewählt wurde, wenn nicht soll ne Fehlermeldung kommen und wenn welche ausgewählt wurden, dann sollen diese markiert bleiben, auch wenn bei anderen Feldern Fehler kommen. Vll kann mir jemand weiterhelfen, ich hab ein Brett vorm Kopf :confused:

    danke lg

  • BUECHER != buecher

    Und dein SELECT-Feld wird immer übergeben, Standardwert ist bei dir "auswahl". Mit isset kommst du also nicht weit.

  • Dritter Code-Schnippsel, wir machen uns klar, was passiert:
    1. Zeile: Du setzst eine Variable namens $buch auf einen Wert in $_POST, ist er nicht gesetzt, ist er NULL
    2. Zeile: Du überprüfst, ob die soeben gesetzte Variable gesetzt ist
    Lösung: if(!isset($_POST['BUECHER']))

  • Bei $buch = $_POST['BUECHER']; gilt:

    !isset($_POST['BUECHER']) == !isset($buch)

    Probiers ruhig mal aus, hab das schoma im Forum irgendwann geschrieben :P
    Sonne hat die richtige Antwort bereits geschrieben, das Feld besitzt immer einen Wert. Daraus folgt das isset() sinnlos ist.
    Daraus folgt
    if(!empty($buch) && $buch != "auswahl")

    Im <option> muss soweit ich weiß im value="" auch der richtige Wert stehen. Select selbst bekommt kein array als variable (name="buecher" und nicht "buecher[]" ), da sinnlos. Select-feld kann immer nur 1 Wert gleichzeitig haben.

    Einmal editiert, zuletzt von Grevas (22. März 2010 um 00:31)

  • thx für die tipps und hilfestellungen, habs jetzt so gelöst und funktioniert wunderbar :)

    und die function dazu sieht so aus:

    Code
    function check_sel($index, $buch){
    
        if(isset($_POST['buch']) && (in_array($index, $_POST['buch']))){ 
            return "selected='selected'";
        } else { 
            return "";
        }
    }

    ;) gibt sicher noch besser lösungen, aber es tut was es soll und damit geb ich mich erstmal zufrieden :P

    lg

  • ;) gibt sicher noch besser lösungen, aber es tut was es soll und damit geb ich mich erstmal zufrieden :P

    lg


    Wenn du dich mit einer unsicheren Seite zufrieden gibts okay

  • Wenn du dich mit einer unsicheren Seite zufrieden gibts okay


    :roll: das mag vll unsicher sein, aber da diese seite nicht online geht sondern nur eine übung zum thema formularüberprüfung ist reichts wohl ;)

    lg

  • Damit mein Beitrag nicht ganz sinnfrei war:

    $_SERVER['SELF_PHP'] NIE, ungesichert in dein ACTION schreiben

  • Zitat von Pion

    $_SERVER['SELF_PHP'] NIE, ungesichert in dein ACTION schreiben


    $_SERVER['SELF_PHP'] ?
    Seit wann gibt es denn sowas :D *troll*
    ($_SERVER['PHP_SELF'])

    Gruß crAzywuLf :D

    Einmal editiert, zuletzt von crAzywuLf (29. März 2010 um 18:58)