PHP (-Mysql) Poll

phpMars

Erfahrenes Mitglied
Hi, kann mir einer sagen wie ich einen PHP Poll mache kann wenns
besser ist mit mysql (wenn man es überhaupt braucht)...die daei mit
den ergebnisen sollte sich dann in einem pop up fenster öffnen...und
in balken + anzahl dargestelt werden.

thx.

wäre auch schön wenn ihr hier ne fertige datei hättet die ich dann
nur noch bei mir anpassen muss, ;)
 
hab mal was kleines gebastelt

MySQL-Dumb:
Code:
CREATE TABLE poll (
   id int(11) NOT NULL auto_increment,
   sehr_gut int(11),
   gut int(11),
   mittelmaessig int(11),
   schlecht int(11),
   sehr_schlecht int(11),
   PRIMARY KEY (id)
);

poll.php:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
	<title>Untitled</title>
</head>

<body>

<?php
$host="DEINHOSTNAME";
$user="DEINUSERNAME";
$pass="DEINPASSWORT";
$db="DEINEDATENBANK";
$conn=mysql_connect($host, $user, $pass) or die ("Es konnte leider keine Verbindung zur Datenbank erstellt werden");
$auswahl=mysql_select_db($db) or die ("Es konnte keine Datenbank ausgew&auml;hlt werden");
if (isset($submit)) {
   switch ($poll) {
		     case 5:
	   		 	  $eingabe=mysql_query("INSERT INTO poll (sehr_gut, gut, mittelmaessig, schlecht, sehr_schlecht) VALUES ('1', '0', '0', '0', '0')");
				  break;
	   		 case 4:
	   		 	  $eingabe=mysql_query("INSERT INTO poll (sehr_gut, gut, mittelmaessig, schlecht, sehr_schlecht) VALUES ('0', '1', '0', '0', '0')");
				  break;
	   	     case 3:
	   		 	  $eingabe=mysql_query("INSERT INTO poll (sehr_gut, gut, mittelmaessig, schlecht, sehr_schlecht) VALUES ('0', '0', '1', '0', '0')");
				  break;
	   	     case 2:
	   		 	  $eingabe=mysql_query("INSERT INTO poll (sehr_gut, gut, mittelmaessig, schlecht, sehr_schlecht) VALUES ('0', '0', '0', '1', '0')");
				  break;
	   		 case 1:
	   		 	  $eingabe=mysql_query("INSERT INTO poll (sehr_gut, gut, mittelmaessig, schlecht, sehr_schlecht) VALUES ('1', '0', '0', '0', '0')");
				  break;
   }
}
$auslesen=mysql_query("SELECT SUM(sehr_gut) AS sehr_gut, SUM(gut) AS gut, SUM(mittelmaessig) AS mittelmaessig, SUM(schlecht) AS schlecht, SUM(sehr_schlecht) AS sehr_schlecht, COUNT(id) AS anzahl FROM poll") or die ("inkorrekter Datenbank-Query");
$ausgabe=mysql_fetch_array($auslesen);
$anzahl=$ausgabe["anzahl"];
$votes_sehr_gut=$ausgabe["sehr_gut"];
$votes_gut=$ausgabe["gut"];
$votes_mittelmaessig=$ausgabe["mittelmaessig"];
$votes_schlecht=$ausgabe["schlecht"];
$votes_sehr_schlecht=$ausgabe["sehr_schlecht"];
$prozent_sehr_gut=floor(100/$anzahl*$votes_sehr_gut);
$prozent_gut=floor(100/$anzahl*$votes_gut);
$prozent_mittelmaessig=floor(100/$anzahl*$votes_mittelmaessig);
$prozent_sehr_schlecht=floor(100/$anzahl*$votes_sehr_schlecht);
$prozent_schlecht=floor(100/$anzahl*$votes_schlecht);
?>

