
PHP
Poll
Umfrage
MySQL
Datenbank
Script
Loading...
PHP
Poll
Umfrage
MySQL
Datenbank
Script
CREATE TABLE IF NOT EXISTS `grafixx_poll` ( `id` int(22) NOT NULL AUTO_INCREMENT, `frage` text NOT NULL, `date` datetime NOT NULL, `status` enum('aktiv','inaktiv') NOT NULL, PRIMARY KEY (`id`) );
CREATE TABLE IF NOT EXISTS `grafixx_antworten` ( `id` int(22) NOT NULL AUTO_INCREMENT, `antwort` text NOT NULL, `stimmen` int(22) DEFAULT '0', `poll_id` int(22) NOT NULL, PRIMARY KEY (`id`) );
CREATE TABLE IF NOT EXISTS `grafixx_poll_ip` ( `poll_id` int(22) NOT NULL, `antwort_id` int(22) NOT NULL, `ip` varchar(55) NOT NULL, KEY `poll_id` (`poll_id`) );
<?php // config.inc.php //--------------------------- $host = "localhost"; // Adresse des Datenbankservers, fast immer localhost $user = ""; // Dein MySQL Benutzername $pass = ""; // Dein MySQL Passwort $dbase = ""; // Name der Datenbank //--------------------------- $connection = mysql_connect($host, $user, $pass) OR DIE ("Keine Verbindung zu der Datenbank moeglich."); $db = mysql_select_db($dbase, $connection) OR DIE ("Auswahl der Datenbank nicht moeglich."); ?>
<?php // admin.php session_start(); // startet die Session include('config.inc.php'); // Config.inc.php einbinden $pfad = $_SERVER['SCRIPT_NAME']; // aktueller Pfad zur Datei //---------------------- Logindaten --------------------------------- // $grafixx_name = "USERNAME"; // Loginname angeben $grafixx_pass = "PASSWORT"; // Loginpasswort angeben //------------------------------------------------------------------ // // Funktion um die DB-Eintraege zu pruefen => SQL Injektions function clean_it($dirty){ // Auswirkungen von magic_quotes_gpc zuruecksetzen, wenn ON if (get_magic_quotes_gpc()) { $clean = mysql_real_escape_string(stripslashes(htmlspecialchars($dirty))); }else{ $clean = mysql_real_escape_string(htmlspecialchars($dirty)); } return $clean; } ob_start(); // startet den Ausgabepuffer ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Grafixx Umfragen</title> <meta content="IE=EmulateIE7" http-equiv="X-UA-Compatible" /> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <meta content="no" http-equiv="imagetoolbar" /> <meta content="de" http-equiv="Content-Language" /> <link href="style.css" rel="stylesheet" type="text/css" /> <script type="text/javascript"> <!-- function add_input(){ // Input erstellen var wo = document.getElementById('wo'); var li = document.createElement('li'); var input = document.createElement('input'); input.type = 'text'; input.name = 'antwort[]'; li.appendChild(input); li.appendChild(document.createTextNode(' ')); var button=document.createElement('input'); button.type = 'button'; button.className = 'button small'; button.onclick=function(){delete_input(this);}; button.value = 'loeschen'; li.appendChild(button); wo.appendChild(li); } function delete_input(feld){ // Input loeschen feld.parentNode.parentNode.removeChild(feld.parentNode); } //--> </script> </head> <body> <div id="ram"> <div id="header"> <h1>Grafixx Umfragen</h1> </div> <div id="content"> <?php if(!isset($_SESSION['login'])) { // wenn keine Session vorhanden if(isset($_POST['submit_login'])) { // wenn supbit gedrueckt $login_name = strip_tags($_POST['log_user']); // Variable definieren $login_pass = strip_tags($_POST['log_pass']); // Variable definieren if(empty($login_name) OR empty($login_pass)) { // Pruefen ob Username angegeben wurde $message .= 'Bitte geben Sie ihren Usernamen und das Passwort ein ... <br />'; $error = "1"; } if($login_name != $grafixx_name OR $login_pass != $grafixx_pass){ // Angaben auf Korrektheit pruefen $message .= 'Zugriff verweigert ... <br />'; $error = "1"; } if($error != "1"){ // Wenn kein Fehler war // session handle----------------------------- $_SESSION['login'] = $_SERVER['REMOTE_ADDR']; // Session setzen header("Location: $pfad"); // Weiterleiten } if($error == "1"){ // Fehlermeldung ausgeben wenn vorhanden echo "<div class=\"error\"><h2>Error ...</h2>\n <p>$message</p></div>\n"; } } ?> <form action="" method="post"> <fieldset> <legend><span class="color">Grafixx</span> Login</legend> <label>Name</label> <input name="log_user" type="text" /><br /> <label>Passwort</label> <input name="log_pass" type="password" /> <br /> <br /> <input class="button" name="submit_login" type="submit" value="Login" /> </fieldset> </form> <?php } // close isset Session login // ----------------------------------------------- Ende Login ------------------------------------- // if(isset($_SESSION['login'])){ // Sofern Session vorhanden ... $action = clean_it($_GET['action']); // Variable definieren // ---------------------------------------------------------------------- // LOGOUT // ---------------------------------------------------------------------- if($action == 'logout'){ session_unset(); // Sessionvariable loeschen session_destroy(); // Session zerstoeren header("Location: $pfad"); // Weiterleitung => Login } // ---------------------------------------------------------------------- // Umfrage erstellen/bearbeiten // ---------------------------------------------------------------------- if($action == 'new'){ $id = clean_it($_GET['id']); // Variable definieren if (isset($_POST['submit'])) { $frage = clean_it($_POST['frage']); $status = clean_it($_POST['status']); if(empty($frage) || empty($status) || empty($_POST['antwort'])){ // Pruefen ob alles angegeben echo "<div class=\"error\"><h2>Error...</h2><p>Bitte danke alle Felder ausfuellen!</p></div>\n"; }else{ // Sofern alles angegeben wurde // Frage in DB eintragen $umfrage = mysql_query("INSERT INTO grafixx_poll (frage, status, date) VALUES ('$frage','$status', now() )"); $poll_id = mysql_insert_id(); // POLL ID bestimmen if($umfrage){ // sofern frage in DB eingetragen => Antworten in DB schreiben foreach($_POST['antwort'] as $antwort){ // antworten eintragen $eintragen = mysql_query("INSERT INTO grafixx_antworten (poll_id, antwort) VALUES ('$poll_id','$antwort')"); } } if($umfrage AND $eintragen){ // Sofern Eintrag geklappt hat header("Location: $pfad"); // Weiterleitung }else{ // Wenn Eintrag nicht geklappt hat => Fehlermeldung echo "<div class=\"error\"><h2>Error ...</h2>\n"; echo "<p>Der Eintrag war leider nicht erfolgreich! ".mysql_error()."</p>\n</div>\n"; } } // close alles angegeben }// close submit // Formular ausgeben ?> <form action="" method="post" name="form"> <fieldset> <legend>Umfrage erstellen</legend> <label>Frage</label> <input class="long" name="frage" type="text" /> <br /> <label>Antworten</label> <ol id="wo"> <li><input name="antwort[]" type="text" /> <input class="button small" onclick="delete_input(this);" type="button" value="loeschen" /></li> <li><input name="antwort[]" type="text" /> <input class="button small" onclick="delete_input(this);" type="button" value="loeschen" /></li> </ol> <input class="button" onclick="add_input();" type="button" value="Antwort hinzufuegen" /> <br /> <br /> <label class="go_left">Status:</label> <input class="radio" name="status" type="radio" value="aktiv" /> aktiv <input class="radio" name="status" type="radio" value="inaktiv" /> inaktiv <br /> <br class="clear_left" /> <input class="button" name="submit" type="submit" value="Umfrage erstellen" /> </fieldset> </form> <?php } // close action=new // ---------------------------------------------------------------------- // Umfrage Bearbeiten // ---------------------------------------------------------------------- if($action == 'edit'){ $id = clean_it($_GET['id']); // Variable definieren if(isset($_GET['id'])){ // Sofern ID uebergeben wurde // DB Abfragen $abfrage = mysql_query("SELECT frage, status FROM grafixx_poll WHERE id = '$id'"); $row = mysql_fetch_object($abfrage); $select = mysql_query("SELECT id, antwort FROM grafixx_antworten WHERE poll_id = '$id'"); $total = mysql_num_rows($select); } if(isset($_POST['submit'])){ // sofern submit gedrueckt wurde $frage = clean_it($_POST['frage']); // variable definieren $status = clean_it($_POST['status']); // variable definieren if(empty($frage) OR (empty($_POST['antwort']) AND empty($_POST['antworten']))){ // Pruefen ob alles angegeben echo "<div class=\"error\"><h2>Error...</h2><p>Bitte danke alle Felder ausfuellen!</p></div>\n"; }else{ // Sofern alles angegeben wurde // Frage in DB eintragen $umfrage = mysql_query("UPDATE grafixx_poll SET frage = '$frage', status = '$status' WHERE id = '$id' "); if($umfrage){ // sofern frage in DB eingetragen => Antworten in DB schreiben/updaten if(!empty($_POST['antworten'])){ // Sofern eine neue Antwort dazu gekommen ist // Antworten bearbeiten foreach($_POST['antworten'] as $antworten){ // $a_id = id der zu bearbeitenden antwort // $antwort = value => neue antwort foreach ($antworten as $a_id => $antwort){ // DB updaten $update = mysql_query("UPDATE grafixx_antworten SET antwort = '$antwort' WHERE id = '$a_id' "); } } } if(!empty($_POST['antwort'])){ // Sofern eine neue Antwort dazu gekommen ist foreach($_POST['antwort'] as $new_antwort){ // antworten eintragen $eintragen = mysql_query("INSERT INTO grafixx_antworten (poll_id, antwort) VALUES ('$id','$new_antwort')"); } }// close !empty } if($umfrage AND $update OR $eintragen){ // Sofern Eintrag geklappt hat header("Location: $pfad"); // Weiterleitung }else{ // Wenn Eintrag nicht geklappt hat => Fehlermeldung echo "<div class=\"error\"><h2>Error ...</h2>\n"; echo "<p>Der Eintrag war leider nicht erfolgreich! ".mysql_error()."</p>\n</div>\n"; } } // close alles angegeben }// close submit // Antwort loeschen if(isset($_POST['delete'])){ foreach($_POST['delete'] as $loeschen){ foreach ($loeschen as $del_id => $v){// zu loeschende ID ermitteln // DB => Antwort loeschen $delete = mysql_query("DELETE FROM grafixx_antworten WHERE id = '$del_id' "); // DB => IP zu der Antwort loeschen $del_ip = mysql_query("DELETE FROM grafixx_poll_ip WHERE antwort_id = '$del_id' "); } } header("Location: ".$pfad."?action=edit&id=".$id .""); // Weiterleitung } // Formular ausgeben ?> <form action="" method="post"> <fieldset> <legend>Umfrage bearbeiten</legend> <label>Frage</label> <input class="long" name="frage" type="text" value="<?php echo $row->frage; ?>"/> <br /> <label>Antworten</label> <ol id="wo"> <?php while($rows = mysql_fetch_object($select)){ // vorhadene Antworten ausgeben echo "<li><input name=\"antworten[][".$rows->id."]\" type=\"text\" value=\"".$rows->antwort."\" />\n"; echo "<input class=\"button small\" type=\"submit\" value=\"loeschen\" name=\"delete[][".$rows->id."]\" /></li>\n"; } ?> </ol> <input class="button" onclick="add_input();" type="button" value="Antwort hinzufuegen" /> <br /> <br /> <label class="go_left">Status:</label> <input class="radio" name="status" type="radio" value="aktiv" <?php if($row->status == 'aktiv'){ echo "checked=\"checked\""; } ?>/> aktiv <input class="radio" name="status" type="radio" value="inaktiv" <?php if($row->status == 'inaktiv'){ echo "checked=\"checked\""; } ?>/> inaktiv <br /> <br class="clear_left" /> <input class="button" name="submit" type="submit" value="Speichern" /> </fieldset> </form> <?php } // close action=edit // ---------------------------------------------------------------------- // Umfrage Loeschen // ---------------------------------------------------------------------- if($action == 'loeschen'){ $id = clean_it($_GET['id']); // Variable definieren $mode = clean_it($_GET['mode']); // Variable definieren if(!isset($_GET['mode'])){ // Zur Sicherheit lieber noch mal nachfragen echo "<div class=\"error\"><h2>Wirklich ...</h2>\n"; echo "<p>Bist du sicher dass du die Umfrage loeschen moechtest?</p> \n"; echo "<p><a href=\"".$pfad."?action=loeschen&mode=del&id=$id\" class=\"button\"> Ja </a>"; echo " <a href=\"".$pfad."\" class=\"button\"> Nein </a></p>\n </div>"; }else{ // Umfrage loeschen $delete = mysql_query("DELETE FROM grafixx_poll WHERE id='$id'"); // Umfrage Optionen loeschen $del_a = mysql_query("DELETE FROM grafixx_antworten WHERE poll_id='$id'"); // IP's der Umfrage loeschen $del_ip = mysql_query("DELETE FROM grafixx_poll_ip WHERE poll_id='$id'"); if($delete AND $del_a AND $del_ip){ // Wenn Loeschung nicht erfolgt header("Location: $pfad"); // Weiterleitung }else{ // Wenn Eintrag nicht geloescht wurde => Fehlermeldung echo "<div class=\"error\"><h2>Error ...</h2>\n"; echo "<p>Der Eintrag konnte leider nicht geloescht werden! ".mysql_error()."</p>\n</div>\n"; } } // close mode } // close action = loeschen // ---------------------------------------------------------------------- // Umfragen auflisten // ---------------------------------------------------------------------- if(!isset($_GET['action'])){ // Sofern keine Aktion => umfragen Anzeigen echo "<h2>Umfragen</h2>\n"; // DB-Abfrage => Umfragen $abfrage = mysql_query("SELECT id, frage, DATE_FORMAT(date, '%d.%m.%Y') AS datum, status FROM grafixx_poll ORDER BY id DESC"); $total = mysql_num_rows($abfrage); // Anzahl umfragen // Umfragen ausgeben echo "<ul class=\"list\">\n"; if($total > 0){ // Pruefen ob umfragen vorhanden sind while($row = mysql_fetch_object($abfrage)){ echo "<li><div class=\"right\">\n <a href=\"".$pfad."?action=edit&id=".$row->id."\">Bearbeiten</a>\n <a href=\"".$pfad."?action=loeschen&id=".$row->id."\">[x]</a>\n</div>\n"; echo "<strong>".$row->id.".</strong> ".$row->frage."<br />\n "; echo "<small>".$row->datum." <a href=\"".$pfad."?action=edit&id=".$row->id."\">".$row->status."</a> </small></li>\n"; } }else{ // Keine Umfragen vorhanden echo "<li>Derzeit sind keine Umfragen vorhanden ...</li>"; }// close umfragen vorhanden echo "</ul>\n"; } // close umfragen anzeigen ?> </div> <div id="sidebar"> <h2>Welcome <?php echo $grafixx_name; ?><small><a href="?action=logout"> Logout</a></small></h2> <p><a class="the_button" href="<?php echo $pfad; ?>">Umfragen</a> <a class="the_button" href="<?php echo $pfad; ?>?action=new">Umfrage erstellen</a></p> </div> <?php } // close login ob_end_flush(); // leert/beendet den Ausgabepuffer ?> <div id="footer"> <p class="right">Valid <a href="http://validator.w3.org/check/referer" title="This page validates as XHTML 1.0 Transitional"> <abbr title="eXtensible HyperText Markup Language">XHTML</abbr></a> | Valid <a href="http://jigsaw.w3.org/css-validator/check/referer" title="CSS ist valide!"> <abbr title="Cascading Style Sheets">CSS</abbr></a> </p> <p><a href="http://unnecessary.de">Grafixx Umfragen</a> <a href="http://alice-grafixx.de">Alice-Grafixx.de</a></p> </div> </div> </body> </html>
<?php // poll.php include('config.inc.php'); // DB-Verbindung einbinden function show_ergebnis($id){ // Abstimmungsergebnis anzeigen if(is_int($id)){ // Sofern ID uebergeben wurde und ID = Zahl // Frage auslesen => nur aktiver Umfragen | INNER JOIN => Anzahl aller abgegebenen Stimmen zaehlen $umfrage = mysql_query("SELECT a.frage, SUM(b.stimmen) AS total FROM grafixx_poll a INNER JOIN grafixx_antworten b ON a.id = b.poll_id WHERE a.id = '$id'"); $poll = mysql_fetch_object($umfrage); echo "<ul class=\"poll\">\n"; echo "<li><h2>".$poll->frage."</h2></li>\n"; // Frage ausgeben // Antworten auslesen $abfrage = mysql_query("SELECT antwort, stimmen FROM grafixx_antworten WHERE poll_id = '$id'"); $total = $poll->total; // Anzahl aller bisher abgegebener Stimmen while($row = mysql_fetch_object($abfrage)){ // Antworten ausgeben if($row->stimmen > 0){ // Prozent berechnen $prozent = round($row->stimmen * 100 / $total); }else{ $prozent = 0; } echo "<li><div class=\"rate\"><div style=\"width: ".$prozent."%;\" class=\"vote\"> </div>".$prozent."%</div>\n"; echo $row->antwort."</li>\n"; } echo "</ul>\n <small>Anzahl abgegebener Stimmen: ".$total."</small>\n"; } // close id } // close function show_ergebnis function abstimmen($poll_id){ // Abstimmen $id = intval($_POST['vote']); // Variable definieren if(is_int($id)){ // Sofern ID uebergeben wurde und ID = Zahl $user_ip = $_SERVER['REMOTE_ADDR']; // IP // Stimme zaehlen $update = mysql_query("UPDATE grafixx_antworten SET stimmen = stimmen+1 WHERE id = '$id'"); // Stimme zaehlen => gesamtstimmen $update2 = mysql_query("UPDATE grafixx_poll SET stimmen = stimmen+1 WHERE id = '$poll_id'"); // Abstimmung => IP eintragen $eintragen = mysql_query("INSERT INTO grafixx_poll_ip (poll_id, antwort_id, ip) VALUES ('$poll_id', '$id', '$user_ip')"); if($update AND $eintragen){ show_ergebnis($poll_id); // Auswertung anzeigen } } // close sofern zahl } // close function abstimmen function show_poll($id){ // Umfrage ausgeben if(is_int($id)){ // Pruefen ob $id = Zahl // Frage auslesen => nur aktiver Umfragen $umfrage = mysql_query("SELECT frage FROM grafixx_poll WHERE id = '$id' AND status = 'aktiv'"); $row = mysql_fetch_object($umfrage); $user_ip = $_SERVER['REMOTE_ADDR']; // IP // pruefen ob schon abgestimmt wurde => DB Abfragen $select = mysql_query("SELECT ip FROM grafixx_poll_ip WHERE poll_id = '$id' AND ip = '$user_ip'"); $check_ip = mysql_num_rows($select); if($check_ip > 0){ // Wenn schon abgestimmt wurde show_ergebnis($id); // Auswertung anzeigen }else{ // Wenn noch nicht abgestimmt wurde => Optionen anzeigen if(isset($_POST['abstimmen'])){ // Wenn Abstimmen gedrueckt abstimmen($id); // Abstimmen }else{ // Wenn nicht abstimmen gedrueckt // Formular ausgeben echo "<form action=\"\" method=\"post\">\n"; echo "<ul class=\"poll\">\n"; echo "<li><h2>".$row->frage."</h2></li>\n"; // Frage ausgeben // Antworten auslesen $abfrage = mysql_query("SELECT id, antwort FROM grafixx_antworten WHERE poll_id = '$id'"); while($row = mysql_fetch_object($abfrage)){ // Antworten ausgeben echo "<li><input type=\"radio\" name=\"vote\" value=\"".$row->id."\" class=\"radio\" /> ".$row->antwort."</li>\n"; } echo "<li><input type=\"submit\" name=\"abstimmen\" value=\"Abstimmen\" class=\"button\" /></li>"; echo "</ul>\n"; echo "</form>"; } // close submit } // close Check_ip } // close id } // close function show_poll ?>
ul.poll{ border: 1px solid #737373; border-width: 2px 0px; list-style: none; width: 250px; margin: 0 0 8px; padding: 10px; } ul.poll li{ margin: 0 0 7px; padding: 0; } .rate{ background: #E6E6E6; height: 20px; margin-bottom: 0px; text-align: right; font-size: 0.8em; } .vote{ background: #8BABD1; height: 20px; float: left; } .radio{ width: 20px; margin-left: 5px; }
<?php include('poll.php'); show_poll(ID_der_Umfrage); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de"> <head> <title>Grafixx Umfragen</title> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="imagetoolbar" content="no" /> <meta http-equiv="Content-Language" content="de" /> <link rel="stylesheet" href="style.css" type="text/css" /> </head> <body> <div id="ram"> <div id="header"> <h1>Grafixx Umfragen</h1> </div> <div id="content"> <?php include('poll.php'); // Funktion einbinden show_poll(2); // Umfrage ausgeben ?> </div> </div> </body> </html>
Du musst angemeldet sein, um einen Kommentar zu hinterlassen...
Du bist noch kein Mitglied von Alice-Grafixx.de?
Dann kannst du dich hier kostenlos registrieren ...