Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Prosty Typer Piłkarski
Forum PHP.pl > Forum > PHP
adams1692
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?
bostaf
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. ...
adams1692
Nie za bardzo wiem jak się za to zabrać... Jestes w stanie dać mi jakieś wskazówki?
Wazniak96
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.
sabat24
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.