Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehler in Umfragescript, leere Variablen

Einklappen

Neue Werbung 2019

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

  • Fehler in Umfragescript, leere Variablen

    Hallo zusammen,

    vor mehreren Jahren hatte ich mir mithilfe eines Tutorials eine kleine Umfrage erstellt, die mit PHP, Sessions und MySQL lief. Unter anderem wurde mittels Prüfseite abgefragt, ob alle benötigten Daten vorhanden sind -- wenn nicht, konnte man auf die erste Seite zurückkehren und die fehlenden Angaben nachtragen (die schon gegebenen Antworten wurden in solchen Fällen angezeigt).

    Nun möchte ich diese Umfrage nach laaanger Zeit wieder aktivieren, bekomme sie aber nicht mehr zum Laufen (ich vermute, es liegt an der inzwischen geänderten PHP-Version bzw. den fehlenden Anpassungen).

    Mittels POST übergebe ich die Inhalte der ausgewählten Checkboxen und Radiobuttons an die "Prüfseite", gleichzeitig werden die Daten in die Session geschrieben. Soweit scheint alles zu klappen (Variablen und Session sind vorhanden und nicht leer). Auf fehlende Antworten wird hingewiesen, mittels Submit-Button (bzw. POST) kann der User wieder zur Ursprungsseite zurückgehen.

    Hier beginnt das Problem: Die bereits gewählten Antworten werden auf der eigentlichen Umfrageseite nicht mehr angezeigt; die entsprechenden Variablen sind leer. Auf der Umfrageseite werden die Input-Felder wie folgt aufgerufen, sowohl beim erstmaligen Laden der Seite als auch beim Zurückgehen von der Prüfseite aus (das ganze Script kann ich leider nicht posten):

    PHP-Code:
    <input type="radio" id="_02b" name="frage02a" value="<?echo $antwort02b ?>"
    <? if(isset($_POST['frage02a']) == $antwort02b) { echo "checked='checked'"; } else { echo ""; } ?> />
    Vielleicht liege ich völlig daneben, aber kann es sein, dass bei diesem Aufruf der Fehler liegt?

    Nur zur Info die alte, nicht mehr funktionierende Version:

    PHP-Code:
    <input type="radio" id="_02b" name="frage02a" value="<?echo $antwort02b ?>"
    <? if($frage02a == $antwort02b) { echo "checked='checked'"; } else { echo ""; } ?> />
    Hat jemand Tipps, was ich falsche mache?

    Besten Dank

    Chris


  • #2
    Du zeigst leider zu wenig Code! Wenn das Problem nicht nur ist, dass die Kästchen keinen Haken haben sondern die Variablen an sch tatsächlich leer sind (hast du das schon überprüft?), Dann würde ich gerne den Teil des Programms sehen, in welchem die Werte ausgelesen werden.

    Kommentar


    • #3
      Und was soll das bringen:
      PHP-Code:
      else { echo ""; } 
      Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

      Kommentar


      • #4
        und verzichte bitte auf ShortTags

        Du zeigst leider zu wenig Code!
        !!!

        LG
        https://github.com/Ma27
        Javascript Logic is funny:
        [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

        Kommentar


        • #5
          Argh, *so* wenig Code wollte ich tatsächlich nicht posten. Sorry.

          Im Folgenden ein Auszug aus der Ausgangsdatei, die geladen wird, wenn der User erstmalig die Umfrage aufruft:

          PHP-Code:
          // setzt Session-Name
          ini_set("session.name", "Umfrage");

          // Lebenszeit der Session in Sekunden
          ini_set("session.gc_maxlifetime", 1200);

          // 50% Wahrscheinlichkeit
          ini_set("session.gc_probability", 50);

          // startet Session
          session_save_path("xyz/_sessiondaten");
          @session_start();

          // Werte der Variablen werden gelöscht, damit Änderungen in die Session übernommen werden
          unset($_SESSION["frage02a"]);

          // für eindeutige ID, damit erneutes Absender der Antworten verhindert wird
          $token = md5(uniqid('token_fragebogen'));

          // beinhaltet die Werte der einzelnen Fragn und Antworten
          include_once 'value-werte.php';

          if (isset($_SESSION['__token_fragebogen']) ) {
              echo "<h1 id='token'>Du hast bereits an der Umfrage teilgenommen.</h1><br />";
              echo"</div></div></body></html>";
              exit;    
              }

          <form name="fragebogen" action="pruefe.php" method="post">

          <b><?echo $fragestellung02a ?></b>
           <ul>
          <li><input type="radio" id="_02a" name="frage02a" value="<?echo $antwort02a ?>"
          <? if(isset($_POST['frage02a']) == $antwort02a) { echo "checked='checked'"; } else { echo ""; } ?> /></li>
           <li><input type="radio" id="_02b" name="frage02a" value="<?echo $antwort02b ?>"
          <? if(isset($_POST['frage02a']) == $antwort02b) { echo "checked='checked'"; } else { echo ""; } ?> /></li>
           </ul>


          <input type="submit" id="submit" name="submit" value="Fragebogen abschicken >" title="Fragebogen abschicken" /></form>
          Wird das Formular abgeschickt, wird eine zweite Seite aufgerufen, mittels der geprüft wird, ob die erforderlichen Fragen beantwortet wurden. Wenn ja, werden die Angaben in die DB geschrieben. Wenn nicht, erscheint eine Fehlermeldung und man kann zurück zur Umfrage gehen. Die Antworten, die bereits gegeben wurden, sollten bei diesem Schritt übernommen werden:

          PHP-Code:
          // setzt Session-Name
          ini_set("session.name""Umfrage");

          // Lebenszeit der Session in Sekunden; 20 min = 1200
          ini_set("session.gc_maxlifetime"1200);

          // 50% Wahrscheinlichkeit
          ini_set("session.gc_probability"50);

          // startet Session
          session_save_path("xyz/_sessiondaten");
          @
          session_start();

          // registriert die zu speichernden Variablen
          $_SESSION["frage02a"] = $_POST['frage02a'];

          // Verbindung zur DB
          $host="abc";
          $user="def";
          ...
          ...

          // Abfrage nach Pflichtangaben

          if (empty($frage02a)) {

          echo
          " <h1>Fehler!</h1>
          Folgende Schaltfl&auml;che benutzen, um zum Fragebogen zur&uuml;ckzukehren:
          <form id='aendern' action='umfrage.php' method='post'><input type='submit' id='zurueck' value='< zurück zum Fragebogen' /></form>
          Bei folgenden Fragen fehlen die Antworten:"
          ;

          if (empty(
          $frage02a)) { echo "<dt>Frage 02:</dt><dd>" $fragestellung02a "</dd>"; }

             die();

          Kommentar

          Lädt...
          X