Szavazás kódom IP ellenőrzése hibás
Üdvözletem!
Megpróbáltam írni egy saját szavazást, a probléma az vele hogyha ugyanarról az ipről érkezett szavazás időpontja, és a jelenlegi időpont közötti érték nagyobb mint egy nap, akkor nem jelenik meg semmi. Ezen kívül szerintetek mit kellene másképp csinálni?
■ Megpróbáltam írni egy saját szavazást, a probléma az vele hogyha ugyanarról az ipről érkezett szavazás időpontja, és a jelenlegi időpont közötti érték nagyobb mint egy nap, akkor nem jelenik meg semmi. Ezen kívül szerintetek mit kellene másképp csinálni?
<?php
if(!$_GET['results']) {
$query = mysql_query("SELECT id, datum, ip FROM poll_ip WHERE ip='".$_SERVER['REMOTE_ADDR']."'") or die(mysql_error());
if (mysql_num_rows($query) == 1) {
while ($rows = mysql_fetch_assoc($query)) {
$mostani_ido = time();
$szavazas_ideje = strtotime($rows['datum']);
if(time()-strtotime($rows['datum']) <= 86400) {
header("Location: ".$_SERVER['PHP_SELF']."?results=1");
}
}
} else {
$query = mysql_query("SELECT id, kerdes FROM poll_questions ORDER BY id DESC LIMIT 0,1") or die(mysql_error());
while ($rows = mysql_fetch_assoc($query)) {
echo"{$rows['kerdes']}<br /><br />";
$query2 = mysql_query("SELECT id, valasz, kerdes_id FROM poll_answers WHERE kerdes_id='".$rows['id']."'") or die(mysql_error());
echo"<form id=\"form1\" name=\"form1\" method=\"post\" action=\"".$_SERVER['PHP_SELF']."?vote=1\">";
echo"<p>";
while ($rows2 = mysql_fetch_assoc($query2)) {
echo"<label>";
echo"<input type=\"radio\" name=\"poll\" value=\"{$rows2['id']}\" />";
echo"{$rows2['valasz']}</label>";
echo"<br />";
}
echo"</p><input type=\"submit\" name=\"Submit\" value=\"Submit\" />";
echo"</form>";
}
}
}
if($_GET['vote'] == 1) {
$query = mysql_query("SELECT id, szavazatok FROM poll_answers WHERE id='".$_POST['poll']."'") or die(mysql_error());
while ($rows = mysql_fetch_assoc($query)) {
mysql_query("UPDATE poll_answers SET szavazatok = {$rows['szavazatok']}+1 WHERE id='".$_POST['poll']."'") or die(mysql_error());
mysql_query("INSERT INTO poll_ip SET datum = NOW(), ip = '".$_SERVER['REMOTE_ADDR']."'") or die(mysql_error());
header("Location: ".$_SERVER['PHP_SELF']."?results=1");
}
}
if($_GET['results'] == 1) {
$query = mysql_query("SELECT id, kerdes FROM poll_questions ORDER BY id DESC LIMIT 0,1") or die(mysql_error());
while ($rows = mysql_fetch_assoc($query)) {
echo"{$rows['kerdes']}<br /><br />";
$query2 = mysql_query("SELECT id, valasz, szavazatok, kerdes_id FROM poll_answers WHERE kerdes_id='".$rows['id']."'") or die(mysql_error());;
while ($rows2 = mysql_fetch_assoc($query2)) {
$query3 = mysql_query("SELECT SUM(szavazatok) as szavazatok FROM poll_answers WHERE kerdes_id='".$rows['id']."'") or die(mysql_error());;
while ($rows3 = mysql_fetch_assoc($query3)) {
echo"{$rows2['valasz']} - {$rows2['szavazatok']}x<div height: 10px; style=\"background-image: url(poll.png); width: ".ceil(200/$rows3['szavazatok']*$rows2['szavazatok'])."px\"></div><br />";
}
}
}
}
hiba
Kommentek nélküli forrás :(
igazad van
if, while és hasonlók
Mint általános jótanács: a header("Location... után nyomjál egy exit(); függvényt neki, nehogy lefussanak nemkívánt dolgok a fájl további részén.
A szavazásnál a SET szavazatok = {$rows['szavazatok']}+1 megközelítés nem szép. Helyette: SET szavazatok = szavazatok + 1
Results rész: Mi szükség van a query3-ra? A query2 szavazatok mezője eleve tartalmazza azt a számot amit a query3 visszaad. Minek a while ciklus a query3 után? A SUM (itt) egyetlen sort ad vissza.
Azt ajánlom, hogy tisztázd le a kódot... nagyon. A problémát nem igazán látom, de ha átgondolod, és mekérded magadtól, hogy melyik sor mit csinál, és miért biztosan előbújik.
köszi
Valami probléma van ezzel a kóddal mert mindenféle képpen a result oldalra dob vissza:
mysql_num_rows
$row = mysql_fetch_row($query);
$szam = $row[0];
Vagy ha a fetch_array szimpatikusabb, adjál egy alias nevet az oszlopnak:
Egy kis bibi
igaz
PHP doksi
Ne IP-re csináld, sütire.
PHP doksiban:
setcookie()
$_COOKIE
http://hu.php.net/setcookie
van példa is.
még vmi
Az itt megadott háttér, ami 5 pixel magas, igazából 10pixel körüli lehet, akármekkora méretet állítok, nem megy.
roland
Nem a magasság
elnéztem
IE6?
Hosszu tavon jobban jarnal a <div class='csik'> megoldassal, es az osszes formazast az .csik class-ba tartozo szabalyokkal adnad meg.
köszönöm
:(
size
nemjó
font méret
ie
url
safariban is klafa
include
beszúrni de nem lett eredménye.
nem muszáj mindent
Amúgy a sorod annyit tesz, hogy MINDENT, ami nem index.php?results=1 átküld erre az oldalra. Tehát ha valaki index.php?akarmi=napraforgo címet nyit meg, akkor is a results=1 -re dobja.
megoldás
A megoldás
Ahelyett, hogy különböző példákból összeollózol valamit próbáld megérteni, (php manual) hogy mit csinálnak a kódok, amiket oda bemásoltál, így át tudod alakítani saját igényeidhez.
Ha kész szavazás kódot keresel, akkor irány a gugli, biztosan találsz többszáz kész megoldást. Ha meg programozni akarsz, tanulj programozni. Esetleg vegyél egy könyvet.
B
:(