Autor | Zpráva | ||
---|---|---|---|
Samo Profil |
#1 · Zasláno: 23. 1. 2011, 17:54:30
Čaute, mám formulár na hodnotenie, ale akosi mi tu nefunguje overovanie pomocou ip adresy aby nikto nemohol hlasovať viackrát, okrem iného potrebujem aby mi po odoslaní dát zmizol ten formulár a zobrazilo sa len priemerné hodnotenie a informácia že už hlasoval(tá by mohla vybehnúť aj pomocou javascriptu)...
Ďakujem... if ($hodnotenie_on_off==1){ echo '<br />'; echo '<br />'; echo '<font>Hodnotenie užívateľov</font>'; echo '<br />'; require_once(DB); $p=1; $sql = (mysql_query("SELECT id_clanku,ip_adresa FROM hodnotenie WHERE id_clanku='" . intval($_GET["id_knihy"]) . "'")); while ($data = mysql_fetch_array($sql, MYSQL_BOTH)){ $ip_adresa2[$p]=$data['ip_adresa']; $p++; if ($_SERVER['REMOTE_ADDR']==$ip_adresa2[$i]){ echo 'Prepáčte, ale už ste hodnotili!'; } } if ($_SERVER['REMOTE_ADDR']!==$ip_adresa2[$i]) { if (isset($_POST['znamka'])){ $id_clanku = htmlspecialchars(intval($_GET["id_knihy"])); $znamka = htmlspecialchars($_POST['znamka']); $ip_adresa = ($_SERVER['REMOTE_ADDR']); $sql = (mysql_query("INSERT INTO hodnotenie(id_clanku,znamka,ip_adresa) VALUES('$id_clanku','$znamka','$ip_adresa')")); if($sql){ echo 'Hodnotenie bolo odoslané!'; } else { echo 'Prepáčte, nastala chyba!'; } } echo '<form action="" method="post"><select name="znamka">'; for ($i=1;$i<=10;$i++){ echo '<option>'.$i.'</option>'; } echo '<input type="submit" value="Odoslať">'; echo '</select></form>'; } echo '<br />'; DB_hodnotenie(); } else { return false; } |
||
xmark Profil |
#2 · Zasláno: 23. 1. 2011, 19:07:27
Jestli to správně chápu, chceš to bez znovunačtení stránky. Hledej "anketa AJAX".
Mimochodem ten tvůj postup mě docela děsí. Proč z databáze taháš všechny záznamy a pak pro každý zjišťuješ, jestli se náhodou neshoduje IP adresa? |
||
Samo Profil |
#3 · Zasláno: 23. 1. 2011, 19:16:22 · Upravil/a: Samo
a aké riešenie by bolo lepšie? keby som do where zahrnul aj ipčku?
uhádol si, idem to pohľadať, díky zatiaľ.. //EDIT: Nič som nenašiel, nikde to čo hľadám, ak máš odkaz prosím hoď mi ho sem... dik |
||
xmark Profil |
#4 · Zasláno: 23. 1. 2011, 19:22:55
Samo:
„a aké riešenie by bolo lepšie? keby som do where zahrnul aj ipčku?“ Jednoznačně. Chvilku jsem se snažil ten postup pochopit, ale neorientuju se v tom $ip_adresa, $ip_adresa2, $p .. nechápu. S tím ajaxem počítej, že to bude složitější. Ale pokud chceš anketu bez znovunačtení stránky, neobejdeš se bez toho. A na druhou stranu.. je to tak častá věc, že možná najdeš kompletní řešení. |
||
Samo Profil |
#5 · Zasláno: 23. 1. 2011, 19:35:35
if ($hodnotenie_on_off==1){ echo '<br />'; echo '<br />'; echo '<font>Hodnotenie užívateľov</font>'; echo '<br />'; $hodnotenie==true; require_once(DB); $sql = (mysql_query("SELECT znamka FROM hodnotenie WHERE id_clanku='" . intval($_GET["id_knihy"]) . "' AND ip_adresa='".($SERVER_["REMOTE_ADDR"])."'")); while ($data = mysql_fetch_array($sql, MYSQL_BOTH)){ $vasa_znamka=$data['znamka']; $hodnotenie==false; } if (($_SERVER['REMOTE_ADDR']!==$ip_adresa2) and ($hodnotenie==true)) { if (isset($_POST['znamka'])){ $id_clanku = htmlspecialchars(intval($_GET["id_knihy"])); $znamka = htmlspecialchars($_POST['znamka']); $ip_adresa = ($_SERVER['REMOTE_ADDR']); $sql = (mysql_query("INSERT INTO hodnotenie(id_clanku,znamka,ip_adresa) VALUES('$id_clanku','$znamka','$ip_adresa')")); if($sql){ echo 'Hodnotenie bolo odoslané!'; } else { echo 'Prepáčte, nastala chyba!'; } } echo '<form action="" method="post"><select name="znamka">'; for ($i=1;$i<=10;$i++){ echo '<option>'.$i.'</option>'; } echo '<input type="submit" value="Odoslať">'; echo '</select></form>'; } else { echo 'Vaše hodnotenie: '.$vasa_znamka; } echo '<br />'; $sql = "SELECT id_clanku,znamka FROM hodnotenie WHERE id_clanku='" . intval($_GET["id_knihy"]) . "'"; $vysledok = mysql_query($sql) or die(mysql_error()); while($data = mysql_fetch_array($vysledok)){ $sucet=($sucet+($data['znamka'])); $pocet++; } $priemerne_hodnotenie=($sucet/$pocet); echo 'Priemerné hodnotenie: '.round($priemerne_hodnotenie,2); } else { return false; } |
||
Samo Profil |
#6 · Zasláno: 24. 1. 2011, 16:53:11
Tak som trocha prerobil ten formulár, otázka smeruje prečo ak $hodnotenie == true; nefuguje???
if ($hodnotenie_on_off==1){ echo '<br />'; echo '<br />'; echo '<font>Hodnotenie užívateľov</font>'; echo '<br />'; require_once(DB); $sql = (mysql_query("SELECT * FROM hodnotenie WHERE id_clanku='" . intval($_GET["id_knihy"]) . "' AND ip_adresa='".($_SERVER["REMOTE_ADDR"])."'")); $data = mysql_num_rows($sql); if ($data){ $hodnotenie == false; } else { $hodnotenie == true; } /*while ($data = mysql_fetch_array($sql, MYSQL_BOTH)){ $ip_adresa2=$data['ip_adresa']; $vasa_znamka=$data['znamka']; $hodnotenie==false; } */ if ($hodnotenie == true) { if (isset($_POST['znamka'])){ $id_clanku = htmlspecialchars(intval($_GET["id_knihy"])); $znamka = htmlspecialchars($_POST['znamka']); $ip_adresa = ($_SERVER['REMOTE_ADDR']); $sql = (mysql_query("INSERT INTO hodnotenie(id_clanku,znamka,ip_adresa) VALUES('$id_clanku','$znamka','$ip_adresa')")); if($sql){ echo 'Hodnotenie bolo odoslané!'; } else { echo 'Prepáčte, nastala chyba!'; } } echo '<form action="" method="post"><select name="znamka">'; for ($i=1;$i<=10;$i++){ echo '<option>'.$i.'</option>'; } echo '<input type="submit" value="Odoslať">'; echo '</select></form>'; } else { echo 'Vaše hodnotenie: '.$vasa_znamka; } echo '<br />'; $sql = "SELECT id_clanku,znamka FROM hodnotenie WHERE id_clanku='" . intval($_GET["id_knihy"]) . "'"; $vysledok = mysql_query($sql) or die(mysql_error()); while($data = mysql_fetch_array($vysledok)){ $sucet=($sucet+($data['znamka'])); $pocet++; } $priemerne_hodnotenie=($sucet/$pocet); echo 'Priemerné hodnotenie: '.round($priemerne_hodnotenie,2); } else { return false; } |
||
Tori Profil |
#7 · Zasláno: 24. 1. 2011, 17:01:27
řádky 10 + 13 - máte tam porovnání místo přiřazení (rovnítko navíc).
|
||
Samo Profil |
#8 · Zasláno: 24. 1. 2011, 17:05:30
ďakujem, už to ide ;)
|
||
Časová prodleva: 13 let
|
0