Wątek zablokowany 2018-10-19 10:46 przez Patryk27.

Skrypt głosowania php

0

Witam. Robię prosty skrypt głosowania w php.

Wszystko szło mi bez przeszkód, do momentu w którym musiałem zablokować ponowną możliwość głosowania.
Wybrałem rozwiązanie z IP i jego zapisem do bazy danych gdyż: sesja się sypie, ciastka można wyłączyć/usunąć.

W tabeli glosy mam : id, glos, ip, rekord.

Poprawnie zapisuję wyniki glosowania, lecz gdy chcę sprawdzić czy ktoś głosował, wyskakuje mi błąd.
Próbowałem tak :

$query = mysql_query("SELECT * FROM oceny WHERE rekord = ".$_GET['id']." AND ip = ".$_SERVER[REMOTE_ADDR]." ");
				$liczba = mysql_num_rows($query);
if ($liczba >0 ) { echo "Głosowałeś już";}
 

Gdy tak zrobię, wyskakuje mi błąd :

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in [ścieżka] on line [linia] 

I tu moja prośba, czy mógłby ktoś pomóc mi to rozwiązać ? Ewentualnie poprawić to co zrobiłem ?

Bardzo proszę i z góry dziękuję! Pozdrawiam

0

Hm...

$_SERVER[REMOTE_ADDR]

->

$_SERVER['REMOTE_ADDR']
0

Nie Patryk, nie w tym rzecz. Próbowałem już tak, dalej ten sam błąd.
Uprzejmie proszę o dalszą pomoc :)

1
$query = mysql_query("SELECT * FROM oceny WHERE rekord='$_GET[id]' AND ip='$_SERVER[REMOTE_ADDR]'");
0

2 pomysły:

  1. Brak połączenia z bazą.
  2. ip w apostrofach.
0

Nauczcie się sprawdzać czy zapytanie nie zwróciło FALSE, a jeśli tak rzucać wyjątkiem z mysql_error(). Problem solved.

0

Jak już to

$liczba = mysql_num_rows("SELECT * FROM oceny WHERE rekord = ".$_GET['id']." AND ip = ".$_SERVER[REMOTE_ADDR]);
if ($liczba >0 ) { echo "Głosowałeś już";}
//a lepiej
$liczba =  mysql_fetch_object(mysql_query("SELECT COUNT(*) AS row_count FROM oceny WHERE rekord = ".$_GET['id']." AND ip = ".$_SERVER[REMOTE_ADDR]));
0

Zanim zaczniecie [CIACH!] głupoty jak zwykle proponuję chociaż PRZECZYTAĆ WPIS W MANUALU I ZOBACZYĆ PRZYKŁADY

http://ipu.4programmers.net/6f9a/geniusze_mysqla.jpg

Wymyślanie użycia z d**y i korzystanie ze stałych które nie istnieją żeby się evalnęły do stringa (ave REMOTE_ADDR) przyprawia o gorączkę.

0

Rozwiązane z pomocą gienka (dziękuję)

$liczba = mysql_num_rows($query = mysql_query("SELECT * FROM oceny WHERE rekord='$_GET[id]' AND ip='$_SERVER[REMOTE_ADDR]'"));
				if ($liczba > 0) {echo "Głosowaleś już dzisiaj";} 

Do zamknięcia.

2
krzysiek2541 napisał(a)

Rozwiązane z pomocą gienka (dziękuję)

$liczba = mysql_num_rows($query = mysql_query("SELECT * FROM oceny WHERE rekord='$_GET[id]' AND ip='$_SERVER[REMOTE_ADDR]'"));
				if ($liczba > 0) {echo "Głosowaleś już dzisiaj";} 

Do zamknięcia.

?id='; DROP TABLE oceny ;--
I twoja tabela znika.

1 użytkowników online, w tym zalogowanych: 0, gości: 1