Formularauswertung: dynamische Anzahl an Checkboxgruppen

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

  • Formularauswertung: dynamische Anzahl an Checkboxgruppen

    Hallo zusammen.

    Ich habe ein (funktionerendes) Script, welches Fragen aus einer DB ausliest
    und diese mit Antwortmöglichkeiten anzeigt ("Frage.php").
    Die Antworten des Users werden in einer neuen Seite ("antwortpruefen.php") ausgewertet.

    Das Prinzip einer Frage mit drei Antwortmöglichkeiten:

    Frage.php (simple Form)
    PHP-Code:
    echo "Hier steht irgendeine Frage...<br>";
    echo 
    "<form action=\"antwortpruefen.php\" method=\"post\">";
    echo 
    "<input type=\"checkbox\" name=\"seite[]\" value=\"Antwort1\"> Antwort1<br>";
    echo 
    "<input type=\"checkbox\" name=\"seite[]\" value=\"Antwort2\"> Antwort2<br>";
    echo 
    "<input type=\"checkbox\" name=\"seite[]\" value=\"Antwort3\"> Antwort3<br>";
    echo 
    "<input type=\"submit\" value=\"Antwort prüfen\">";
    echo 
    "</form>"
    antwortpruefen.php (simple Form)

    PHP-Code:
    //Variablen-Array aus Frage.php übernehmen
    $seite $_POST['seite'];

    foreach (
    $seite as $ergebnis
    {
        echo 
    "$ergebnis<br>";

    Soweit so gut.

    Jetzt habe ich aber folgendes Problem im ersten Script "Frage.php":
    Ich möchte nicht nur immer EINE Frage anzeigen,
    sondern eine ganze Reihe Frage untereinander auflisten lassen.
    Dafür müsste aber das Array Seite[] so umgebaut werden:

    Für Frage 1:
    seite1[]
    seite1[]
    seite1[], dann

    für Frage 2:
    seite2[]
    seite2[]
    seite2[], dann

    für Frage 3:
    seite3[]
    seite3[]
    seite3[],

    für Frage "n" (die Anführungsstriche bitte wegdenken):
    Seite"n"[]
    Seite"n"[]
    Seite"n"[] usw. je nachdem, wieviele Fragen angezeigt werden sollen

    Die Anzahl der angezeigten Fragen ist variabel,
    daher kann ich die Ziffern 1-n nicht fest vergeben -
    sonst wäre das Prinzip wie oben.
    Das muss dynamisch geschehen und damit komme ich nicht zurecht.


    Mein Lösungsansatz:
    ---------------------------
    Ich habe versucht das Array im Formular über eine Schleife for($i = 0 etc.) zusammenzubauen:

    Das sieht dann im Formular so aus:
    PHP-Code:
    name='"seite" . $i . "[]"' 
    seite . $i . "[]" - soll dann seite1[] etc. ergeben (im Ausgabecode sieht das auch so aus)

    aber ich weiß nicht,
    a) ob das richtig ist und
    b) wie ich das auswerte. Eine Übernahme der Formularwerte mit

    PHP-Code:
    //Auslesen Anzahl der Fragen aus Frage.php...
    //Schleife bauen
    //in der Schleife jedes Array Seite1-Seite"n" holen 
    $_POST['seite' $i]  //DAT IS MURKS!!! 
    klappt nicht. Hier habe ich mich festgefressen u.
    komme nicht weiter.

    Ich brauche irgendeine Schleife, die die
    Anzahl der Fragen aus dem ersten Formular ausliest
    (aus hiddenfeld möglich - o.k.),

    und

    dann das $_POST-Statement Punkt für Punkt ausliest,
    damit ich jedes Array Seite1 bis Seite"n" in
    das neue Dokument bekomme.

    Kann mir jemand sagen, wie ich das anstellen muss?
    Ich hoffe, ich habe mich klar ausgedrückt,

    vielen Dank schon mal.

    OlliU

  • #2
    Code:
    <input type="checkbox" name="ar[0][]" />
    <input type="checkbox" name="ar[0][]" />
    <input type="checkbox" name="ar[1][]" />
    <input type="checkbox" name="ar[1][]" />
    etc.
    schaue anschließend ins $_POST rein, dann siehst du, wie du diese struktur benutzen kannst.

    Kommentar


    • #3
      Hallo penicillin!

      Vielen Dank für Deine Hilfe, das war der richtige Tipp:
      Problem gelöst :-)

      Wenn ich Deinen Code in eine Schleife baue und die Ziffern von seite[0][], seite[1][] etc. durch eine Variable ersetze, bekomme ich genau das, was ich haben wollte.
      Eine beliebige Anzahl an Fragen, deren Anzahl hier exemplarisch in $anzahlschleifendurchlauf gespeichert sein soll.
      Für alle, die den Thread hier lesen u. interessiert sind, der Beispielcode:

      PHP-Code:
      echo "<form action=\"antwortpruefen.php\" method=\"post\">";
      for (
      $i=1;$i<$anzahlschleifendurchlauf;$i++)
      {
          echo 
      "Hier steht irgendeine Frage Nr. $i...<br>";
          echo 
      "<input type=\"checkbox\" name=\"seite[$i][]\" value=\"Antwort1\"> Antwort1<br>";
          echo 
      "<input type=\"checkbox\" name=\"seite[$i][]\" value=\"Antwort2\"> Antwort2<br>";
          echo 
      "<input type=\"checkbox\" name=\"seite[$i][]\" value=\"Antwort3\"> Antwort3<br>";
          echo 
      "<br><br>";
      }
      echo 
      "<input type=\"submit\" value=\"Antwort prüfen\">";
      echo 
      "</form>"
      Die Weiterverarbeitung dann z.B. wie folgt:

      PHP-Code:
      //$seite enthält ein mehrdimensionales Array
      $seite $_POST['seite'];

      foreach (
      $seite as $ergebnis
      {
          echo 
      implode("|",$ergebnis) . "<br>";

      Olliu

      Kommentar

      Lädt...
      X