<table cellpadding=0 cellspacing=0 border=0 width=550>
	   <tr>
	   	   <td width=250>sehr gut</td>
		   <td width=120><img src="balken.gif" height=5 width=<?php echo $prozent_sehr_gut; ?>></td>
		   <td width=100><?php echo $prozent_sehr_gut."%&nbsp;&nbsp;".$votes_sehr_gut."/".$anzahl; ?></td>
	   </tr>
	   <tr>
	   	   <td width=250>gut</td>
		   <td width=120><img src="balken.gif" height=5 width=<?php echo $prozent_gut; ?>></td>
		   <td width=100><?php echo $prozent_gut."%&nbsp;&nbsp;".$votes_gut."/".$anzahl; ?></td>
	   </tr>
	   <tr>
	   	   <td width=250>mittelm&auml;ssig</td>
		   <td width=120><img src="balken.gif" height=5 width=<?php echo $prozent_mittelmaessig; ?>></td>
		   <td width=100><?php echo $prozent_mittelmaessig."%&nbsp;&nbsp;".$votes_mittelmaessig."/".$anzahl; ?></td>
	   </tr>
	   <tr>
	   	   <td width=250>schlecht</td>
		   <td width=120><img src="balken.gif" height=5 width=<?php echo $prozent_schlecht; ?>></td>
		   <td width=100><?php echo $prozent_schlecht."%&nbsp;&nbsp;".$votes_schlecht."/".$anzahl; ?></td>
	   </tr>
	   <tr>
	   	   <td width=250>sehr schlecht</td>
		   <td width=120><img src="balken.gif" height=5 width=<?php echo $prozent_sehr_schlecht; ?>></td>
		   <td width=100><?php echo $prozent_sehr_schlecht."%&nbsp;&nbsp;".$votes_sehr_schlecht."/".$anzahl; ?></td>
	   </tr>
</table>
<form name="poll" method="post" action="<?php echo $PHP_SELF; ?>">
<select name="poll">
		<option name="sehr_schlecht" value="1">sehr schlecht</option>
		<option name="schlecht" value="2">schlecht</option>
		<option name="mittelmaessig" value="3">mittelm&auml;ssig</option>
		<option name="gut" value="4">gut</option>
		<option name="sehr_gut" value="5" selected>sehr gut</option>
</select>&nbsp;
<input type="submit" name="submit" value="vote">
</form>

</body>
</html>

es muss aber noch eine grafik dabei sein.
1x1px größe reicht vollkommen aus.

ich hoffe das hilft dir!
greets daIllu ;-)
 
Zuletzt bearbeitet:
;) danke!
werd mal schaun ob ich es hinbekomme. Das mit der Grafik is kein problem :)
ähm beim "MySQL-Dumb" soll ich das in ne datei machen und dann im i-net öffnen oder per hand machen?....muss doch da irgendwie die mysql daten auch dazu schreiben oder?

[edit]

PHP:
<?php
$host="DEINHOSTNAME";
$user="DEINUSERNAME";
$pass="DEINPASSWORT";
$db="DEINEDATENBANK";
$conn=mysql_connect($host, $user, $pass) or die ("Es konnte leider keine Verbindung zur Datenbank erstellt werden");
$auswahl=mysql_select_db($db) or die ("Es konnte keine Datenbank ausgew&auml;hlt werden");
if (isset($submit)) {
   switch ($poll) {
             case 5:
                      $eingabe=mysql_query("INSERT INTO poll (sehr_gut, gut, mittelmaessig, schlecht, sehr_schlecht) VALUES ('1', '0', '0', '0', '0')");
                  break;
                case 4:
                      $eingabe=mysql_query("INSERT INTO poll (sehr_gut, gut, mittelmaessig, schlecht, sehr_schlecht) VALUES ('0', '1', '0', '0', '0')");
                  break;
                case 3:
                      $eingabe=mysql_query("INSERT INTO poll (sehr_gut, gut, mittelmaessig, schlecht, sehr_schlecht) VALUES ('0', '0', '1', '0', '0')");
                  break;
                case 2:
                      $eingabe=mysql_query("INSERT INTO poll (sehr_gut, gut, mittelmaessig, schlecht, sehr_schlecht) VALUES ('0', '0', '0', '1', '0')");
                  break;
                case 1:
                      $eingabe=mysql_query("INSERT INTO poll (sehr_gut, gut, mittelmaessig, schlecht, sehr_schlecht) VALUES ('1', '0', '0', '0', '0')");
                  break;
   }
}

