Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Prosty Typer Piłkarski
adams1692
post 30.05.2017, 13:27:03
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 4.04.2013
Skąd: Uniejów

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


Witam, postanowiłem zabrać się za stworzenie typera na swoją stronę, jednak nie za bardzo wiem jak mam sobie poradzić. Otóż, posiadam stworzone trzy tabele w bazie danych o nazwach terminarz, typer_typy oraz typer_tabela. Poniżej zawartość tabeli:

terminarz:
  1. (`id`, `kolejka`, `dzien`, `godzina`, `dom`, `wynikdom`, `wynikwyjazd`, `wyjazd`)


typer_typy:
  1. (`id`, `dom`, `wynikdom`, `wynikwyjazd`, `wyjazd`, `data`, `kolejka`, `userid`)


typer_tabela:
  1. (`id`, `dom`, `wynikdom`, `wynikwyjazd`, `wyjazd`, `data`, `kolejka`, `userid`, `punkty`)


Chodzi mi o to, żeby dodając wynik do terminarza, baza porównywała wyniki z tabeli typer_typy i dodawała odpowiednie punkty do tabeli typer_tabela. Największy problem mam z kolumną userid, ponieważ w terminarzu nie mam tej wartości i nie wiem jak to dodać do bazy typer_tabela. Zasada jest generalnie prosta, jeżeli wynik się zgadza i jest trafiony, user dostaje 3 punkty, kiedy zgadza się zwycięzca dostaje 1 punkt natomiast jeżeli wynik jest nietrafiony otrzymuje 0. Jest ktoś w stanie mi pomóc z tym tematem? Z góry dzięki!

Odgrzewał temat, jest ktoś w stanie mi pomóc w tym temacie?
Go to the top of the page
+Quote Post
bostaf
post 1.06.2017, 19:08:21
Post #2





Grupa: Zarejestrowani
Postów: 374
Pomógł: 79
Dołączył: 6.04.2010
Skąd: Ostrów Wielkopolski

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


Cytat(adams1692 @ 30.05.2017, 14:27:03 ) *
Chodzi mi o to, żeby dodając wynik do terminarza, baza porównywała wyniki z tabeli typer_typy i dodawała odpowiednie punkty do tabeli typer_tabela

Czyli musisz poczytać o triggerach. Tam są przykłady, i opisana jest pełna składnia.

  1. CREATE TRIGGER dodaj_punkty AFTER UPDATE ON terminarz
  2. ...
Go to the top of the page
+Quote Post
adams1692
post 12.10.2017, 12:08:34
Post #3





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 4.04.2013
Skąd: Uniejów

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


Nie za bardzo wiem jak się za to zabrać... Jestes w stanie dać mi jakieś wskazówki?
Go to the top of the page
+Quote Post
Wazniak96
post 12.10.2017, 14:14:21
Post #4





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

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


Kolega wyżej podał już wystarczająco dużo wskazówek.

Możesz pójść w trochę łatwiejszy dla laika sposób(jeśli nie masz zbytnio wiedzy o SQL) i po prostu napisać skrypt w PHP zajmujący się porównywaniem tabel oraz uzupełnianiem braków i dodać go do Crontab.
Go to the top of the page
+Quote Post
sabat24
post 12.10.2017, 15:29:00
Post #5





Grupa: Zarejestrowani
Postów: 175
Pomógł: 26
Dołączył: 13.09.2007
Skąd: Gdańsk

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


Można i bez crona. Po prostu po dodaniu wyniku, robisz zapytanie sumujące punkty użytkowników, którzy obstawili dany mecz i ich aktualizujesz. Trzeba trochę zmienić strukturę i powiązać typy z terminarzem (typ jest do meczu, a nie do kolejki) i do tabeli typy dodać nowe pole określające zwycięzce (1, X, 2). Wpisując wynik do tabeli terminarz poza wynikiem dom - wyjazd, wpisujesz zwycięzce (1, x, 2). Wtedy coś w stylu SUM_IF typ_dom = wynik_dom AND typ_wyjaz = wynik_wyjazd TO 2 JAK_NIE_TO 0 as trafiony_dokladny, SUM_IF zwyciezca_typ = zwyciezca_wynik TO 1 JAK_NIE_TO 0 as trafiony_zwyciezca. Grupujesz takie zapytanie po ID typera i robisz mu update punktów za daną kolejkę sumując pola trafiony_zwyciezca i trafiony_dokladny.

Da się to zrobić nawet w jednym, rozsądnym zapytaniu, ewentualnie z podzapytaniem, ale trzeba posiedzieć nad strukturą i sqlem.

Ten post edytował sabat24 12.10.2017, 15:30:31
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: 19.04.2024 - 19:32