Onlineumfrage programmieren (mehrseitige HTML Formular an PHP übergeben)

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von Havoc][, 21.05.2007.

  1. #1 Havoc][, 21.05.2007
    Havoc][

    Havoc][ Debian && Gentoo'ler

    Dabei seit:
    27.07.2003
    Beiträge:
    898
    Zustimmungen:
    0
    Ort:
    GER/BaWü/Karlsruhe (bzw. GER/NRW/Siegen)
    Hallo zusammen,

    da ich normalerweise nicht in HTML / PHP programmiere, fehlt mir noch ein wenig die Idee zu folgendem Problem:

    Für meine Freundin soll ich eine Onlineumfrage programmieren. Das heisst, wir haben (simplifiziert *g) eine Seite mit Fragen und Radiobuttons like "das ist der fall / das ist nicht der fall" (kennt ihr ganz sicher von so Psycho-Online-Umfragen). Dieses Formular mit, im Moment, 5 Fragen übergebe ich einfach mit POST an ein PHP Script (index.html mit Formular --> function.php).

    Diese Art der Übergabe funktioniert jetzt einwandfrei. Allerdings muss ich die Fragen auf ein paar Seiten verteilen. Das Problem: das PHP Script function.php geht automatisch alle POST Variabeln durch und baut danach eine CSV Datei auf.

    Hier mal der Quellcode:

    onlineumfrage_page1.html:
    Code:
      1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
      2                       "http://www.w3.org/TR/html4/loose.dtd">
      3 <html>
      4   <head>
      5     <!-- META DATEN -->
      6     <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      7     <meta name="robots" content="noindex">
      8     <meta name="author" content="a">
      9     <meta name="author" content="a">
     10     <meta name="author" content="a">
     11
     12     <!-- TITEL -->
     13     <title>Onlineumfrage - Uni Mannheim / Psychologie</title>
     14
     15     <!-- Sytelsheet -->
     16     <link rel="stylesheet" type="text/css" href="ou_style.css">
     17   </head>
     18   <body>
     19     <!-- ÜBERSCHRIFT -->
     20     <!-- <h1 align="center"> Psychologieprojekt </h1> -->
     21     <!-- <p align="center"><img src="psychoform.png" alt="PsychoForm"></p> -->
     22     <!-- <p align="center"><img src="psychoform_oldpic_script.png" alt="PsychoForm"></p> -->
     23     <p align="center"><img src="onlineumfrage.png" alt="Onlineumfrage"></p>
     24
     25     <br><br>
     26
     27     <!-- TABELLE & FRAGEN -->
     28     <form action="ou_func.php" method="post">
     29       <table align="center" width="90%" border="0">
     30         <tr>
     31           <td colspan="2">
     32       <h3> Bitte nehmen Sie sich kurz Zeit, und beantworten Sie diesen Fragebogen.<br>
     33                  Ich bedanke mich bereits jetzt für Ihre Mithilfe. </h3>
     34     </td>
     35   </tr>
     36
     37         <tr>
     38     <td colspan="2"> <hr> </td>
     39   </tr>
     40
     41         <tr>
     42     <td width="50%"> <b>Unter welchem Geschlecht leiden Sie?</b> </td>
     43     <td width="50%"> <input type="radio" name="q1" value="1"> Männlich <br>
     44                      <input type="radio" name="q1" value="2"> Weiblich <br>
     45                      <input type="radio" name="q1" value="3"> Programmierer <br></td>
     46   </tr>
     47
     48         <tr>
     49     <td colspan="2"> <hr> </td>
     50   </tr>
     51
     52         <tr>
     53           <td width="50%"> <b> Wie alt sind Sie? </b> </td>
     54     <td width="50%"> <input type="text" size="5" name="q2"> </td>
     55   </tr>
     56
     57         <tr>
     58           <td colspan="2"> <hr> </td>
     59   </tr>
     60
     61         <tr>
     62     <td width="50%"> <b> Welches Obst mögen Sie?</b> </td>
     63     <td width="50%">
     64       <input type="checkbox" name="q3[]" value="1"> Schokolade<br>
     65       <input type="checkbox" name="q3[]" value="2"> Hanuta<br>
     66       <input type="checkbox" name="q3[]" value="3"> Testaa<br>
     67       <input type="checkbox" name="q3[]" value="4"> tt<br>
     68       <input type="checkbox" name="q3[]" value="5"> Joghurt<br>
     69     </td>
     70   </tr>
     71
     72         <tr>
     73     <td colspan="2"> <hr> </td>
     74   </tr>
     75
     76         <tr>
     77     <td width="50%"> <b> Wie schätzen Sie sich ein?</b> </td>
     78     <td width="50%">
     79       <input type="checkbox" name="q4[]" value="1"> Stabil<br>
     80       <input type="checkbox" name="q4[]" value="2"> Fahrrad<br>
     81       <input type="checkbox" name="q4[]" value="3"> Auto<br>
     82       <input type="checkbox" name="q4[]" value="4"> Birne<br>
     83       <input type="checkbox" name="q4[]" value="5"> Cola<br>
     84     </td>
     85   </tr>
     86
     87         <tr>
     88           <td colspan="2"> <hr> </td>
     89   </tr>
     90
     91         <tr>
     92     <td width="50%"> <b> Auf welcher Uni waren Sie?</b> </td>
     93     <td width="50%">
     94             <select name="q5[]" size="5" multiple>
     95         <option value="1">Mannheim</option>
     96         <option value="2">Karlsruhe</option>
     97         <option value="3">Dresden</option>
     98         <option value="4">Berlin</option>
     99         <option value="5">Kölleee!</option>
    100       </select>
    101     </td>
    102   </tr>
    103
    104         <tr>
    105     <td colspan="2"> &nbsp; </td>
    106   </tr>
    107
    108         <tr align="center">
    109           <td colspan="2"> <input type="submit" value="OK"> </td>
    110   </tr>
    111
    112         <tr align="center">
    113     <td colspan="2"> <input type="reset" value="Reset"> </td>
    114         </tr>
    115       </table>
    116     </form>
    117
    118     <br><br>
    119
    120     <p align="left">
    121       <a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01 Transitional" height="31" width="88" border="0    "></a>
    122     </p>
    123   </body>
    124 </html>
    
    function.php:
    Code:
      1 <html>
      2   <body>
      3     <?php
      4       $filename     = "onlineumfrage.cvs";
      5       $ueberschrift = "ID;";
      6       $datensatz    = "";
      7       $datenarray   = "";
      8       $zaehlerid    = 1;
      9       $irgendwas    = "";
     10
     11       try
     12       {
     13         if (!file_exists($filename))
     14         {
     15           // Wenn die Datei noch nicht existiert, Überschrift erstellen.
     16           $datei = fopen($filename,"w+");
     17           for ($i = 1; $i <= count($_POST); $i++)
     18           {
     19             $ueberschrift .= "q".$i.";";
     20           }
     21           fwrite($datei, $ueberschrift . "IP Adresse" . "Hostname" . "Uhrzeit" . "Datum" . "\n");
     22         } else
     23         {
     24           // Wenn die Datei schon existiert, nur öffnen.
     25           $datei = fopen($filename,"a+");
     26         }
     27
     28         // Datei an den Anfang setzten...
     29         fseek($datei, 0, SEEK_SET);
     30
     31         // ID raussuchen...
     32         while(!feof($datei))
     33         {
     34           fgets($datei);
     35           $zaehlerid++;
     36         }
     37
     38         // Wieder ans Ende setzten.
     39         fseek($datei, 0, SEEK_END);
     40
     41         // ID setzten...
     42         $datensatz .= ($zaehlerid) . ";";
     43
     44         // Datensätze in String schreiben...
     45         for ($i = 1; $i <= count($_POST); $i++)
     46         {
     47           if(is_array($_POST["q".$i]))
     48           {
     49             $datenarray = "";
     50             for ($z=0; $z < count($_POST["q".$i]); $z++)
     51             {
     52               $datenarray .= $_POST["q".$i][$z] . ",";
     53             }
     54
     55             $datensatz .= substr($datenarray,0,strlen($datenarray) -1) . ";";
     56           } else
     57           {
     58             $datensatz .= $_POST["q".$i] . ";";
     59           }
     60         }
     61
     62         // String mit Datensätzen in Datei schreiben...
     63         fwrite($datei, $datensatz . $HTTP_SERVER_VARS["REMOTE_ADDR"] . ";" . gethostbyaddr($HTTP_SERVER_VARS["REMOTE_ADDR"]) . ";" . date("H:i:s") . ";" .date("d.m.Y") . ";"     . "\n");
     64
     65         // Datei schließen
     66         fclose($datei);
     67
     68         // "Vielen Dank" - Ausgeben...
     69         echo "<h1 align=\"center\"> Vielen dank für Ihre Mithilfe.</h1><br>";
     70         echo "<h2 align=\"center\"> Ihre ID lautet: " . $zaehlerid . "<br><br><br>";
     71         echo "<p align=\"center\"> Sie können das Fenster jetzt schließen.</p>";
     72       } catch (Exception $e)
     73       {
     74         echo "<h2 align=\"center\" color=red> FEHLER! Ihr Onlinefragebogen wurde nicht gespeichert. Es ist folgender Fehler aufgetreten: " .  $e->getMessage();
     75
     76       }
     77     ?>
     78   </body>
     79 </html>
    
    Ich hoffe ihr könnt mir einen Tipp geben, wie ich das Ding am besten weiter ausbaue um weiterhin automatisiert die Datei zu schreiben.

    Vielen dank im Voraus.

    BTW: Die Fragen sind nicht ausgearbeitet. Es ist also nur zu debug und Testzwecken irgendwelcher unsinn dadrin.

    Havoc][
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. dmaphy

    dmaphy Routinier

    Dabei seit:
    16.04.2004
    Beiträge:
    482
    Zustimmungen:
    0
    Ort:
    Hamburg
    Wenn ich das richtig verstehe, willst du ja die Fragen auf mehrere Seiten verteilen, und brauchst dann quasi eine Art Zwischenspeicher. In diesem Fall ist der Themenbereich rund um Sessions mit PHP sicherlich interessant für dich. Einmal verstanden ist das ziemlich einfach. :)

    http://www.php.net/manual/de/ref.session.php

    Ich stelle mir da im Moment zwei konkretere Lösungswege vor:
    1 . Du hast mehrere HTML-Formulare, allerdings in .php-Dateien, sprich page1.php, page2.php usw. jeweils in denen hast du am Anfang dann ein kurzes Script stehen, wo du die Daten der vorherigen Seite in die Session speicherst. (Diesen Anfang kann man dann sicherlich auch per include() einbinden, macht Sinn)
    2. Du hast nur eine umfrage.php in die du per include() immer nur das HTML-Formular auswechselst. Würde dann ungefähr so aussehen: umfrage.php?page=1, umfrage.php?page=2 usw.

    Vielleicht hat ja jemand noch andere Ansätze ;)

    Ich persönlich würde zu meiner zweiten Idee tendieren^^
     
  4. #3 Havoc][, 21.05.2007
    Havoc][

    Havoc][ Debian && Gentoo'ler

    Dabei seit:
    27.07.2003
    Beiträge:
    898
    Zustimmungen:
    0
    Ort:
    GER/BaWü/Karlsruhe (bzw. GER/NRW/Siegen)
    Hallo dmaphy,

    vielen dank für deine Antwort. Ich dachte das es vielleicht noch einfacher geht. Aber wahrscheinlich sind das die geschicktesten Lösungen. Bin im Moment dahingehend fleißig am umbauen. Scheint soweit sogar zu funktionieren. Ich hoffe das bleibt weiterhin unproblematisch.

    Eine Frage hätte ich allerdings noch. Seit dem ich auf eine SESSION umgestiegen bin, funktioniert die Variabel "$HTTP_SERVER_VARS["REMOTE_ADDR"]" nicht mehr (Variabel ist leer). Irgendeine Idee warum das so ist?

    Havoc][
     
  5. #4 Kaninchenbraten, 22.05.2007
    Kaninchenbraten

    Kaninchenbraten Jungspund

    Dabei seit:
    06.05.2007
    Beiträge:
    12
    Zustimmungen:
    0
    $HTTP_SERVER_VARS ist keine globale Variable.
    Eventuell hast Du sie in einer Funktion benutzt?

    Versuchs mal mit $_SERVER['REMOTE_ADDR'];


    Gruss
     
  6. #5 Havoc][, 22.05.2007
    Havoc][

    Havoc][ Debian && Gentoo'ler

    Dabei seit:
    27.07.2003
    Beiträge:
    898
    Zustimmungen:
    0
    Ort:
    GER/BaWü/Karlsruhe (bzw. GER/NRW/Siegen)
    Doch. Funktioniert auch schon wieder :-). Hab sie einfach in eine $_SESSION Var geschrieben. Seit dem funktioniert es wieder.

    Havoc][
     
Thema:

Onlineumfrage programmieren (mehrseitige HTML Formular an PHP übergeben)

Die Seite wird geladen...

Onlineumfrage programmieren (mehrseitige HTML Formular an PHP übergeben) - Ähnliche Themen

  1. Software für Onlineumfragen?

    Software für Onlineumfragen?: Ich suche eine Software zur Erstellung von Onlineumfragen.... Kennt einer zufällig was in der Richtung? Bitte keine Anbieter von sowas...würde...
  2. Kinderleicht: Roboter programmieren mit Open Roberta

    Kinderleicht: Roboter programmieren mit Open Roberta: Das Fraunhofer-Institut für Intelligente Analyse- und Informationssysteme (IAIS), Google und Lego haben das Programm »Open Roberta« gestartet....
  3. PyQT: Wie programmieren?

    PyQT: Wie programmieren?: Hallo, ich weis nicht, ob dieser Beitrag doppelt gepostet wurde, aber es gab da einen kleinen Fehler mit Tapatalk. Ich bin jetzt neu in Python...
  4. PyQT: Wie programmieren?

    PyQT: Wie programmieren?: Hallo, mit welchen Programm schreibe ich am besten in PyQT? Danke im Vorraus Lexi Sent from my iPad using Tapatalk - now Free
  5. Wer hat lust dieses App von Win in Linux zu Programmieren 256kb

    Wer hat lust dieses App von Win in Linux zu Programmieren 256kb: Hi zusammen, wäre es möglich das schnell mal in ein Debian Programm zu schreiben, ich habe keine ahnung vom Programmieren, ich benutze es schon...