0

このコードは、基本的なツリー構造のブラケットを表示します。次のことを行うために完成させようとしています:-

  1. 表示される場所:

    style="border-right:2px solid #000;"

    すべての行にこの境界線を使用しようとしていますが、このスクリプトは境界線を定義するためにチーム/シードの間に行を作成しません。すべてのチーム 1 からチーム 2 までのすべての行に対して境界線を右に表示しようとしています。他のすべてのラウンドでは、TEAM 1 から TEAM 2 など。

  2. PHP エラー報告がこの次の行を返していますが、} ELSE {?の後にも未定義のオフセットがあります。

    $line[$i] .= '<td align="center" style="border-right:2px solid #000;" colspan="2">vs</td>';
    

    3.

            $array = array('Team 1', 'Team 2', 'Team 3', 'Team 4', 'Team 5', 'Team 6', 'Team 7', 'Team 8');
            $j = count($array);
            for ($a=0; pow(2, $a) <= $j; $a++) //determine the highest power of 2 that will go into the array count
            {
                $y[$a] = 1;
                $maxpower = $a;
            }
            for ($i=1; $i < $j*2; $i++)
            {
                if($i % 2 != 0) //odd number rows for teams
                {
                    $line[$i] = '<td class="pf_title_bg" style="border-right:2px solid #000;">' . $array[($i-1)/2] . '</td>
                                 <td class="pf_content_bg" style="border-right:2px solid #000;">&nbsp;</td>';
                }
                else
                {
    
                    for($b=0; $b<=$maxpower; $b++)
                    {
    
                        $round = $b+1;              
                        $line2[$b] = ($b < $maxpower ? "<th colspan='2'>Round {$round}</th>" : "<th colspan='2'>Winner</th>");
    
                        if($i % pow(2, $b) == 0) //even rows for future rounds. every 2^1 rows for first winner, 2^2 for second winner, 2^3 for third and so on.
                        {
                            if($i % pow(2, $b+1) != 0) //does not divide by the next power of 2, so this must be the last available cell
                            {
                                $line[$i] .= '<td class="pf_title_bg" style="border-right:2px solid #000;">Team '.$b.'_'.($y[$b]++).'</td>
                                              <td class="pf_content_bg" style="border-right:2px solid #000;">&nbsp;</td>';
                            }
                            else //the input will be added in a future round
                            {
                                $line[$i] .= '<td align="center" style="border-right:2px solid #000;" colspan="2">vs.</td>';
                            }
                        }
                    }
                }
            }   
    
            //name="WIN'.$b.'_'.($y[$b]++).'                
    
            eval ("\$content = \"".$this->gettemplate("table_header")."\";");
    
            $content.="<thead><tr>";
    
            foreach($line2 as $col) 
            {
                $content.=$col;
            }
    
            $content.="</tr></thead>";
    
            foreach($line as $row)
            {
                $content.="<tbody><tr>{$row}</tr></tbody>";
            }
    
            eval ("\$content.= \"".$this->gettemplate("table_footer")."\";");
    

これに関するヘルプは非常に高く評価されています

4

1 に答える 1

0

テーブルを正しく構築していません。すべての行に tbody タグを配置していたため、HTML が無効になっていました。これは私のために働く:

<?php
$array = array('Team 1', 'Team 2', 'Team 3', 'Team 4', 'Team 5', 'Team 6', 'Team 7', 'Team 8');
            $j = count($array);
            for ($a=0; pow(2, $a) <= $j; $a++) //determine the highest power of 2 that will go into the array count
            {
                $y[$a] = 1;
                $maxpower = $a;
            }
            for ($i=1; $i < $j*2; $i++)
            {
                if($i % 2 != 0) //odd number rows for teams
                {
                    $line[$i] = '<td class="pf_title_bg" style="border-right:2px solid #000;">' . $array[($i-1)/2] . '</td>'.PHP_EOL.'<td class="pf_content_bg" style="border-right:2px solid #000;">&nbsp;</td>'.PHP_EOL;
                }
                else
                {

                    for($b=0; $b<=$maxpower; $b++)
                    {

                        $round = $b+1;
                        $line2[$b] = $b < $maxpower ? "<th colspan='2'>Round {$round}</th>".PHP_EOL : "<th colspan='2'>Winner</th>".PHP_EOL;

                        if($i % pow(2, $b) == 0) //even rows for future rounds. every 2^1 rows for first winner, 2^2 for second winner, 2^3 for third and so on.
                        {
                            if($i % pow(2, $b+1) != 0) //does not divide by the next power of 2, so this must be the last available cell
                            {
                                $line[$i] .= '<td class="pf_title_bg" style="border-right:2px solid #000;">Team '.$b.'_'.($y[$b]++).'</td>'.PHP_EOL.'<td class="pf_content_bg" style="border-right:2px solid #000;">&nbsp;</td>';
                            }
                            else //the input will be added in a future round
                            {
                                $line[$i] .= '<td align="center" style="border-right:2px solid #000;" colspan="2">vs.</td>'.PHP_EOL;
                            }
                        }
                    }
                }
            }

            //name="WIN'.$b.'_'.($y[$b]++).'

            //eval ("\$content = \"".$this->gettemplate("table_header")."\";");

            $content="<table><thead><tr>";

            foreach($line2 as $col)
            {
                $content.=$col;
            }

            $content.="</tr></thead><tbody>".PHP_EOL;

            foreach($line as $row)
            {
                $content.="<tr>{$row}</tr>".PHP_EOL;
            }

            $content.='</tbody></table>';

            //eval ("\$content.= \"".$this->gettemplate("table_footer")."\";");
            echo $content;

?>
于 2013-07-24T20:27:18.847 に答える