Marcel: mehrere Checkboxen vorselektieren --> Werte-Übergabe

Hi,

ich habe ein Formular, in das ich neben Dropdownlisten, Texteingaben und Radiobuttons auch ein Eingabefeld mit mehreren Checkboxen eingebaut habe. Der Nutzer kann mehrere Checkboxen auswählen. Nachdem alle Felder bearbeitet sind, sendet der Nutzer das Formular ab und es wird auf Konsistenz geprüft. Im Falle des Auftretens von fehlerhaften Angaben wird ein identisches Formular aufgerufen, in dem die korrekten Angaben (von Radiobuttons und Dropdownlisten) eingetragen bzw. ausgewählt sind und eine Fehlermeldung ausgegeben, die auf das fehlerhafte Feld hinweist. (Wenn alles korrekt ist, werden die Angaben noch einmal zur Kontrolle dargestellt.)

Jetzt habe ich, wie gesagt mehrere Checkboxen eingebaut, aber da funktioniert das ganze nicht so recht, bzw. ich weiß auch nicht, wie ich mehrere Checkboxen in dem neuen Formular anhaken kann. Wie übergebe ich die Werte so, dass die entsprechenden Checkboxen alle angehakt werden?

Viele Grüße

Marcel

  1. Hellihello Marcel,

    Jetzt habe ich, wie gesagt mehrere Checkboxen eingebaut, aber da funktioniert das ganze nicht so recht, bzw. ich weiß auch nicht, wie ich mehrere Checkboxen in dem neuen Formular anhaken kann. Wie übergebe ich die Werte so, dass die entsprechenden Checkboxen alle angehakt werden?

    checked

    bzw.

    checked="checked".

    Dank und Gruß,

    frankx

    1. Hi Frank,

      damit:

      checked

      bzw.

      checked="checked".

      werden die Checkboxen ja von mir vorselektiert, oder? Ich will aber ja die Angaben des Nutzers aus dem ersten Formular übergeben und damit dann die Checkboxen, die der Nutzer dort angeklickt hat in dem zweiten Formular anhaken. Wie übergebe ich die Werte des ersten Formulars an das zweite, so dass dort alle entsprechenden Checkboxen angehakt werden?

      Gruß

      Marcel

      1. Hellihello

        ungetestet.

        checked="checked".

        werden die Checkboxen ja von mir vorselektiert, oder? Ich will aber ja die Angaben des Nutzers aus dem ersten Formular übergeben und damit dann die Checkboxen, die der Nutzer dort angeklickt hat in dem zweiten Formular anhaken. Wie übergebe ich die Werte des ersten Formulars an das zweite, so dass dort alle entsprechenden Checkboxen angehakt werden?

        Das ist dann Schritt zwei:

        <input type="checkbox" name="checkbox1" <?php if (isset($_REQUEST["checkbox1"])) echo "checked";?> >

        Dank und Gruß,

        frankx

        1. Das hört sich gut an. Ich werde das morgen ausprobieren. Für heute habe ich genug. Sitze schon den ganzen Tag vorm Rechner und für morgen habe ich auch noch genug vor mir...

          Vielen Dank erstmal. Ich melde mich morgen, wenn es geklappt hat - und wenn nicht, dann sowieso... );

          Beste Grüße

          Marcel

        2. Hi,

          erstmal die gute Nachricht; es funktioniert... so halbwegs.

          Ich hab`s jetzt so gemacht:
          <input type="checkbox" name="Sp" <?php if (isset($_REQUEST["Sp"])) echo "checked";?>

          Ich habe ja das Formular, in das die eigentliche Eingabe getätigt wird. Wenn alles korrekt ist, werden die Angaben noch einmal in Textfrom dargestellt und können z.B. ausgedruckt werden. Wenn etwas schief gelaufen ist, kommt der Hinweis der Konsistenzprüfung auf den jeweiligen Fehler. Die Korrektur (zu der man auch bei korrekter Eingabe über einen Zurück-Button kommt) erfolgt, wie gesagt in einem neuen, identischen Formular. Schickt man das Formular von hier noch einmal ab und geht dann wieder zurück, werden alle immer alle Kästchen angehakt.
          Woran liegt das?

          Gruß

          Marcel

          1. Hellihello Marcel,

            Ich hab`s jetzt so gemacht:
            <input type="checkbox" name="Sp" <?php if (isset($_REQUEST["Sp"])) echo "checked";?>

            Ich habe ja das Formular, in das die eigentliche Eingabe getätigt wird. Wenn alles korrekt ist, werden die Angaben noch einmal in Textfrom dargestellt und können z.B. ausgedruckt werden. Wenn etwas schief gelaufen ist, kommt der Hinweis der Konsistenzprüfung auf den jeweiligen Fehler. Die Korrektur (zu der man auch bei korrekter Eingabe über einen Zurück-Button kommt) erfolgt, wie gesagt in einem neuen, identischen Formular. Schickt man das Formular von hier noch einmal ab und geht dann wieder zurück, werden alle immer alle Kästchen angehakt.
            Woran liegt das?

            Vielleicht, weil du den Namen der Checkbox in dem jeweiligen Request-Hash nicht gändert hast?

            Verkleiner das Problem:

            nimm zwei Boxen,
            schau dir den Quelltext nach der übermittlung an,
            poste den code.

            es darf nicht über all <?php if (isset($_REQUEST["Sp"])) echo "checked";?> stehen. es muss immer der Name der jeweiligen Box da stehen.

            var_dump($_REQUEST); könnte auch aufschluss geben.

            Dank und Gruß,

            frankx

            1. Hier die Checkboxen des ursprünglichen Formulars:
              <input type="checkbox" name="Ps" value="Ps"><i>Pleurozium schreberi</i><br>
               <input type="checkbox" name="Sp" value="Sp"><i>Scleropodium purum</i><br>
               <input type="checkbox" name="Hc" value="Hc"><i>Hypnum cupressiforme</i><br>
               <input type="checkbox" name="Tt" value="Tt"><i>Thuidium tamariscinum</i><br>
               <input type="checkbox" name="Hs" value="Hs"><i>Hylocomium splendens</i><br>

              Hier die des Korrektur-Formulars:
              <input type="checkbox" name="Ps" value="Ps"<?php if (isset($_REQUEST["Ps"])) echo "checked";?>></input><i>Pleurozium schreberi</i><br>
              <input type="checkbox" name="Sp" value="Sp"<?php if (isset($_REQUEST["Sp"])) echo "checked";?>></input><i>Scleropodium purum</i><br>
              <input type="checkbox" name="Hc" value="Hc"<?php if (isset($_REQUEST["Hc"])) echo "checked";?>></input><i>Hypnum cupressiforme</i><br>
              <input type="checkbox" name="Tt" value="Tt"<?php if (isset($_REQUEST["Tt"])) echo "checked";?>></input><i>Thuidium tamariscinum</i><br>
              <input type="checkbox" name="Hs" value="Hs"<?php if (isset($_REQUEST["Hs"])) echo "checked";?>></input><i>Hylocomium splendens</i><br>

              Die Variablen übergebe ich über eine weitere Datei, in der die entsprechenden Datenbank/SQL-Einträge geregelt werden, so:
              <input type="hidden" name="Ps" value="<?php echo $_POST[Ps];?>">
              <input type="hidden" name="Sp" value="<?php echo $_POST[Sp];?>">
              <input type="hidden" name="Hc" value="<?php echo $_POST[Hc];?>">
              <input type="hidden" name="Tt" value="<?php echo $_POST[Tt];?>">
              <input type="hidden" name="Hs" value="<?php echo $_POST[Hs];?>">

              1. Hellihello

                Hier die Checkboxen des ursprünglichen Formulars:
                <input type="checkbox" name="Ps" value="Ps"><i>Pleurozium schreberi</i><br>
                <input type="checkbox" name="Sp" value="Sp"><i>Scleropodium purum</i><br>
                <input type="checkbox" name="Hc" value="Hc"><i>Hypnum cupressiforme</i><br>
                <input type="checkbox" name="Tt" value="Tt"><i>Thuidium tamariscinum</i><br>
                <input type="checkbox" name="Hs" value="Hs"><i>Hylocomium splendens</i><br>

                Hier die des Korrektur-Formulars:
                <input type="checkbox" name="Ps" value="Ps"<?php if (isset($_REQUEST["Ps"])) echo "checked";?>></input><i>Pleurozium schreberi</i><br>
                <input type="checkbox" name="Sp" value="Sp"<?php if (isset($_REQUEST["Sp"])) echo "checked";?>></input><i>Scleropodium purum</i><br>
                <input type="checkbox" name="Hc" value="Hc"<?php if (isset($_REQUEST["Hc"])) echo "checked";?>></input><i>Hypnum cupressiforme</i><br>
                <input type="checkbox" name="Tt" value="Tt"<?php if (isset($_REQUEST["Tt"])) echo "checked";?>></input><i>Thuidium tamariscinum</i><br>
                <input type="checkbox" name="Hs" value="Hs"<?php if (isset($_REQUEST["Hs"])) echo "checked";?>></input><i>Hylocomium splendens</i><br>

                Die Variablen übergebe ich über eine weitere Datei, in der die entsprechenden Datenbank/SQL-Einträge geregelt werden, so:
                <input type="hidden" name="Ps" value="<?php echo $_POST[Ps];?>">
                <input type="hidden" name="Sp" value="<?php echo $_POST[Sp];?>">
                <input type="hidden" name="Hc" value="<?php echo $_POST[Hc];?>">
                <input type="hidden" name="Tt" value="<?php echo $_POST[Tt];?>">
                <input type="hidden" name="Hs" value="<?php echo $_POST[Hs];?>">

                Sieht doch alles prima aus. Und dann schreibt er überall "checked" da rein? Da den Quelltext nochmal checken, wenn die ganzen Checkboxen vom Browser als gechecked markiert werden.

                Dank und Gruß,

                frankx

                1. Hellihello Marcel,

                  s.a. http://html-ag.wvs-berlin.de/PHP_Tests/checkboxen_vorselektieren.php

                    
                    
                    <form name="form" method="get" action="">  
                     <br>  
                     c1: <input type="checkbox" name="c1" <?php if (isset($_REQUEST["c1"])) echo "checked";?>>  
                     <br>  
                     c2: <input type="checkbox" name="c2" <?php if (isset($_REQUEST["c2"])) echo "checked";?>>  
                     <br>  
                     c3: <input type="checkbox" name="c3" <?php if (isset($_REQUEST["c3"])) echo "checked";?>>  
                     <br>  
                     <input type="submit">  
                    </form>  
                  
                  

                  Dank und Gruß,

                  frankx