Onlineumfrage programmieren (mehrseitiges HTML Formular an PHP übergeben)

Havoc<>

Mitglied
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:
PHP:
  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:
PHP:
  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][
 
Dafür solltest du mit [phpf]Session[/phpf] arbeiten.

Ansonsten benutz mal die Suche, hier gibt es einige ähnliche Fragen im Forum.
 
Zurück