Autor Zpráva
Feryy
Profil *
Zdravím,

potřeboval bych trošku nakopnout. Mám naprogramovanou jednoduchou tipovačku, kde se tipují přesné výsledky (správný tip přesného výsledku +3 body, správný tip vítěze +1). Dá se zobrazit samozřejmě tipy daného uživatele, ale chtěl bych připravit stránku, která by vypsala tipy všech uživatelů. Tzn nějak takto:

                   Výsledek    Uživatel1    Uživatel2     Uživatel3
ČR - FIN          1:2         1:3 (+1)     1:2 (+3)       2:1 (+0)
RUS - CAN       3:2         3:3 (0)       3:1 (+1)       3:2 (+3)

Tabulka mám následující:
tipy (`id`, `zapas_id`, `uzivatel_id`, `vysledek`, `tip`, `body`)
uzivatele (id, prihlasovaci_jmeno)
tymy (id, nazev)
zapasy (`id`, `datum`, `turnaj_id`, `soutez_id`, `domaci_id`, `hoste_id`, `vysledek`, `tip`)

Potřeboval bych nakopnout, jak udělat výpis do tabulky, viz výše.

Díky moc za jakoukoliv pomoc
peta
Profil
Chces SQL dotaz v tematu PHP? Spatne tema. A tvuj pokus byl...? Zadny.

-- vysledky
SELECT
  CONCAT(b.nazev,' - ',c.nazev),
  a.vysledek
FROM
  zapasy a
     LEFT JOIN tymy b ON b.tym_id=a.domaci_id
     LEFT JOIN tymy c ON c.tym_id=a.hoste_id

-- uzivatel, tip, body
SELECT
  c.prihlasovaci_jmeno,
  a.tip,
  a.body
FROM
  tipy a
    LEFT JOIN zapasy b ON b.zapas_id=a.zapas_id
    LEFT JOIN uzivatele c ON c.uzivatel_id = a.uzivatel_id
WHERE
  a.zapas_id=1
A jenom to propojis a tez si oprav idecka.
Feryy
Profil *
Teď nevim zda jsem to dobře napsal, nebo jsi to špatně pochopil. Já si umim napsat dotaz jako je např. tenhle:

select t1.nazev domaci, t2.nazev hoste, z.vysledek, u.prihlasovaci_jmeno, t.vysledek
from zapasy z
left join tymy t1 on t1.id = z.domaci_id
left join tymy t2 on t2.id = z.hoste_id
left join tipy t on t.zapas_id = z.id
left join uzivatele u on u.id = t.uzivatel_id

Ten mi vypíše všechny zápasy a tipy jednotlivých uživatelů, ale jen formou seznamu. Já potřebuju vymyslet, jak udělat tabulku, viz výše.

Takže trošku klídek, zase. Nikde nepíšu že chci hotový řešení, jen potřebuju nakopnout, protože mě nenapadá jak nejlépe to udělat. Navíc to tvoje řešení mi pomůže jak?

Předpokládám že na tohle budu potřebovat operace v PHP, abych přišel na řešení.

Díky za případnou pomoc.
Kajman
Profil
Feryy:

Data z dotazu si projděte a přeuložte do dvojrozměrného php pole. (Pro hodnoty druhého rozměru si můžete udělat pomocné pole, ať se sedí sloupce, pokud tam tip v daném řádku nebyl.)
peta
Profil
Asi bych to delal podobne.
Vytahl bych si seznam vsech uzivatelu, kteri tipovali, seradil podle id_uzivatele (S1).
Vytahl bych si seznam vsech tipu, seradil podle podle id_zapasu, id_uzivatele. Tim budu mit vse kolem jednoho zapasu pohromade. (S2)
Pak bych si udelal z S1 pole $uziv[id] = array(); (P1)
A pak uz jen prochazel S2, vybral vsechna data pro jeden zaznam, doplnil do kopie pole P1 (KP1). Pak udelal z KP1 html tr radek. Totez pro dalsi id zapasu. (nejsem si ted jisty, jestli jde udelat kopii pouhym $kp1 = $p1; nebo je nutne pouzit cyklus).

Asi by to slo udelat i jednim SQL dotazem, ale prijde mi to zbytecne komplikovane na dotaz, proto jsem se ho ani nepokousel sestavit.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: