Hugo Zeiss: Wie erreiche ich, dass die "checkboxen" ausgewählt bleiben?

Guten morgen,

folgendes Problem:

  • 3 Checkboxen stehen zur Auswahl (offen,cancel,abbruch)
  • 1 Button ("Prüfen ...")
    Nach Auswahl der jeweiligen Checkboxen und betätigen des
    Buttons, wird das Formluar nochmals geladen und die jeweilige
    Auswahl ausgegeben. Soweit ist alles ok. Leider geht beim
    erneuten Laden des Formluars die Auswahl der Checkboxen verloren.
    Wie erreiche ich, dass nach dem erneuten Laden der Seite die
    ausgewählten Checkboxen gekennzeichnet sind? Man möchte ja
    auch später noch sehen was man ausgewählt hat.

Danke schon einmal im Voraus.

Gruß
Hugo

...
<form action="<? print $_SERVER['PHP_SELF'] ?>" method="post">
  <input type="checkbox" name="status[]" value="offen" />offen<br>
  <input type="checkbox" name="status[]" value="cancel" />cancel<br>
  <input type="checkbox" name="status[]" value="abbruch" />abbruch<br>
  <input type="submit" value="Prüfen...">
</form>
</body>
</html>
<?
if (isset($_REQUEST['status'])) {
  reset($_REQUEST['status']);
  echo implode(",",$_REQUEST['status']);
}
else {
  print "Es ist keine Option ausgewählt.\n";
}
?>

  1. Servus Hugo,

    Wie erreiche ich, dass nach dem erneuten Laden der Seite die
    ausgewählten Checkboxen gekennzeichnet sind? Man möchte ja
    auch später noch sehen was man ausgewählt hat.

    In dem Du beim Aufrufen des Forms checkst ob ein Parameter mit dem entsprechenden Wert gesetzt ist, also z.B. ob ein $_REQUEST["status"] == "offen" ist. Ist das der Fall schreibst Du in die betreffende Checkbox das Attribut das die Box ein Häkchen hat, also "checked".

    Gruss AndreD

    1. Hi AndreD

      danke für Deine Antwort, dennoch glaube ich nicht,
      dass es so einfach geht.
      Folgende Situation:
      ich wähle: offen und cancel
      Ausgabe: offen,cancel

      Könnte das Komma Probleme bereiten? Wenn ja wie könnte ich das
      umgehen?
      Nun stehen zwei bzw. mit dem Komma drei Werte im Array.
      Wenn ich nun: $_REQUEST["status"] == "offen" -> false da cancel noch
      dabei ist.
      Sehe ich das so richtig? Falls ich falsch liegen ....

      Danke für Eure Hilfe
      gruß
      Hugo

      1. Hi,

        Könnte das Komma Probleme bereiten? Wenn ja wie könnte ich das
        umgehen?
        Nun stehen zwei bzw. mit dem Komma drei Werte im Array.
        Wenn ich nun: $_REQUEST["status"] == "offen" -> false da cancel noch
        dabei ist.
        Sehe ich das so richtig? Falls ich falsch liegen ....

        Wie kommst du denn auf das Komma? $_REQUEST['status'] wird nicht funktionieren weil $status ein Array ist. Versuch es mit $status = $_POST['status'], bzw. $status = $_GET['status'] und greife mit $status[0] bis $status[2] auf die jeweiligen Values zu, z.B.

        if($status[0] == "offen") echo "checked";
        if($status[1] == "cancel") echo "checked";
        if($status[2] == "abbruch") echo "checked";

        Allerdings verstehe ich das hier nicht ganz:

        Wenn ich nun: $_REQUEST["status"] == "offen" -> false da cancel noch dabei ist.

        Willst du den Status "offen" von "cancel" abhängig machen? In dem Fall wäre das wohl

        if($status[0] == "offen" & $status[1] != "cancel") echo "checked";

        Gruß,
        small-step

        1. Hi small-step,

          danke für Deine Hilfe. Habe mein Skript nun entsprechend
          angepasst und .... hoppla alles fit.

          Gruß
          Hugo

          PS: Danke auch an die anderen !!!

      2. Hallo Hugo,

        Sehe ich das so richtig? Falls ich falsch liegen ....

        Mir ist nebenbei auch nicht ganz klar warum Du die Checkboxen in einem Array weitergibst anstatt jeden in einem eigenen Parameter also name="offen" für offen name="cancel" für cancel usw. Dann bräuchtest Du die Parameter nicht über das Array ansprechen und könnest für jeden einzeln abfragen ob dieser vorhanden ist und somit kontrollieren ob das Häkchen gesetzt ist oder nicht?

        Andernfalls passt der Lösungsvorschlag von small-step, wobei ich nicht wusste das $_REQUEST keine Arrays übergeben kann, da ich bisher selten mit dieser Superglobalen gearbeitet habe, nur mit $_GET und $_POST und da gehts...

        Gruss AndreD

        1. Hi,

          Andernfalls passt der Lösungsvorschlag von small-step, wobei ich nicht wusste das $_REQUEST keine Arrays übergeben kann, da ich bisher selten mit dieser Superglobalen gearbeitet habe, nur mit $_GET und $_POST und da gehts...

          Kann es schon, ich arbeite nur nicht gern damit :-)

          mir ging es dabei eher darum, dass das hier:
          $_REQUEST["status"] == "offen"
          nicht funktioniert weil er ja auf $_REQUEST['status'][0] zugreifen möchte, nicht auf $_REQUEST['status']. Das einzige was er bei echo $_REQUEST['status'] zu sehen bekommt ist "Array" :-)

          Gruß,
          small-step

          1. Hallo

            nicht funktioniert weil er ja auf $_REQUEST['status'][0] zugreifen möchte, nicht auf $_REQUEST['status']. Das einzige was er bei echo $_REQUEST['status'] zu sehen bekommt ist "Array" :-)

            Da gebe ich Dir mal vollkommen recht, das habe ich in der Eile nicht wirklich wahrgenommen weil ich da für ein Array auch keine Notwendigkeit dafür sah. Wie auch immer: Er kann ja auf jeden Fall den übergebenen Parameter an eine Variable übergeben und damit weiterarbeiten...

            Gruss & Danke für den Hinweis
            AndreD

  2. Moin Hugo,
    Durch ne einfache if abfrage:

    <input type="checkbox" name="status[]" value="offen" <?php if (status[offen]) echo "checked"; ?> >offen<br>

    So in etwa!
    Ugetestet!!
    TomIRL