Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zaprojektowanie bazy. Dylemat
qjam
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 1
Dołączył: 31.07.2011

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


Witam.

Potrzebuję zaprojektować bazę danych. Od 2-3 lat nie siedziałem w PHP i sporo zapomniałem... włącznie z odwołaniami do bazy (IMG:style_emoticons/default/tongue.gif) Ale nie w tym rzecz. Projektuje stronę na której będą do rozwiązywania testy będzie to wyglądało tak.

Strona ma kategorie i podkategorie:
+ sport
- piłka nożna
- siatkówka
+ muzyka
- hip-hop
- rock

Użytkownik wchodzi w kategorie, wyświetla się lista testów. Użytkownik wybiera test, rozwiązuje, liczone są pkt i dodawane do jego uzbieranych punktów. No i teraz pojawia się dylemat. W jaki sposób zabronić użytkownikowi, a raczej uniemożliwić ponownego rozwiązywania tego samego testu? Po prostu jeden test, jedno podejście.

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





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




Tabela dodatkowa
TEST_USER z polami
ID_TEST
ID_USER

Jak user wypelni test to wkładasz rekord do tej tabeli.
A jak chce wypełniać dany test to patrzysz czy już istnieje jego rekord dla tego testu czy nie
Go to the top of the page
+Quote Post
Michael2318
post
Post #3





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


W bazie będziesz miał ID poszczegółnych testów, tak samo w tabeli z userami będziesz miał ID wszystkich userów. Przykładowe rozwiązanie:

tabela `testy_rozwiazane`:
Cytat
| USER_ID | TEST_ID |


i jako user_id podajesz id usera, ktory dany test rozwiązał, a jako test_id - podajesz id testu, który był rozwiązywany.
Sprawdzanie czy dany user o id=13 już rozwiązywał test o id=15:
  1. SELECT COUN(*) AS counter FROM `testy_rozwiazane` WHERE user_id = 13 AND test_id = 15;

Jeśli counter zwróci liczbę większą niż 0 to dany user rozwiązywał juz dany test (IMG:style_emoticons/default/wink.gif)
Pamiętaj, aby nadać index'y na oby dwa pola.

Ten post edytował Michael2318 14.04.2013, 12:10:56
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.09.2025 - 13:17