Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Sprawdzanie zdublowanych danych przed wysłaniem do bazy danych
mirobor
post
Post #1





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 1.02.2014

Ostrzeżenie: (0%)
-----


Witam,
Mam tabelę: films
|film_id|user_id|

Która przechowuje głosy oddane przez userów na dany film.
Userzy głosują na 10 pozycji. Jeżeli przy wysłaniu formularza nie wykorzystają 10 głosów mogą jeszcze oddać kolejne do max 10 łącznie.
Nie mogę poradzić sobie ze sprawdzeniem, czy podczas kolejnego głosowania user nie głosuje na te same pozycje, na które zagłosował wcześniej.
Na przykładzie:
Podczas pierwszego wysłania danych z formularza user_id=300 zagłosował na 3 film_id=1,5,6
Formularz ma wciąż aktywny, gdyż może oddać jeszcze 7 głosów. W jaki sposób sprawdzić, czy ponownie nie zagłosuje na te same film_id.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A w tym polu film_id ty faktycznie trzymasz IDki oddzielone przecinkami czy moze kazdy film to oddzielny rekord?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mirobor
post
Post #3





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 1.02.2014

Ostrzeżenie: (0%)
-----


Oczywiście oddzielne rekordy.
|film_id|user_id|
|2 | 320 |
|3 | 320 |
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to git:
zakladasz klucz uniqe na oba pola i juz sama baza nie pozwoli ci zdublowac filmu dla danego usera.
A od biedy mozesz tez sprawdzac zwyklym zapytaniem czy dla danego usera dany film juz jest czy nie. W czym problem?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mirobor
post
Post #5





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 1.02.2014

Ostrzeżenie: (0%)
-----


Faktycznie o uniqe nie pomyślałem, ale tak czysto teoretycznie... jeżeli z formularza wychodzi np 8 głosów(czyli 8*film_id) to w jaki sposób skonstruować zapytanie aby każdy z nich sprawdzić pod kątem dubli z już istniejącymi dla danego usera.
Dziękuję @nospor
Go to the top of the page
+Quote Post
ziolo
post
Post #6





Grupa: Zarejestrowani
Postów: 82
Pomógł: 20
Dołączył: 17.01.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


A nie lepiej przy ponownym glosowaniu wyswietlac tylko te filmy w formularzu na ktore jeszcze uzytkownik nie glosowal ?

@nospor- może ale nie robimy systemu bankowego, a tutaj przy kluczu unique system po prostu takie glosy pominie i nic wielkiego sie nie stanie,
tak czy siak dla user friendly na pewno lepiej bedzie jesli ponownie nie wyswietli filmow juz ocenianych, a dodatkowe zabezpiecznie dla takiego hakera co wysle swoj request mozna zrobic opcjonalnie i wyslac mu informacje zwrotna ze nie moze czegos takiego robic

Ten post edytował ziolo 26.05.2014, 09:27:57
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Robisz 8 oddzielny zapytan i sprawdzasz po kolei. To zadne obciążenie dla bazy.

@ziolo user moze tak spreparowac dane, ze pomimo twojego "zabezpieczenia" i tak wysle filmy, na ktory juz glosowal. mirobor robi dobrze ze chce sprawdzac.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mirobor
post
Post #8





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 1.02.2014

Ostrzeżenie: (0%)
-----


Otóż to. Chcę się także uchronić przed spreparowanym chceckboxem.
Jeżeli do 9 zapytań będzie ok, to w porządku.

Cytat(ziolo @ 26.05.2014, 10:20:05 ) *
A nie lepiej przy ponownym glosowaniu wyswietlac tylko te filmy w formularzu na ktore jeszcze uzytkownik nie glosowal ?

@nospor- może ale nie robimy systemu bankowego, a tutaj przy kluczu unique system po prostu takie glosy pominie i nic wielkiego sie nie stanie,
tak czy siak dla user friendly na pewno lepiej bedzie jesli ponownie nie wyswietli filmow juz ocenianych, a dodatkowe zabezpiecznie dla takiego hakera co wysle swoj request mozna zrobic opcjonalnie i wyslac mu informacje zwrotna ze nie moze czegos takiego robic

W sumie jest podobnie do tego jak napisałeś. W js napisałem prostą funkcję, która po zagłosowaniu powoduje disabled i checked dla filmów na które user już zagłosował.
Jestem mały pikuś, ale myślę sobie tak... normalni userzy zagłosują zwyczajnie i uczciwie i to dla nich powinny być jasne komunikaty. Hackerem o którym piszesz nie ma co się zajmować w kwestii komunikowania mu czegokolwiek. Spreparował chceckboxa, sprawdził, że głosy nie zostały dodane i koniec pieśni. Musi z tym żyć.
Czy może się mylę?

Ten post edytował mirobor 26.05.2014, 09:27:11
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Hackerem o którym piszesz nie ma co się zajmować w kwestii komunikowania mu czegokolwiek. Spreparował chceckboxa, sprawdził, że głosy nie zostały dodane i koniec pieśni. Musi z tym żyć.
No i prawidlowo. Jesli oczywiscie zalozysz te UNIQUE o ktorym pisalem jako pierwszy glowny punkt smile.gif

Sprawdzac tez mozesz jednym zapytaniem: pobierasz wszystkie filmy na jakie glosowal user (to jedno zapytanie) i sprawdzasz potem juz w php czy znajduje sie jakis co user swiezo wyslal


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mirobor
post
Post #10





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 1.02.2014

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 26.05.2014, 10:41:17 ) *
No i prawidlowo. Jesli oczywiscie zalozysz te UNIQUE o ktorym pisalem jako pierwszy glowny punkt smile.gif

Założyłem UNIQUE i rozwiązało to moje problemy. Wydaję mi się, że to wystarczy. Czy uważasz, że powinienem mimo wszystko sprawdzać to dodatkowym zapytaniem?
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jesli dla normalnych userow, nie wyswietlasz filmow, na ktore juz glosowali, to wydaje mi sie ze nie musisz.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 10:04