![]() |
![]() ![]() |
![]() |
-LUCU- |
![]()
Post
#1
|
Goście ![]() |
Witam!
PHP/mySQL działa tylko i wyłącznie lokalnie więc nie ma mowy o cookies i ip. Mam problem ze skryptem, który będzie pozwalał tylko raz głosować zalogowanemu użytkownikowi. Do rzeczy - 3 tabele : Users, Utwory, Głosy W tabeli Głosy mamy pola: id_oceny id_utworu id_usera ocena W jaki sposób sprawdzić czy user głosował już wcześniej na utwór? Teoretycznie to proste bo wystarczy wysłać zapytanie czy id_usera oraz id_utworu znajduje się w tabeli Głosy ale słaby jestem i nie wiem w jaki sposób napisać kod, z góry dzięki za pomoc! |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
O to chodzi? -------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 17 Dołączył: 17.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
Kod SELECT id_oceny FROM oceny WHERE id_utworu = 10 AND id_usera = 13; Jak coś znajdzie znaczy że user już głosował. //ah byłem 2 Ten post edytował szalek01 5.10.2012, 01:10:48 -------------------- PDO nie gryzie....
|
|
|
-LUCU- |
![]()
Post
#4
|
Goście ![]() |
Dzięki za pomoc
![]()
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 374 Pomógł: 79 Dołączył: 6.04.2010 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
mimo tego , że tabela 'głosy' jest pusta zawsze jest echo 'juz glosowales'
Zobacz w manualu, jaki rezultat zwraca funkcja mysql_query: "For SELECT [...] mysql_query() returns a resource on success, or FALSE on error." - zwraca zasób. Porównywanie do integera zawsze zwróci fałsz. Zanim zaczniesz porównywać, musisz ten zasób obrobić, na przykład funkcją mysql_fetch_assoc:
Proponowałbym nieco prostszą metodę sprawdzenia w bazie, czy user głosował, bez COUNT - wtedy wynik zapytania zwróci 0 albo więcej wierszy i sprawdzenie sprowadzi się do policzenia ilości wierszy funkcją mysql_num_rows:
No i na koniec najważniejsze. Widzisz te czerwone ramki w opisach każdej funkcji mysql_ w manualu? "Sugerowane alternatywy Nie zaleca się stosowania tego rozszerzenia [mysql]. W zamian powinno używać się rozszerzenia MySQLi lub PDO_MySQL" To nie jest czyjaś subiektywna opinia. To jest zalecenie twórców PHP. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
num_rows jest mniej wydajny od COUNT, bo w pierwszym przypadku zapytanie pobiera wszystkie wyniki, w drugim są jedynie zliczane. W celu tylko sprawdzenia ilości wyników, bez konieczności ich przetwarzania nie należy stosować num_rows.
Ten post edytował b4rt3kk 9.10.2012, 12:54:50 -------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 374 Pomógł: 79 Dołączył: 6.04.2010 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
num_rows jest mniej wydajny od COUNT Zdecydowanie. Chociaż subiektywnie objawia się to przy dużej ilości wierszy. Dla przykładu wyniki eksperymentu z tabelą z 20 000 wierszy i z tabelą z 2 000 000 wierszy (tylko dwie takie same kolumny w obu):
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 09:52 |