Autor Zpráva
Michales
Profil
Ahoj,

prosím o radu jak zobrazit jen jeden zápas u každého týmu.
Níže uvedený dotaz mi vypisuje všechny zápasy které danný tým odehrál. Já bych potřeboval zobrazit jen jeden zápas u každého týmu.
// Ziskani dat
$queryscores="SELECT CASE WHEN sportsdb_wins.winortie IN (2,5) THEN 'p' ELSE '' END AS priznak, sportsdb_wins.winid, sportsdb_wins.windate, sportsdb_wins.wintime, sportsdb_wins.rf, sportsdb_wins.ra, sportsdb_wins.winner,
    sportsdb_wins.loser, sportsdb_wins.wincomments, sportsdb_wins.field, sportsdb_wins.winortie, sportsdb_teams2.teamname AS winningteam,
    sportsdb_teams.teamname AS losingteam
    FROM sportsdb_wins
    LEFT JOIN sportsdb_teams ON sportsdb_wins.loser = sportsdb_teams.teamid
    LEFT JOIN sportsdb_teams AS sportsdb_teams2 ON sportsdb_wins.winner = sportsdb_teams2.teamid
    LEFT JOIN sportsdb_divs ON sportsdb_teams.teamdiv = sportsdb_divs.divid
    LEFT JOIN sportsdb_divs AS sportsdb_divs2 ON sportsdb_teams2.teamdiv = sportsdb_divs2.divid
    WHERE (sportsdb_divs.conference = $confid OR sportsdb_divs2.conference = $confid OR (sportsdb_wins.winconf = $confid AND (sportsdb_wins.loser = -1 OR sportsdb_wins.winner = -1)))AND sportsdb_divs.aktive = 1 AND sportsdb_wins.winortie != 3";

// Třídit podle týmu
if (isset($_POST['teamtosort']) && $_POST['teamtosort'] != 'all') {
    $teamtosort = intval($_POST['teamtosort']);
    $queryscores .= " AND (sportsdb_wins.winner = $teamtosort OR sportsdb_wins.loser = $teamtosort)";
}

$queryscores .= ' ORDER BY winid DESC ';
$resultscores=mysql_query($queryscores);
$numscores=mysql_num_rows($resultscores);
$html = "";                    // hlavni HTML zasobnik

Zobrazení: Křížová tabulka
Kajman
Profil
Sice nechápu cíl, ale přjde mi, že to omezení bude nejjednodušší zaimplementovat do aplikace (php kódu), co dělá tu křížovou tabulku.
Michales
Profil
Kajman:
Možná bude jednodušší ale zbytečně bych tahal všechny výsledky, když chci jen ten poslední.
Celý script
Kajman
Profil
Michales:
Pokud má být poslední vzájemný zápas (tedy u jednoho týmu více zápasů, ale v každém chlívku, jen jeden), stačí přeci přidat na řádek 172 příkaz
break;
Těch pár kB na chvíli v paměti navíc serveru neublíží.
Michales
Profil
Kajman:
Ano to já vím že to stačí.
Ale nastíním více oč mi jde.
Nahoře chci mít čísla 1. 2. 3. 4.
Ty čísla pak předávat pomocí $_GET do proměnné kterou využít v sql dotazu v OFFSETU.
Prostě udělat přepínání mezi zápasy. Zobrazovat první, druhý, třetí a čtvrtý zápas po kliku na příslušné číslo.

Přes php mě nenapadá jak to udělat. Proto ten nápad že by to mohlo jít přes sql pomocí LIMIT a OFFSET
Kajman
Profil
Tak to bych vypsal všechny a jen javascriptem zobrazoval první, druhý, třetí a čtvrtý zápas.
Michales
Profil
Kajman:
Nenapada me jakym zpusobem
Kajman
Profil
Např. v php si na řádku 171 označit pořadí
$html .= "<div class=\"row match_last match_last_".$c+1."\">..."
V css stylech si nachystat něco jako

body.umi_javascript .match_last {display:none}
body.match_last_1 .match_last_1, body.match_last_2 .match_last_2, body.match_last_3 .match_last_3, body.match_last_4 .match_last_4 {display:block}

A javascriptem si nazačátku nastavit pro body class, že prohlížeč umí javascript.
document.body.className+='umi_javascript ';
Potom javascriptem měnit u body class match_last_1 až match_last_n podle toho, který zápas má být zobrazen.
document.body.className=document.body.className.replace(/match_last_[0-9]+/,'')+' match_last_'+x;


Ono by to šlo i jednoduše v tom php skriptu, ale právě tady bude zbytečné přenášení spousty dat spojených s tabulkou.
Stačilo by místo for cyklu na řádku 144 nastavit $c na "chtěné pořádí zápasu mínus jedna".

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: