Isa_G
Wouw, echt super :) VIELEN DANK!Ich habs bissl umgebastelt und hab vor es in mein ACP einzubinden (also nicht deins aus dem anderen Tut zu nutzen). Du bekkommst aber natürlich einen Creditlink^^
am 07.05.2009 um 11:39 Uhr
|





Grundkenntnisse in PHP und MySQL
Was Du brauchst:
<?PHP
include "db.inc.php";
?>
<?PHP
/* Diese Funktion erzeugt das Formular zum Abstimmen */
function formular($id) {
/* Wähle die Umfrage mit der übergebenen id aus. */
$abf = "SELECT * FROM rp_umfrage WHERE id='".$id."'";
$empf = mysql_query($abf) or die(mysql_error());
$fragedaten = mysql_fetch_assoc($empf);
/* Wähle die Antworten, die zu der Umfrage gehören aus */
$abfant = "SELECT * FROM rp_antworten WHERE
frageid='".$fragedaten['id']."'";
$empfant = mysql_query($abfant) or die(mysql_error());
$anzahlantworten = mysql_affected_rows();
/* Erstellung des HTML-Codes des Umfrage-Formulars;
$_SERVER['PHP_SELF'] bewirkt, dass das Formular an die aktuell
aufgerufene Seite geschickt wird. */
$daten['content'] .= "<div class=\"umfrage\">\n
<div
class=\"frage\">".$fragedaten['frage']."</div>\n
<div class=\"antworten\">\n
<form action=\"".$_SERVER['PHP_SELF']."\"
method=\"post\">\n
<ul class=\"antwortenform\">\n";
/* Für jede Antwortmöglichkeit wird ein Radiobutton erzeugt und
bekommt als Wert die id der entsprechenden Antwort */
while($row = mysql_fetch_assoc($empfant)) {
$daten['content'] .= "<li><input type=\"radio\" name=\"answers\"
value=\"".$row['id']."\" /> ".$row['antwort']."</li>\n";
}
/* Rest des Formulars wird verschickt. Der Name des Buttons ist
nötig um mehrere Umfrage-Formulare auseinanderhalten zu können, falls
jemand mehrere Umfragen in seine Seite einbindet */
$daten['content'] .= "</ul>\n
<input type=\"submit\" value=\"Abstimmen\"
class=\"abschicken\" name=\"submit".$id."\"/>\n
</form>\n
</div>\n
</div>\n";
/* Zurückgeben des Formulars */
return $daten['content'];
}
?>
<?PHP
/* Diese Funktion erzeugt die grafische Darstellung der Umfrage mit
den ausgewerteten Daten (also die hübschen Balken) */
function auswertung($id) {
/* Wähle die Datensätze der Tabelle umfrage, welche die übergebene
id besitzen. */
$abf = "SELECT * FROM rp_umfrage WHERE id='".$id."'";
$empf = mysql_query($abf) or die(mysql_error());
$fragedaten = mysql_fetch_assoc($empf);
/* HTML-Code zum Ausgeben der Umfrage */
$daten['content'] .= "<div class=\"umfrage\">\n
<div
class=\"frage\">".$fragedaten['frage']."</div>\n
<div class=\"antworten\">\n";
/* Wähle alle Antworten zu der aufgerufenen Umfrage aus */
$abfant = "SELECT * FROM rp_antworten WHERE frageid='".$id."'";
$empfant = mysql_query($abfant) or die(mysql_error());
while($row = mysql_fetch_assoc($empfant)) {
/* Falls Antwort schon Stimmen hat, berechne deren Prozentanteil
(Stimmanzahl * 100 / Gesamtstimmanzahl) */
if ($row['stimmen']>0) {
$anteil = round($row['stimmen']* 100 / $fragedaten['stimmen']);
}
/* Falls Antwort noch keine Stimmen hat, setze Variable $anteil
auf 0 */
else {
$anteil = 0;
}
/* HTML-Code zur Erstellung des Balkens, die Breite des blauen
Balkens entspricht dem Prozentanteil der aktuell bearbeiteten Frage */
$daten['content'] .= "<div class=\"antwort\">".$row['antwort']."
<div class=\"balken\"><div class=\"anteil\"
style=\"width:".$anteil."%;\"></div></div><div
class=\"text\">".$anteil."%</div></div>\n";
}
/* HTML-Code für den Abschluss der Umfrage-Darstellung */
$daten['content'] .= "</div>\n
<div class=\"umfragenfooter\">Bisher
abgegebene Stimmen: ".$fragedaten['stimmen']."</div>\n
</div>\n";
/* Zurücklieferung der Umfrage */
return $daten['content'];
}
?>
<?PHP
/* Diese Funktion ist die Hauptfunktion: sie ruft die anderen beiden
Funktionen auf und updatet die Daten der Umfrage */
function umfrage($id) {
/* Falls $id leer ist, wird einfach die zuletzt erstellte umfrage
ausgewählt */
if(empty($id)) {
/* Bedeutung der Abfrage: Order By datum = Sortiere nach datum;
DESC = Neuestes > Ältestes; LIMIT = Wähle nur den ersten Datensatz aus
*/
$abf = "SELECT * FROM rp_umfrage ORDER BY datum DESC LIMIT 1";
$empf = mysql_query($abf) or die(mysql_error());
$row = mysql_fetch_assoc($empf);
/* $id bekommt nun die id der ausgewählten umfrage zugeteilt */
$id = $row['id'];
}
/* Um zu überprüfen ob der User schon mal abgestimmt hat, werden
alle Datensätze der Tabelle umfrage ausgewählt, die die gewünschte id
haben (sollte im Normalfall höchstens eine sein) und in deren Spalte
ip die IP des Users zu finden ist. */
$abfabgestimmt = "SELECT * FROM rp_umfrage WHERE id='".$id."' AND ip
LIKE'%".$_SERVER['REMOTE_ADDR']."%'";
$empfabgestimmt = mysql_query($abfabgestimmt) or die(mysql_error());
/* $abgestimmt bekommt nun die Anzahl der gefundenen Datensätze
zugeteilt, sprich, wenn der User schon abgestimmt hat, enthält
$abgestimmt nun eine 1, ansonsten eine 0 */
$abgestimmt=mysql_affected_rows();
/* Falls das Formular zum Abstimmen abgeschickt wurde, und zwar
nicht leer und $abgestimmt 0 ist (=User hat noch nicht gevotet) */
if(isset($_REQUEST["submit".$id]) AND !empty($_POST['answers']) AND
$abgestimmt==0) {
/* Falls die aus dem Formular kommende id auch wirklich eine
Nummer ist, wird der Variablen $antwort dieser Wert zugeteilt */
if(is_numeric($_POST['answers'])) {
$antwort = $_POST['answers'];
}
/* Die Antwort der übergebenen id wird aus der Datenbank geholt */
$abf = "SELECT * FROM rp_antworten WHERE id='".$antwort."'";
$empf = mysql_query($abf) or die(mysql_error());
$antwortdaten = mysql_fetch_assoc($empf);
/* Falls es eine Antwort mit der id auch wirklich gibt... */
if (mysql_affected_rows() == 1) {
/* Auswählen der Umfrage mit der entsprechenden id */
$abf2 = "SELECT * FROM rp_umfrage WHERE id='".$id."'";
$empf2 = mysql_query($abf2) or die(mysql_error());
$fragen = mysql_fetch_assoc($empf2);
/* Erhöhe die Stimmanzahl der Antwort */
$antwortdaten['stimmen']++;
/* Erhöhe die Gesamtstimmzahl der Umfrage */
$fragen['stimmen']++;
/* Speichern der Stimmzahl der Antwort */
$abfup = "UPDATE rp_antworten SET
stimmen='".$antwortdaten['stimmen']."' WHERE id='".$antwort."'";
$empfup = mysql_query($abfup) or die(mysql_error());
/* Speichern der Gesamtstimmzahl der Umfrage und der IP des User
in der umfrage-Tabelle */
$abfup = "UPDATE rp_umfrage SET
ip='".$fragen['ip'].$_SERVER['REMOTE_ADDR']."|"."',
stimmen='".$fragen['stimmen']."' WHERE id='".$id."'";
$empfup = mysql_query($abfup) or die(mysql_error());
}
/* Aufrufen der Funktion auswertung */
$daten['content'] = auswertung($id);
}
/* Falls User schon abgestimmt hat die Funktion auswertung aufrufen
*/
elseif ($abgestimmt!=0) {
$daten['content'] = auswertung($id);
}
/* Falls noch nicht abgestimmt und Formular nicht abgeschickt,
funktion formular aufrufen */
else {
$daten['content'] = formular($id);
}
return $daten['content'];
}
?>
body {
font-family: arial;
font-size: 12px;
color:#747474;
margin:50px;
}
.umfrage {
width:250px;
margin:50px;
}
.umfrage .frage {
font-size:24px;
}
.umfrage .antworten {
padding:10px;
background-color:#f5f5f5;
}
.umfrage .antworten .antwort {
display:block;
margin-bottom:10px;
}
.umfrage .antworten .antwort .balken {
width:80%;
background-color:#d1d1d1;
height:15px;
float:left;
margin-right:10px;
}
.umfrage .antworten .antwort .balken .anteil {
background-color:#52c8ff;
height:15px;
}
.umfrage .antworten .antwort .text {
font-weight:bold;
}
.umfrage .umfragenfooter {
font-size:10px;
}
.umfrage .antworten .antwortenform {
list-style-type: none;
padding:0px;
}
.umfrage .antworten .abschicken {
background-color:#ff57a2;
border:1px solid #f13898;
}
Jel
... und das rockt noch viel mehr! :'DDanke. <333
Jel.
(merci, dass es dich gibt *sing* xD)