1Presta: PrestaShop Programátor (i Junior)
Zobrazují se odpovědi 1 až 12 z 12

Zobrazení jen jednoho zápasu u každého týmu

  1. 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.

    PHP kód:
    // 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 
    Křížová tabulka

    Celý script
    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 přidáním LIMITU a OFFSETU ale netuším jak.
    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

  2. Co se právě děje na Webtrhu?
  3. SELECT winid FROM sportsdb_wins LIMIT 1;

    // tohle zobrazí první řádek.. ale netuším, co to vlastně tam je za čísla..

    Jak jsou ty zápasy číslované v tom sloupci winid?

    Asi by bylo zajímavější:

    SELECT * FROM sportsdb_wins WHERE winid = ''KLÍČ';

  4. Citace Původně odeslal siva01 Zobrazit příspěvek
    SELECT winid FROM sportsdb_wins LIMIT 1
    Nelze to spíše zakomponovat do stávajícho sql dotazu, než vytvářet další?

  5. Nejprve bych si otestovat, jak funguje ten druhý dotaz s WHERE a to jde pak vložit do tho dotazu $queryscores, kde už ta podmínka WHERE je, takže by se jen přidalo AND..

    ---------- Příspěvek doplněn 04.04.2016 v 10:40 ----------

    Citace Původně odeslal Michales Zobrazit příspěvek
    Nelze to spíše zakomponovat do stávajícho sql dotazu, než vytvářet další?
    Jde, ale nejprve je nutné zjistit, kde jsou ta data, která chci zobrazit :)

    ---------- Příspěvek doplněn 04.04.2016 v 10:43 ----------

    $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 AND sportsdb_wins.winid = 'klíč'";

  6. PHP kód:
    $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 AND sportsdb_wins.winid ='1'"
    Nevypíše bohužel vůbec nic.

  7. A jaký zápas má winid 1? Existuje vůbec takový záznam.. Čistě teoreticky ano, ale co když není zrovna aktivní (tzn. má sportsdb_divs.aktive = 0). Je nutný se mrknout na ten sloupec winid, co je tam za data. Vybrat nějaký poslední zápas, který je aktivní a splňuje prostě všechny podmínky WHERE.

    ---------- Příspěvek doplněn 04.04.2016 v 11:00 ----------

    viz.

    Kód:
         
     $matches["id"][] = $data["winid"];
     
     $matches_data[$data["winid"]]["winner"] =  $data["winner"];
    $matches_data[$data["winid"]]["loser"] =  $data["loser"];
    Z toho je jasný, že to winid definuje zápas. Jen nevím, jestli z toho jde poznat, kolikátý byl v pořadí. Ale když už umím identifikovat id zápasu, tak někde musí jít dohledat, jaké měl pořadí.. Prostě procházat tabulky a koukat, kde jsou ta data zapsaná. Klíč bude to winid.

  8. Citace Původně odeslal siva01 Zobrazit příspěvek
    A jaký zápas má winid 1? Existuje vůbec takový záznam.. Čistě teoreticky ano, ale co když není zrovna aktivní (tzn. má sportsdb_divs.aktive = 0). Je nutný se mrknout na ten sloupec winid, co je tam za data. Vybrat nějaký poslední zápas, který je aktivní a splňuje prostě všechny podmínky WHERE.

    ---------- Příspěvek doplněn 04.04.2016 v 11:00 ----------

    viz.

    Kód:
         
     $matches["id"][] = $data["winid"];
     
     $matches_data[$data["winid"]]["winner"] =  $data["winner"];
    $matches_data[$data["winid"]]["loser"] =  $data["loser"];
    Z toho je jasný, že to winid definuje zápas. Jen nevím, jestli z toho jde poznat, kolikátý byl v pořadí. Ale když už umím identifikovat id zápasu, tak někde musí jít dohledat, jaké měl pořadí.. Prostě procházat tabulky a koukat, kde jsou ta data zapsaná. Klíč bude to winid.
    Přidám screen tabulky. Protože ve winid je jedinečné číslo které nejde po sobě. Není tak možné podle něho určit pořadí.
    http://www.jpeg.cz/images/2016/04/04/lLM4.png
    Přiložené miniatury Přiložené miniatury Klikněte na obrázek pro plnou velikost Název:  wins.png Zobrazení: 55 Velikost:  149,8 KB  

  9. V té křížové tabulce pořadí je, takže jak se to generuje tam?

  10. Citace Původně odeslal siva01 Zobrazit příspěvek
    V té křížové tabulce pořadí je, takže jak se to generuje tam?
    Řazení jako takové není, týmy se řadí podle názvu týmu

  11. V tom PHP to začíná na řádku 122. Tam je smyčka, že se mají načítat všechny zápasy. Tak místo smyčky stačí vypsat ten první.

    ---------- Příspěvek doplněn 04.04.2016 v 11:19 ----------

    A číslo zápasu je $c

  12. Citace Původně odeslal siva01 Zobrazit příspěvek
    V tom PHP to začíná na řádku 122. Tam je smyčka, že se mají načítat všechny zápasy. Tak místo smyčky stačí vypsat ten první.

    ---------- Příspěvek doplněn 04.04.2016 v 11:19 ----------

    A číslo zápasu je $c
    Ano vím že zápasy se počítají zde:
    PHP kód:
    for($c 0$c count($common_matches_id); $c++){




                                
    // id zapasu
                                
    $match_id $common_matches_id[$c]; 
    Ale netuším jak to opravit abych si mohl zobrazit jen zápasy které chci. Buď první nebo třeba čtvrtý.

  13. Stále jsem se nedostal ke správnému řešení. Prosím o pomoc.

Hostujeme u Server powered by TELE3