muss da beim letzten nicht die eins am ende sein? also so=

PHP:
                case 1:
                      $eingabe=mysql_query("INSERT INTO poll (sehr_gut, gut, mittelmaessig, schlecht, sehr_schlecht) VALUES ('0', '0', '0', '0', '1')");
                  break;
   }
}

???
 
Zuletzt bearbeitet:
j0 du hast recht
beim:

case 1: muss die 1 am ende sein nicht am anfang :)
sonst würde es ja statt einem sehr schlecht ein sehr gut voten :)

wär auch nicht gerade schlecht :) *fg*

naj0 - aber der MySQL-Dumb kannst du zB einfach bei PhpMyAdmin eingeben und schon hast du den table!

wenn du nicht weiss was ich meine musst du halt das script so umschreiben das es falls kein table vorhanden ist das es dann einen erstellt :) obwohl das sicher sinnlos ist da der table nur einmal erstellt werden muss :-)

naj0 :)

greets daIllu ;-)
 
hab noch ne frage, die ergebnise, öffnen sich die in nem neuem Pop Up fenster?

[edit]
beim direkt eingeben in die mysql db mache ich irgendwas falsch ;)
wenn ich das in der datei mache sieht das dann so aus:?

PHP:
<?php
$host="DEINHOSTNAME";
$user="DEINUSERNAME";
$pass="DEINPASSWORT";
$db="DEINEDATENBANK";
$conn=mysql_connect($host, $user, $pass) or die ("Es konnte leider keine Verbindung zur Datenbank erstellt werden");
$auswahl=mysql_select_db($db) or die ("Es konnte keine Datenbank ausgew&auml;hlt werden");

CREATE TABLE poll (
   id int(11) NOT NULL auto_increment,
   sehr_gut int(11),
   gut int(11),
   mittelmaessig int(11),
   schlecht int(11),
   sehr_schlecht int(11),
   PRIMARY KEY (id)
);

?>

??????
 
Zuletzt bearbeitet:
nein, dann musst du natürlich via php den table erstellen und nicht einfach den PhpMyAdmin-Dumb einfügen :-)

PS: Leg dir PhpMyAdmin zu, ist sehr leicht zu bedienen!
kannst einiges via mouse machen und alles via keyboard :)

greets daIllu ;-)
 
Ein kleines Problem hab ich ..

Die Ergebnisse stimmen nicht ganz.

Ich habe mir einen ähnlichen Vote geschrieben
und teile die 100% ebenfalls mit floor/etc.

Bei 3 Optionen bekomme ich folgende Ergebnisse :

Ja ?: 58%
Nein !: 19%
Vielleicht ?: 22%

Kann nicht ganz stimmen, oder ?

Hier der Teilungscode :
PHP:
 $prozent[$i]=floor(100/$gesamt*$result[$i])

Pfote, Kojote
 
hmm

ganz einfach das liegt daran das floor(); die nächst niedrige ganzzahl rausfinden soll
du kannst ja anstatt floor(); einfach round(); nehmen

also statt:
$prozent_sehr_gut=floor(100/$anzahl*$votes_sehr_gut);

kommt:
$prozent_sehr_gut=round(100/$anzahl*$votes_sehr_gut, 2);

das ist ein bisschen besser :)
 
aber das is natürlich kein guter poll
den ein richter poll sollte so aufgebaut sein das man ohne probleme ein weiter poll anlegen kann
also eine script das auch tables usw. erstellt - was natürlich kein problem ist (zu coden) aber ich hatte keine lust hier einen ganzen poll zu scripten, darum diese kleine variante

greets daIllu ;-)
 
Zurück