Übung Umfragemodul

Erstelle für ein Content-Management-System (CMS) ein Modul, welches eine Umfrage realisiert. Der Webmaster des CMS soll im laufenden Betrieb über eine Eingabemaske Umfragen erstellen und bearbeiten können.

Textdatei und Datenbank

Eine Umfrage besteht aus einem Titel und maximal fünf Auswahlmöglichkeiten. Der Titel findet sich in einer Textdatei, die Auswahlmöglichkeiten in einer Datenbank.

auswahlvarchar(50)
zaehlervarchar(4)

Backend (backend.php)

Erstelle eine PHP-Datei namens backend.php, in der der Webmaster die Umfrage aktualisieren bzw. durch eine neue Umfrage mit zurückgesetzten Zählern ersetzen kann, mit folgenden Feldern:

Frontend (abstimmung.php)

Abstimmungsergebnis (ergebnis.php)

Nach getätigter Umfrage soll eine Darstellung der Online-Umfrage am Bildschirm ausgegeben werden.


Lösung

backend.php

<html>
<head>
<title></title>
</head>
<body text="#FFFFFF" bgcolor="#2F2F2F" link="##0060FF" alink="#FFFFFF" vlink="##0060FF">
 
<div align="center"><h1>Bearbeiten der Umfrage</h1></div>
<hr>
 
<?php
if (isset($_POST["senden"]))
   {
    echo "<h3>Die &Auml;nderungen wurden gespeichert!</h3>\n<hr>\n\n";
    $titel=$_POST["titel"];
    $file=fopen("titel.txt", "w");
    fputs($file, $titel);
    fclose($file);
 
    include("config.inc.php");
    for ($i=1; $i<=5; $i++)
       {
        $o=$_POST["option$i"];
        $a=$_POST["anzahl$i"];
        $sql="UPDATE $tabelle SET auswahl='$o', anzahl='$a' WHERE id=$i;";
        $result=mysql_query($sql);
       }
    mysql_close($verbindung);
   }
$file=fopen("titel.txt", "r");
$titel=fgets($file);
fclose($file);
?>
<form action="backend.php" method="POST">
Titel der Umfrage: <input type="Text" name="titel" value="<?php echo $titel; ?>" size="70"><br><br>
<?php
include("config.inc.php");
 
$sql="SELECT * FROM $tabelle;";
$result=mysql_query($sql);
for ($i=1; $i<=5; $i++)
   {
    $option=mysql_result($result, $i-1, 1);
    $count=mysql_result($result, $i-1, 2);
    if($option=="")
      $count="";
    echo "Option $i: <input type=\"Text\" name=\"option$i\" value=\"$option\" size=\"50\" maxlength=\"50\">";
    echo " Anzahl: <input type=\"Text\" name=\"anzahl$i\" value=\"$count\" size=\"4\" maxlength=\"50\"><br>\n";
   }
mysql_close($verbindung);
?>
<br>
<input type="Submit" name="senden" value="Speichern"> <input type="reset">
</form>
 
</body>
</html>


abstimmung.php

<html>
<head>
<title></title>
</head>
<body text="#FFFFFF" bgcolor="#2F2F2F" link="##0060FF" alink="#FFFFFF" vlink="##0060FF">
 
<div align="center"><h1>Umfrage</h1></div>
<hr>
 
<?php
$file=fopen("titel.txt", "r");
$titel=fgets($file);
fclose($file);
echo "<h3>$titel</h3>";
echo "<form action=\"ergebnis.php\" method=\"POST\">\n";
include("config.inc.php");
$sql="SELECT * FROM $tabelle WHERE auswahl!='';";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
for ($i=0; $i<$count; $i++)
   {
    $id=mysql_result($result, $i, 0);
    $auswahl=mysql_result($result, $i, 1);
    echo "<input type=\"radio\" name=\"auswahl\" value=\"$id\"> $auswahl<br>\n";
   }
?>
<br>
<input type="Submit" name="senden" value="Abstimmen">
</form>
 
<a href="ergebnis.php">Zum Ergebnis</a>
 
</body>
</html>


ergebnis.php

<html>
<head>
<title></title>
</head>
<body text="#FFFFFF" bgcolor="#2F2F2F" link="##0060FF" alink="#FFFFFF" vlink="##0060FF">
 
<div align="center"><h1>Ergebnis</h1></div>
<hr>
 
<?php
 
include("config.inc.php");
 
if (isset($_POST["senden"]))
   {
    $id=$_POST["auswahl"];
    $sql="SELECT anzahl FROM $tabelle WHERE id=$id;";
    $result=mysql_query($sql);
    $stimmen=mysql_result($result, 0, 0)+1;
    $sql="UPDATE $tabelle SET anzahl=$stimmen WHERE id=$id";
    $result=mysql_query($sql);
   }
 
$file=fopen("titel.txt", "r");
$titel=fgets($file);
fclose($file);
echo "<h3>$titel</h3>";
 
$sql="SELECT * FROM $tabelle WHERE auswahl!='';";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
$alle=0;
$max=0;
for ($i=0; $i<$count; $i++)
   {
    $alle=$alle+mysql_result($result, $i, 2);
    if (mysql_result($result, $i, 2)>$max)
       $max=mysql_result($result, $i, 2);
   }
echo "<br>Es wurden <b>$alle Stimmen</b> abgegeben!<br><br>\n\n";
 
for ($i=0; $i<$count; $i++)
   {
    $auswahl=mysql_result($result, $i, 1);
    $stimmen=mysql_result($result, $i, 2);
    $p=round((($stimmen/$alle)*100), 1);
    $p2=round(($stimmen/$max)*150);
    echo "<b>$auswahl</b><br>\n<i>$stimmen Stimmen ($p %)</i><br><img src=\"$i.gif\" width=\"$p2\" height=\"8\"><br><br>\n\n";
   }
?>
 
<a href="abstimmung.php">Zurück zur Abstimmung</a>
 
</body>
</html>