Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Kilka wartości w jednym polu, albo jak inaczej zaprojektować bazę.
--Phobos--
post 2.01.2013, 02:43:20
Post #1





Goście







Cześć,
Chcę każdemu odnośnikowi przypisać id usera, który go kliknął, tak, żeby potem uniknąć kliknięcia go drugi raz przez tę samą osobę.

Myślałem, żeby w tabeli z odnośnikami zrobić kolumnę w której będę przechowywał id w taki sposób:
Kod
id3;id56;id81;...id17


Myślicie, że to dobry pomysł?
Możecie podpowiedzieć, jak to zapisać i odczytać?

Prosze o pomoc.

Pozdrawiam
Phobos
Go to the top of the page
+Quote Post
Saki
post 2.01.2013, 05:15:44
Post #2





Grupa: Zarejestrowani
Postów: 240
Pomógł: 2
Dołączył: 5.12.2010
Skąd: Fulda

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


Do przechowywania wielu wartości świetnie nadaje się funkcja do tworzenia kilku wartości serialize i zapisywanie do bazy.
Później wyciągasz z bazy dane i używasz funkcji unserialize. I możesz pracować dalej z danymi smile.gif

Ten post edytował Saki 2.01.2013, 05:17:50


--------------------
Moje serwisy: services.itunix.eu | spytajsie.com

Server: Debian; Desktop: Mac Mini 10.8.1, ArchLinux XFCE
Go to the top of the page
+Quote Post
mmmmmmm
post 2.01.2013, 08:02:58
Post #3





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Nie jest to dobry. Bardzo ciężko wyszukuje się w takich strukturach, czy dany user już dany link odwiedził. Już nie wspomnę o ustawianiu klucza na czymś takim.
IDEALNA struktura to:
tblLinks:
id (autoincrement) PK
address
...

tblUsers:
id (autoincrement) PK
name
...

tblClicks:
id (autoincrement) - niekoniecznie
link_id
user_id
...
Go to the top of the page
+Quote Post
phpion
post 2.01.2013, 08:04:18
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




@Saki:
serialize w tym przypadku? No proszę Cię...

@-Phobos-:
Jedyne słuszne rozwiązanie to utworzenie tabeli:
klikniecia [link_id, uzytkownik_id]
Klucz główny stanowią obie kolumny jednocześnie. Teraz żeby uniemożliwić podwójne klikanie sprawdzasz czy w tabeli istnieje odpowiedni rekord. W momencie kliknięcia (jeśli rekordu nie ma) to go wstawiasz. Ot cała filozofia.
Go to the top of the page
+Quote Post
--Phobos--
post 2.01.2013, 17:22:20
Post #5





Goście







Dzięki!
A powiedz mi jeszcze, jak sprawdzić czy istnieją wartości w bazie dla dwóch pól jednocześnie?
Go to the top of the page
+Quote Post
Pawel_W
post 2.01.2013, 17:38:06
Post #6





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


sprawdzić czy istnieje rekord WHERE id_usera = '...' AND id_linku = '...' ?
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 Wersja Lo-Fi Aktualny czas: 16.07.2025 - 03:09