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

  • C-h-r-i-s
    hat ein Thema erstellt Fehler in Umfragescript, leere Variablen.

    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

  • C-h-r-i-s
    antwortet
    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();

    Einen Kommentar schreiben:


  • Ma27
    antwortet
    und verzichte bitte auf ShortTags

    Du zeigst leider zu wenig Code!
    !!!

    LG

    Einen Kommentar schreiben:


  • uha
    antwortet
    Und was soll das bringen:
    PHP-Code:
    else { echo ""; } 

    Einen Kommentar schreiben:


  • arkadiuszpalusz
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X