Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Pokoje problem
GoodStuff
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Cześć,

Otóż potrzebuję nakierowania jakie zapytania wykonać żeby to miało ręce i nogi .

Mianowicie stworzyłem nową tabelę (pokoje) w niej:
  1. `id`, `nazwa`, `gracz1`, `gracz2`, `gracz3`, `gracz4`, `gracz5`, `ts`, `tekst`


Mianowicie jeden z graczy tworzy pokój jednym buttonem wpisując nazwę pokoju, ts
do bazy dodaje się jego id jako gracza1.

Teraz naradza się problem kolejny gracz chciał by się dodać buttonem i teraz jak powinno wyglądać insert by każdy kolejny zapisywał się na gracz2 , gracz 3, gracz 4, gracz 5. I jakie zapytanie, gdy jest już 5 graczy i nikt inny nie mógł się zapisywać?
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




Zacznijmy od tego, ze masz zlą strukture bazy. Powinno byc:

tabela pokoje:
ID
NAZWA

tabela pokoj_gracz
ID_POKOJU
ID_GRACZA
Go to the top of the page
+Quote Post
GoodStuff
post
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Hmm a dlaczego w ten sposób?
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




GDyż tak się pisze poprawnie i zgodnie ze sztuką.
Go to the top of the page
+Quote Post
GoodStuff
post
Post #5





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Rozumiem, dobrze co do tabeli pokój_gracza w jaki sposób do ID_GRACZA dopisywać graczy? tak żeby było wiadomo który to który. I jak połączyć te 2 bazy razem ?
Go to the top of the page
+Quote Post
Tuminure
post
Post #6





Grupa: Zarejestrowani
Postów: 178
Pomógł: 49
Dołączył: 16.04.2012
Skąd: Bytom

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


Cytat
tabela pokoje:
ID
NAZWA

tabela pokoj_gracz
ID_POKOJU
ID_GRACZA

I oczywiście jeszcze tabelę z graczami

tabela gracz:
ID
NAZWA

Łącznie powinieneś mieć 3 tabele - jedna z opisem pokoi, druga z opisem graczy i trzecia określająca powiązania między pokojami, a użytkownikami.

Cytat
Hmm a dlaczego w ten sposób?

Wady Twojego rozwiązania:
-Zakłada, że zawsze jest 5 graczy (nie więcej, ewentualnie mniej),
-Przeszukanie czy gracz X jest przypisany do konkretnego pokoju wymaga przeszukania 5 kolumn zamiast jednej,
-Możesz umieścić jednego gracza kilka razy w tym samym pokoju.

Ten post edytował Tuminure 20.02.2015, 13:14:25
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




Cytat
jaki sposób do ID_GRACZA dopisywać graczy
Nie, w ID_GRACZA ma byc tylko jeden gracz. Jeden gracz jeden rekord. Jesli w pokoju 6 masz gracza 2 i 3 to w tabeli mają powstaw dwa rekordy
6,2
6,3

Cytat
. I jak połączyć te 2 bazy razem ?
To nie sa bazy... to są tabele. Rozróżniaj tak podstawowe pojecia.
Go to the top of the page
+Quote Post
GoodStuff
post
Post #8





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Dobra stworzyłem 2 tabele
Kod
tabela pokoje:
ID
NAZWA

tabela pokoj_gracz
ID_POKOJU
ID_GRACZA

Co chce osiągnąć , Użytkownik[a] tworzy pokój który jest zapisany w tabeli pokoje ID i NAZWA POKOJU, od razu dodawany jest rekord do tabeli pokoj_gracz z id_pokoju i id_gracz .. Teraz chciałbym żeby maksymalnie 5 użytkowników mogło dołączyć do jednego pokoju jak mogę coś takiego wykonać?

Ten post edytował GoodStuff 21.02.2015, 13:54:06
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




Gdy dochodzi kolejny gracz to sprawdzasz ile jest rekordow w tabeli pokoj_gracz dla danego pokoju. Jak mniej niz 5, to dodajesz tam kolejny rekord z akutalnym graczem.
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: 23.08.2025 - 02:11