| 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: 15 let
|
|||
0