1

我有一个锦标赛/阶梯脚本,数据库包含每个锦标赛的单独表格。锦标赛中的每一轮都有一个“位置”和“分数”栏。因此,例如,如果我正在运行三轮锦标赛,那么该表中将包含以下列:

teamid
name
round1pos
round1score
round2pos
round2score
round3pos
round3score

现在在管理员控制面板中,我在“团队管理”部分中有以下代码,以允许管理员在他们需要让球员或替补或类似的东西回归时更改这些值:

        $stats2=mysql_query("SELECT * FROM tournament_$tournamentid WHERE teamid='$team2[id]'");
        $stats2=mysql_fetch_array($stats2);

        $tournament=mysql_query("SELECT * FROM tournaments WHERE id='$tournamentid'");
        $tournament=mysql_fetch_array($tournament);

        $team_stats="
        <div id='dashboard'>
            <h2 class='ico_mug'>" . LANG_MAN_TOURNAMENT_STATS . "</h2>
            <div class='clearfix'>
                <table class='ucp_fields' cellpadding='4' cellspacing='3' border='0' align='center' width='640px'>

                    <tr valign='top'>
                        <td align='center'>" . LANG_MAN_ROUND . " 1 " . LANG_MAN_POSITION . "</td>
                        <td class='alt1' align='center'>
                            <input type='text' name='team[round1pos]' value='$stats2[round1pos]' size='40' maxlength='5' />
                        </td>
                    </tr>

                    <tr valign='top'>
                        <td align='center'>" . LANG_MAN_ROUND . " 1 " . LANG_MAN_SCORE . "</td>
                        <td class='alt1' align='center'>
                            <input type='text' name='team[round1score]' value='$stats2[round1score]' size='40' maxlength='5' />
                        </td>
                    </tr>

                    <tr valign='top'>
                        <td align='center'>" . LANG_MAN_ROUND . " 2 " . LANG_MAN_POSITION . "</td>
                        <td class='alt1' align='center'><input type='text' name='team[round2pos]' value='$stats2[round2pos]' size='40' maxlength='5' />
                        </td>
                    </tr>

                    <tr valign='top'>
                        <td align='center'>" . LANG_MAN_ROUND . " 2 " . LANG_MAN_SCORE . "</td>
                        <td class='alt1' align='center'>
                            <input type='text' name='team[round2score]' value='$stats2[round2score]' size='40' maxlength='5' />
                        </td>
                    </tr>
                </table>
            </div>
        </div>";

现在显然我正在手动调用每个位置/分数......但我想做的是为该特定团队提供锦标赛中每一轮的位置和值。如果它是行,我会知道如何执行此操作,但它如何用于列?由于每个锦标赛的轮数可能不同,我需要确保它只显示可用的字段。

4

2 回答 2

2

通过将列表保存在数据库中,以一种迂回的方式打破规范化规则。

你应该做什么有一个锦标赛表和另一个分数/位置表。

所以:

锦标赛:锦标赛 ID 锦标赛名称

团队:team_id team_name

得分:team_id 锦标赛_id round_num round_score round_pos

因此,要获得特定球队在特定锦标赛中的得分,请使用

SELECT * FROM scores WHERE team_id=TEAM_ID AND tournament_id=TOURNAMENT_NAME

这样一来,您就不必为每场锦标赛都创建一张新牌桌而变得笨拙。

于 2013-06-27T03:02:25.297 回答
0

好吧......所以这就是我经过反复试验后得到的结果......完美地工作:) 伙计,这是很多工作......

                $stats2=mysql_query("SELECT * FROM tournament_$tournamentid WHERE teamid='$team2[id]'");
                $stats2=mysql_fetch_array($stats2);

                $tournament=mysql_query("SELECT * FROM tournaments WHERE id='$tournamentid'");
                $tournament=mysql_fetch_array($tournament);

                $rchkpos = array();
                $rchkscore = array();

                for ($i=0; $i<=$tournament['numRounds']; $i++)
                {
                    $rchkthis = array("$i" => "round".$i."pos");
                    $rchkthis2 = array("$i" => "round".$i."pos");

                    $rchkpos = array_merge($rchkpos, $rchkthis);
                    $rchkscore = array_merge($rchkscore, $rchkthis2);

                    if ($rchkpos[$i] && $rchkpos[$i] != NULL && $i > 0)
                    {
                        $roundpos = $rchkpos[$i];
                        $roundscore = $rchkscore[$i];

                        $team_stats.="
                        <tr valign='top'>
                            <td align='center'>" . LANG_MAN_ROUND . " $i " . LANG_MAN_POSITION . "</td>     
                            <td class='alt1' align='center'>            
                                <input type='text' name='team[".$rchkpos[$i]."]' value='$stats2[$roundpos]' size='40' maxlength='5' />
                            </td>
                        </tr>

                        <tr valign='top'>
                            <td align='center'>" . LANG_MAN_ROUND . " $i " . LANG_MAN_SCORE . "</td>
                            <td class='alt1' align='center'>
                                <input type='text' name='team[".$rchkscore[$i]."]' value='$stats2[$roundscore]' size='40' maxlength='5' />
                            </td>
                        </tr>";
                    }
                }
于 2013-06-27T08:59:32.783 回答