Mehrseitiger Fragebogen mit php auswerten

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

  • Mehrseitiger Fragebogen mit php auswerten

    Hallo

    Ich (absoluter Neuling in Sachen php) habe folgendes (siehe weiter unten) php-Skript, welches mir bei einem 1-seitigen Fragebogen beim Drücken auf den submit-Button Daten in ein Text-File auf dem Server schreibt, und zwar folgendermassen: 0;1;99;1;2;... usw.

    Nun möchte ich einen mehrseitigen Fragebogen machen und mit möglichst wenig Aufwand, am besten, durch eine kleine Änderung dieses Skriptes, die Daten eines Benutzers in EINE ZEILE schreiben, wie dies bei einem einseitigen Fragebogen der Fall wäre.

    Ist es möglich, dieses Skript so abzuändern, dass bis zur zweitletzten Zeile eine Wertzeile, z.B. 0;1;2;1; beim Abschicken der nächsten Seite einfach weitergeführt wird, bis der Benutzer die letzte Seite ausgefüllt hat und ein nächster Benutzer mit einer neuen Zeile beginnt, oder als Alternative (um die Gefahr zu reduzieren, dass sich zwei Benuzter in die Quere kommen) für jeden Benutzer ein neues Textfile generiert wird, welches mit den Antworten auf allen Seiten aufgefüllt wird?

    ps: Für die Person die antwortet: ich verstehe leider wirklich nichts von php und es ist mir auch nicht so wichtig, welche Änderungen was zur Folge haben (wenn ich das mal so sagen darf...), froh wäre ich aber um Angaben wie für Seite 1 ist die Form-Action dieses Skript, für Seite 2 dieses, usw. Danke und liebe Grüsse Nadja

    <?php
    header("Location: https://www.unizh.ch/puk-west/ssl-dir/Ende.html");
    /* --------------------------- Modulbeginn ---------------------------*/
    /* Hier wird der PFADNAME gesetzt. Dieser darf in der Hierarchie nicht über dem
    PHP-Script stehen (dies ist durch die lokale PHP-Konfiguration bedingt) */

    $file_name ="result/results.txt";

    /* Wenn Ihr PHP-Script (exform.php) in Ihrem Verzeichnis public_html steht,
    dann wird das File "results.txt" an folgendem Ort geschrieben:
    /public_html/result/
    ----------------------------------------------------------------------- */

    // Globale Variable $row, welche eine Observation beinhaltet
    $row = "";
    // Der vom Formular gesandte Text wird aufgespalten
    while (list($key, $val) = each($HTTP_POST_VARS)) {
    // In $z wird geprueft, ob als Wert ein Array uebergeben wurde
    // Dies ist bei den Mehrfachantworten der Fall
    $z = count($HTTP_POST_VARS[$key]);
    // Wenn z < 2 dann ist keine Mehrfachantwort vorhanden
    if ($z < 2 ){
    $val2="";
    }
    // $z ist > 1 und ist somit eine Mehrfachauswahl
    else {
    // Existiert ein Wert?
    if (count($val)) {
    // Die einzelnen Werte werden herausgelesen
    for ($i=1; $i<count($val);$i++){
    $val2=$val2.$val[$i];
    }
    }
    else { echo "Error, vermutlich fehlt in Ihrem Formular ein Hidden-Feld!";}
    }
    // Die Zeichenkette fuer eine Observation (Zeile) wird zusammengestellt
    $row = $row.$val.$val2.";";
    }
    // Es folgen die Anweisungen zum Schreiben des Files:
    $output_line=$row."\n";
    $try = touch($file_name);
    if (!$try) {
    echo "<p>File cannot be opened, call Systemoperator";
    exit;
    }

    $output_stream = fopen($file_name,"a");
    $lock = flock($output_stream,2);
    $results = fputs ($output_stream, $output_line);
    //$results Gibt die laenge des Strings an
    if ($results) {
    // echo "<p> Danke, die Daten wurden aufgenommen!";
    }
    else {
    echo "<p> Die Daten konnten nicht geschrieben werden, bitte versuchen Sie es nochmals!";
    }
    $lock = flock($output_stream,3);
    fclose($output_stream);
    ?>

  • #2
    Such mal nach pass throug hier im Forum. Das dürfte interessant für dich sein.

    Kommentar


    • #3
      Sorry, war nicht hier, sondern unter den Tuts.

      Probier mal, ob du mit diesem Tut zurrecht kommst.

      Kommentar


      • #4
        PS: sag bescheid, obs klappt oder wenn du Hilfe brauchst.

        Kommentar


        • #5
          Mehrseitige Formulare

          Das ging schnell! Danke, ich schaue mir das Tutorial an und melde mich gerne, wenn ich noch Fragen habe.
          Lieber Gruss
          Nadja

          Kommentar


          • #6
            Geschafft

            Hallo, ich nochmals

            Das kann ich kaum glauben, jetzt bin ich seit Tagen auf der Suche nach einer Lösung für dieses Problem und wollte schon jemand von der Uni dafür bezahlen und jetzt diese Seite, die so klar und verständlich alles beschreibt. Super & tausend Dank!
            Noch eine Frage: Das hidden-Feld sollte ja von meinem php-Skript auch gelesen werden, dh, ich muss nichts weiter ändern, als das im Tutorial beschriebene und mein Skript wird am Schluss auch die weitergegebenen Werte in die Zeile schreiben, in der Form von 0;1;0;2; usw. Ist dem so?

            Vielen herzlichen Dank
            Nadja
            Zuletzt geändert von Nadja; 03.09.2002, 18:30.

            Kommentar


            • #7
              Das hidden-field wird mit dem Absenden der Eingaben auf der Folgeseite auch wieder übermittelt. Das geht immer so weiter, bis man auf der letzten Seite ist. Da wird dann alles in die DB oder halt dein Textfile geschrieben. (den Teil musst du dann aus deinem bestehenen Code übernehmen.)

              Kommentar


              • #8
                Eingaben von hidden-Felder werden nicht ins Textfile geschrieben

                Hallo, Tobias oder wer immer

                Ich habe das php-Skript in jede Fragebogen-Seite kopiert, ausser in die erste (Skript siehe unten (<?php wird offenbar von unserem Server verlangt)). Nun klappt zwar die Weiterleitung, aber mein php-Skript (siehe erster Beitrag) welches die Daten dann von der letzten Seite in das Textfile schreibt gibt die Eingaben in den hiddenfeldern nicht weiter, nur die Eingaben von dieser letzte Seite werden ins Textfile geschrieben.
                Muss ich evtl. das hiddenfeld auf den Seiten schon erstellen, oder geschieht dies durch php?. Woran könnte der Fehler sonst liegen?
                Eine weitere Frage, die ich habe ist, dass mein php-Skript (siehe erster Beitrag) die Daten in der Form 0;1;2; usw. in das Textfile schreibt. Übernimmt dies die Eingaben in den hiddenfeldern auch in der Art und schreibt sie ;2;0;0 usw ins Textfeld?

                <?php
                function vpassthru()
                {global $HTTP_POST_VARS, $HTTP_GET_VARS;
                reset ($HTTP_POST_VARS);

                while (list ($key, $val) = each ($HTTP_POST_VARS))
                echo "<input type=hidden name='".$key."' value=\"".htmlspecialchars(stripslashes($val))."\">";

                reset ($HTTP_GET_VARS);
                while (list ($key, $val) = each ($HTTP_GET_VARS))
                echo "<input type=hidden name='".$key."' value=\"".htmlspecialchars(stripslashes($val))."\">";
                } ;
                ?>

                Vielen Dank
                Nadja
                Zuletzt geändert von Nadja; 04.09.2002, 13:20.

                Kommentar


                • #9
                  Skript aus erster Seite abändern und an jede Fragebogenseite hängen

                  Hallo

                  Folgende Frage, aus meinem ersten Beitrag ist auch immer noch aktuell:
                  Liesse sich evtl. das Skript (siehe erster Beitrag) so abändern, dass es auf einem mehrseitigen Fragebogen erst einen neue Zeile beginnt für einen neuen Benutzer, wenn der Benutzer den Fragebogen fertig aufgefüllt hat. Evtl. auch für jeden Benutzer ein neues txt - File erstellt, welches einfach mit Eingaben im Fragebogen aufgefüllt wird.

                  D.h. Lösung 1: die Zeile des Probanden wird erst abgeschlossen, wenn die letzte Fragebogenseite fertig ausgefüllt wurde, also 0;1;2;99;3(erste Seite);1;2;4;9(2.Seite); usw. bis letzte Seite, dann wird eine neue Zeile begonnen für den nächsten User.
                  Lösung 2: Für jeden User wird ein eigenes txt-File generiert, welches (immer das gleiche Skript aufruft (siehe Skript erster Beitrag)) und alle Eingaben aller Seite in eine Zeile schreibt: 0;1;2;99(erste Seite);2;1; usw.

                  ps: ich wäre sehr sehr froh, wenn mir jemand weiterhelfen könnte! Danke,
                  Nadja
                  Zuletzt geändert von Nadja; 04.09.2002, 13:50.

                  Kommentar


                  • #10
                    Zuerst mal eine Erklärung zu den Hidden fields. Die sind genauso, wie normale text-fields. Nur, dass der Benutzer felder des Types hidden nicht sieht.

                    du must deshalb drauf achten, dass die felder auch innerhalb des Formulars sind. Also vom Submit Button angesprochen werden.

                    Kann man die Seite mal sehen?

                    Versuch mal die Variablen auf der letzten Seite zusätzlich per Echo auszugeben.

                    Kommentar


                    • #11
                      Ich bin blond

                      Hallo, ich blicke da auch nicht durch. Habe mir schon paar mal die seiten hier angesehen und ich komme einfach nicht weiter. Gibt es jemanden der mir ein Beispiel geben kann?

                      Ich habe:
                      5 Seiten mit jeweils 6 Feldern und davon textfelder, radiobutton und einige auswahlfelder, aber bei mir sendet er immer nur die daten der ersten seite.

                      Gruss Anja

                      Kommentar


                      • #12
                        Versuch es schritt für schritt. Wie es eben bei einem Tutorial üblich ist.

                        Kommentar


                        • #13
                          Schau Dir das mal an ...

                          http://www.projektp3.de/v0.1_simpleP...ll_wizard.html

                          und vergleiche die input hidden von seite zu seite(rechte maustaste, quelltext anzeigen), wenn du etwas ausfüllst.

                          Das läuft nach dem schema:

                          seite 1

                          <form action"auswahlseite2.php" method=post>

                          <select name="auswahlseite1">
                          <option value="Haus">Haus</option>
                          <option value="Dach">Dach</option>
                          <option value="Tür">Tür</option>
                          </select>

                          <input type=send>

                          </form>

                          seite 2

                          <form action"auswahlseite3.php" method=post>

                          <input type=hidden value=" <? echo $auswahlseite1; ?> ">

                          <select name="auswahlseite2">
                          <option value="Katze">Katze</option>
                          <option value="Hund">Hund</option>
                          <option value="Maus">Maus</option>
                          </select>

                          <input type=send>

                          </form>

                          seite 3

                          <form action"auswahlseite4.php" method=post>

                          <input type=hidden value=" <? echo $auswahlseite1; ?> ">
                          <input type=hidden value=" <? echo $auswahlseite2; ?> ">

                          <select name="auswahlseite3">
                          <option value="Auto">Auto</option>
                          <option value="Rad">Rad</option>
                          <option value="Moped">Moped</option>
                          </select>

                          <input type=send>

                          </form>


                          Jetzt übergibt seite1 an 2 die daten, 2 an 3 in dem hidden feld, 3 an 4 usw. Du kannst das dann noch dynamisieren, indem du die hiddenfelder per for next erzeugen läßt in php.

                          Kommentar

                          Lädt...
                          X