Verfasst von Alice am 13.09.2009 - wurde schon 17901 mal gelesen
PHP
Poll
Umfrage
MySQL
Datenbank
Script
Loading...
![]()
Verfasst von Alice am 13.09.2009 - wurde schon 17901 mal gelesen
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 ...