Also ich grabe mir heute mein eigenes Grab. Bin ich denn wirklich so blöd oder sind das typische Anfängerschwierigkeiten? Man, ich will entlich, das die "einfache Umfrage" funktioniert.
Unter MySQL habe ich die Spalte 'Date' in ein INT-Feld umgewandelt. Da stehen jetzt Werte wie 1007061022 drin. Ich denke, dass das wohl richig sein müsste. Aber das der Wähler erst alle 60 Minuten neuwählen darf, klappt immer noch nicht. Hier noch einmal der komplette Code: S.O.S.
<?php
$mysqlhost='';
$mysqluser='';
$mysqlpasswd='';
$mysqldbname='';
$db = mysql_connect($mysqlhost,$mysqluser,$mysqlpasswd);
mysql_select_db($mysqldbname,$db);
//IP-Adresse ermitteln:
$ip=$REMOTE_ADDR;
//Neues Voting in genau einer Stunde möglich:
$date=time();
$timediff = 60*60;
//Datenbank aufrufen und IP-Adresse mit Datum(Zeit) vergleichen:
$sql = "SELECT date FROM vote_christmas WHERE id='$ip' AND NOW()>DATE_ADD(date,INTERVAL $timediff SECOND)";
$ergebnis = mysql_query($sql) or die($sql.'<br><br>'.mysql_error());
if (mysql_num_rows($ergebnis)>=1) {
$date = mysql_result($ergebnis,0);
echo"<p><b> Du hast schon vor kurzem gewählt. \nEine Neuwahl ist erst
nach einer Stunde möglich. Genau um: ".date("H:i:s",$date+$timediff);
exit();
}
// Verbindung zur Datenbank herstellen
$link = @mysql_pconnect($mysqlhost, $mysqluser, $mysqlpasswd);
if ($link == FALSE) {
echo "<p><b>Leider kann keine Verbindung zur Datenbank
hergestellt werden. Daher können die Ergebnisse
zur Zeit nicht angezeigt werden. Bitte versuchen
Sie es später noch einmal.
</body></html>\n";
exit();
}
mysql_select_db($mysqldbname);
// falls Formulardaten zur Verfügung stehen: auswerten + speichern
if($submitbutton=="Stimme abgeben") {
if($vote>=1 && $vote<=2) {
mysql_query("INSERT INTO vote_christmas (choice,ip, ort, date) VALUES ('$vote','$ip','$ort', '$date')");
}
else {
echo "<p>Keine gültige Wahl. Bitte wählen Sie
noch einmal. Zurück zur
<a href=\"./vote.html\">Weihnachtsumfrage</a>.
</body></html>\n";
exit();
}
}
// Ergebnisse anzeigen
echo "<P><B>Gibt es in diesem Jahr eine ''weiße Weihnacht''?</B>\n";
// Anzahl der abgegebenen Stimmen
$result = mysql_query("SELECT COUNT(choice) FROM vote_christmas");
$choice_count = mysql_result($result, 0, 0);
// Prozentzahlen für die einzelnen Ergebnisse
if($choice_count == 0) {
echo "<p>Es hat noch keiner gewählt.\n";
}
else {
echo "<p>$choice_count Personen haben bisher an dieser
Umfrage teilgenommen:<br>\n";
$choicetext = array("", "Ja, natürlich.", "Nein, ich glaube nicht.");
for($i=1; $i<=2; $i++) {
$result = mysql_query(
"SELECT COUNT(choice) FROM vote_christmas " .
"WHERE choice = $i");
$choice[$i] = mysql_result($result, 0, 0);
$percent = round($choice[$i]/$choice_count*10000)/100;
print("<br>$percent % - $choicetext[$i]\n");
}
}
?>
Unter MySQL habe ich die Spalte 'Date' in ein INT-Feld umgewandelt. Da stehen jetzt Werte wie 1007061022 drin. Ich denke, dass das wohl richig sein müsste. Aber das der Wähler erst alle 60 Minuten neuwählen darf, klappt immer noch nicht. Hier noch einmal der komplette Code: S.O.S.
<?php
$mysqlhost='';
$mysqluser='';
$mysqlpasswd='';
$mysqldbname='';
$db = mysql_connect($mysqlhost,$mysqluser,$mysqlpasswd);
mysql_select_db($mysqldbname,$db);
//IP-Adresse ermitteln:
$ip=$REMOTE_ADDR;
//Neues Voting in genau einer Stunde möglich:
$date=time();
$timediff = 60*60;
//Datenbank aufrufen und IP-Adresse mit Datum(Zeit) vergleichen:
$sql = "SELECT date FROM vote_christmas WHERE id='$ip' AND NOW()>DATE_ADD(date,INTERVAL $timediff SECOND)";
$ergebnis = mysql_query($sql) or die($sql.'<br><br>'.mysql_error());
if (mysql_num_rows($ergebnis)>=1) {
$date = mysql_result($ergebnis,0);
echo"<p><b> Du hast schon vor kurzem gewählt. \nEine Neuwahl ist erst
nach einer Stunde möglich. Genau um: ".date("H:i:s",$date+$timediff);
exit();
}
// Verbindung zur Datenbank herstellen
$link = @mysql_pconnect($mysqlhost, $mysqluser, $mysqlpasswd);
if ($link == FALSE) {
echo "<p><b>Leider kann keine Verbindung zur Datenbank
hergestellt werden. Daher können die Ergebnisse
zur Zeit nicht angezeigt werden. Bitte versuchen
Sie es später noch einmal.
</body></html>\n";
exit();
}
mysql_select_db($mysqldbname);
// falls Formulardaten zur Verfügung stehen: auswerten + speichern
if($submitbutton=="Stimme abgeben") {
if($vote>=1 && $vote<=2) {
mysql_query("INSERT INTO vote_christmas (choice,ip, ort, date) VALUES ('$vote','$ip','$ort', '$date')");
}
else {
echo "<p>Keine gültige Wahl. Bitte wählen Sie
noch einmal. Zurück zur
<a href=\"./vote.html\">Weihnachtsumfrage</a>.
</body></html>\n";
exit();
}
}
// Ergebnisse anzeigen
echo "<P><B>Gibt es in diesem Jahr eine ''weiße Weihnacht''?</B>\n";
// Anzahl der abgegebenen Stimmen
$result = mysql_query("SELECT COUNT(choice) FROM vote_christmas");
$choice_count = mysql_result($result, 0, 0);
// Prozentzahlen für die einzelnen Ergebnisse
if($choice_count == 0) {
echo "<p>Es hat noch keiner gewählt.\n";
}
else {
echo "<p>$choice_count Personen haben bisher an dieser
Umfrage teilgenommen:<br>\n";
$choicetext = array("", "Ja, natürlich.", "Nein, ich glaube nicht.");
for($i=1; $i<=2; $i++) {
$result = mysql_query(
"SELECT COUNT(choice) FROM vote_christmas " .
"WHERE choice = $i");
$choice[$i] = mysql_result($result, 0, 0);
$percent = round($choice[$i]/$choice_count*10000)/100;
print("<br>$percent % - $choicetext[$i]\n");
}
}
?>
Kommentar