Autor Zpráva
Michales
Profil
Dobrý den,
nevím jestli toto téma zařazuji do správné sekce ale týká se to php tak doufám že ano.
Zde tento kod : http://pastebin.com/RVizuw6N
Mi dělá tento výpis zápasů:
http://michales.eu/kriz.php?conf=3

Mohl by mi někdo poradit jak místo takového výpisu vytvořit křížovou tabulku?
Křížová tabulka:http://cs.wikipedia.org/wiki/%C5%A0a...t%C3%BDm%C5%AF

Jsem ochotný i něco málo zaplatit za přetvoření.
Díky všem kteří se mi budou snažit poradit nebo pomoct přetvořit.
Kcko
Profil
Ulozis si do pole zápasy a to v podobě

$pole[$domaci][$hoste] = $vysledek;

A pak přes 2 cykly v sobě vypíšeš, není na tom nic složitého. Jestli tedy myslíš tuto křížovou tabulku
Michales
Profil
Ano tu přesně myslím, ale Vaše rada mi nějak nepomohla.
Nešlo by to malinko rozvést?
Michales
Profil
Tak mám hotovo.
Kdyby někdo někdy chtěl tak zde je script:
<?php

/* Puvodni kod */
$body = intval($_GET['body']);                //načte hodnotu z URL
if($body==3){require "settings_3.php";}    //použije nastavení pro 3 bodový systém
else{require "settings_2.php";}
 
if (isset($_GET['conf'])) {
    $confid = intval($_GET['conf']);
}
else {
    $confid = 0;
}



// Ziskani dat
 $queryscores="SELECT 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_wins.winortie != 3 ORDER BY sportsdb_wins.winid";
 
// Sort by team if specified
$resultscores=mysql_query($queryscores);
$numscores=mysql_num_rows($resultscores);
$html = "";                    // hlavni HTML zasobnik

// neni nulovy pocet zapasu
if($numscores > 0){

    /* Pouzite promenne */
    $teams = Array();            // ciselnik tymu
    $team_matches = Array();    // vazba tymu na zapas
    $matches = Array();            // zapasy
    $matches_data = Array();    // data zapasu

    for($a = 0; $a < $numscores; $a++){
        
        $data = mysql_fetch_array($resultscores);

        // ciselnik tymu
        $team_matches[$data["winner"]][] = $data["winid"];
        $team_matches[$data["loser"]][] = $data["winid"];

        // zapasy
        $matches["id"][] = $data["winid"];

        $matches_data[$data["winid"]]["winner"] =  $data["winner"];
        $matches_data[$data["winid"]]["loser"] =  $data["loser"];

        // skore zapasu
        if($data["rf"] > $data["ra"]){
            $matches_data[$data["winid"]]["winner_score"] =  $data["rf"];
            $matches_data[$data["winid"]]["loser_score"] =  $data["ra"];
        }
        else{
            $matches_data[$data["winid"]]["winner_score"] =  $data["ra"];
            $matches_data[$data["winid"]]["loser_score"] =  $data["rf"];
        }

        // ciselnik tymu
        if(isset($teams[$data["winner"]]) == false){
            $teams[$data["winner"]] = $data["winningteam"];
        }
        if(isset($teams[$data["loser"]]) == false){
            $teams[$data["loser"]] = $data["losingteam"];
        }
    }

    // abecedni razeni tymu;
    asort($teams);

    // prijatelejsi indexovane pole pro tabulku
    $teams_sorted = Array();

    foreach($teams as $key => $value){
        
        $teams_sorted["id"][] = $key;
        $teams_sorted["name"][] = $value;
    }

    // horni radek
    $html .= "<tr>".PHP_EOL;
    $html .= "<td>X</td>".PHP_EOL;
    for($a = 0; $a < count($teams_sorted["id"]); $a++){
        
        $html .= "<th>".$teams_sorted["name"][$a]."</th>".PHP_EOL;
    }
    $html .= "</tr>".PHP_EOL;

    // pro kazdy radek
    for($a = 0; $a < count($teams_sorted["id"]); $a++){

        $html .= "<tr>".PHP_EOL;

        // pro kazdry sloupec
        for($b = 0; $b < count($teams_sorted["id"])+1; $b++){

            $html .= "<td>".PHP_EOL;
            $left_team_id = $teams_sorted["id"][$a];

            // prvni sloupec - jmeno
            if($b == 0){
                $html .= "<strong>".$teams[$left_team_id]."</strong>";
            }
            
            // kazdy dalsi - vysledek nebo X
            else{
                $upper_team_id = $teams_sorted["id"][$b-1];
                

                // stejne tymy - X
                if($left_team_id == $upper_team_id){
                    
                    $html .= "X".PHP_EOL;
                }

                // skore
                else{

                    // spolecene zapasy
                    $common_matches = (array_intersect($team_matches[$left_team_id], $team_matches[$upper_team_id]));
                    $common_matches_id = array_values($common_matches);

                    // pokud existuji
                    if(count($common_matches_id) > 0){

                        // pro kazdy zapas
                        for($c = 0; $c < count($common_matches_id); $c++){

                            // id zapasu
                            $match_id = $common_matches_id[$c];

                            // vitez / skore 
                            if($matches_data[$match_id]["winner"] == $upper_team_id){
                                
                                $upper_team_score = $matches_data[$match_id]["winner_score"];
                                $left_team_score = $matches_data[$match_id]["loser_score"];
                                
                                $upper_class = "win";
                                $left_class = "lose";
                            }
                            else{
                                
                                $upper_team_score = $matches_data[$match_id]["loser_score"];
                                $left_team_score = $matches_data[$match_id]["winner_score"];

                                $upper_class = "lose";
                                $left_class = "win";
                            }
        
                            $html .= "<div class=\"row\"><span class=\"".$left_class."\">".$left_team_score."</span>:<span class=\"".$upper_class."\">".$upper_team_score."</span></div>";PHP_EOL;

                        }
                    }

                    // neexistuji - tecka
                    else{

                        $html .= ".".PHP_EOL;
                    }
                }
            }
            
            $html .= "</td>";
        }
    }
}
 
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Automatické tabulky</title><center>
 
</head>
<body>

<style type="text/css">
body { font-family: Arial; font-size: 10px;}
table { border-collapse:collapse; }
table,th, td { border: 1px solid black; }
.lose { color: #D90000; }
.win { color: #336600; }
.row { width: 100%; }
</style>
 
<table style="text-align: center;">

   <?php echo $html; ?>

</table>
 
</body>
</html>

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:

0