EDIT: // 2 Breiträge weiter unten habe ich das Script komplett neu geschrieben, befasst euch bitte mit der neuen poll.php, bevor ihr zuerst unnötigerweise die alte studiert.
Ich schreibe gerade ein Umfragescript, nur leider funktioniert es nicht so, wie ich das will.
Alles klappt, außer die abfrage der bisherigen Stimmen für eine Wahl, das Addieren um 1 und Updaten der MySQL Datenbank. settype() klappt nur so halb, ich möchte ja die Hits der DB abrufen, um 1 erhöhen und wieder eintragen, womit die Stimme eben gezält wird.
Hier die betreffenden Scripte, zum Verständnis komplett, aber noch nicht fertig, keine Sorge.
poll.php
Ausgabe1 (wenn schon abgestimmt):
Ausgabe2(wenn noch nicht abgestimmt):
vote.php
Screenshots der DB:
http://img5.imagebanana.com/img/hfvs89l/Unbenannt1.jpg
Ich danke euch jetzt schon vielfach für eure Hilfe! =)
Ich schreibe gerade ein Umfragescript, nur leider funktioniert es nicht so, wie ich das will.
Alles klappt, außer die abfrage der bisherigen Stimmen für eine Wahl, das Addieren um 1 und Updaten der MySQL Datenbank. settype() klappt nur so halb, ich möchte ja die Hits der DB abrufen, um 1 erhöhen und wieder eintragen, womit die Stimme eben gezält wird.
Hier die betreffenden Scripte, zum Verständnis komplett, aber noch nicht fertig, keine Sorge.
poll.php
PHP:
<?php
require('data.php');
$aktuelle_ip = $_SERVER['REMOTE_ADDR'];
$verbindung = mysql_connect($host, $benutzer, $passwort);
mysql_select_db($db, $verbindung);
// Verbindung zu POLL
$sql = 'SELECT * FROM poll ORDER BY start DESC LIMIT 1';
$ergebnis = mysql_query($sql, $verbindung);
//Abruf der aktuellen Umfrage
while ($row = mysql_fetch_array($ergebnis)) {
echo $row['question'];
$id_poll = $row['id']; // id_poll : ID der aktuellen Umfrage
// Speicherung der IPs
$ips_before = $row['ips']; // ips_before : IPs momentan in der DB
}
unset($row);
mysql_free_result($ergebnis);
// Verbindung zu POLL_QUESTIONS fuer die Hits
$sql = 'SELECT * FROM poll_questions ORDER BY prio';
$ergebnis = mysql_query($sql,$verbindung);
echo '<table>';
while ($row = mysql_fetch_array($ergebnis)) {
$total += $row['hits']; // total : Alle Abstimmungen zahlenmaessig zusammengefasst
}
unset($row);
mysql_free_result($ergebnis);
// Verbindung zu POLL_QUESTIONS fuer Antworten
$sql = 'SELECT * FROM poll_questions ORDER BY prio';
$ergebnis = mysql_query($sql,$verbindung);
echo '<form action="includes/vote.php" method="POST">';
while ($row = mysql_fetch_array($ergebnis)) {
// Wenn die momentane IP schon teilgenommen hat, Ergebnisse anzeigen
if(preg_match("/(" . $aktuelle_ip . ")/",$ips_before)) { //preg_match("/[.]*[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}[.]*/",
// Ausgabe Antwortmoeglichkeiten
echo '<tr><td class="poll">';
echo $row['answer'];
echo '</td><td>';
$percent = round($row['hits']*100/$total,2); // percent : Prozentberechnung der Stimmenverteilung
echo $percent . '% (' . $row['hits'] . ' Stimmen)';
echo '</td><td>';
echo 'Aufwendige Grafikdarstellung'; // Work in progress :p
// Wenn noch nicht, Formular ausgeben
} else {
// Ausgabe Antwortmoeglichkeiten
echo '<tr><td class="poll">';
echo $row['answer'];
echo '</td><td>';
echo '<input type="radio" name="id_quest" value="' . $row['id'] . '" />';
settype($row['hits'],'integer');
$_SESSION['hits'] = $row['hits'];
}
echo '</td></tr>';
}
echo '</table>';
// Tabelle beendet
// Wenn die aktuelle IP bisher nicht teil genommen hat, restliches Formular ausgeben
if(!preg_match("/(" . $aktuelle_ip . ")/",$ips_before)) {
$_SESSION['id_poll'] = $id_poll;
$_SESSION['ips_before'] = $ips_before;
echo '<input type="submit" name="submit" value="Abstimmen!" class="button" /></form>';
} else {
echo 'Sie haben bereits abgestimmt.';
}
// Verbindung beenden
mysql_free_result($ergebnis);
mysql_close($verbindung);
?>
Ausgabe1 (wenn schon abgestimmt):
HTML:
Diese Umfrage hat bei mir funktioniert.<table><form action="includes/vote.php" method="POST"><tr><td class="poll">Jo.</td><td>60% (3 Stimmen)</td><td>Aufwendige Grafikdarstellung</td></tr><tr><td class="poll">Nix gibs.</td><td>40% (2 Stimmen)</td><td>Aufwendige Grafikdarstellung</td></tr></table>Sie haben bereits abgestimmt.
Ausgabe2(wenn noch nicht abgestimmt):
HTML:
Diese Umfrage hat bei mir funktioniert.<table><form action="includes/vote.php" method="POST"><tr><td class="poll">Jo.</td><td><input type="radio" name="id_quest" value="4" /></td></tr><tr><td class="poll">Nix gibs.</td><td><input type="radio" name="id_quest" value="5" /></td></tr></table><input type="submit" name="submit" value="Abstimmen!" class="button" /></form>
vote.php
PHP:
<?php
session_start();
$aktuelle_ip = $_SERVER['REMOTE_ADDR'];
if(isset($_POST['submit'])) {
// Pruefung auf Vorhandensein benoetigter Variablen BESTANDEN BESTANDEN KLAPPT WUNDERBAR!!
echo isset($_SESSION['hits']);
echo '<br />';
echo $_SESSION['hits'];
echo '<br />';
echo isset($_SESSION['id_poll']);
echo '<br />';
echo $_SESSION['id_poll'];
echo '<br />';
echo isset($_SESSION['ips_before']);
echo '<br />';
echo $_SESSION['ips_before'];
echo '<br />';
echo isset($_POST['submit']);
echo '<br />';
echo $_POST['submit'];
echo '<br />';
echo isset($_POST['id_quest']);
echo '<br />';
echo $_POST['id_quest'];
echo '<br />Prüfung erfolgreich beendet<hr />';
// Pruefung beendet
if (isset($_SESSION['hits']) and isset($_SESSION['id_poll']) and isset($_SESSION['ips_before']) and isset($_POST['id_quest'])) {
require('data.php');
$verbindung = mysql_connect($host, $benutzer, $passwort);
mysql_select_db($db, $verbindung);
// Neue IPs = Alte IPs + Neue IP + ", "
$ips_after = $_SESSION['ips_before'] . $aktuelle_ip . ', ';
echo 'NEUE IPS<br />';
echo $ips_after;
// Updaten: In POLL, IPs auf neue IPs abaendern
$sql = "UPDATE poll Set ips = '" . $ips_after . "' WHERE id = '" . $_SESSION['id_poll'] . "'";
$ergebnis = mysql_query($sql,$verbindung);
echo 'UPDATE DER IPs ABGESCHLOSSEN';
mysql_free_result($ergebnis);
// Zugriffe = Zugriffe zuvor + 1
echo $_SESSION['hits'] . '<br />~~~~~~~~~~~<br />';
settype($_SESSION['hits'],'integer');
$hits_after = $_SESSION['hits']+1;
echo '>>>>>>>>>>>>>>' . $hits_after;
$sql2 = "UPDATE poll_questions Set hits = '" . $hits_after . "' WHERE id = '" . $_POST['id_quest'] . "'";
$ergebnis2 = mysql_query($sql2,$verbindung);
mysql_free_result($ergebnis2);
mysql_close($verbindung);
unset($_SESSION['id_poll']);
unset($_SESSION['ips_before']);
unset($_SESSION['hits']);
}
$_SESSION['meldung'] = 'Sie haben erfolgreich abgestimmt.';
$_SESSION['farbe'] = 'positiv';
//header('Location: ../index.php');
} else {
$_SESSION['meldung'] = 'Leider ist ein Fehler unterlaufen und Ihre Abstimmung wurde nicht gewertet.';
$_SESSION['farbe'] = 'negativ';
//header('Location: ../index.php');
}
?>
Screenshots der DB:
http://img5.imagebanana.com/img/hfvs89l/Unbenannt1.jpg
Ich danke euch jetzt schon vielfach für eure Hilfe! =)
Zuletzt bearbeitet: