1

トーナメント/ラダー スクリプトがあり、DB にはトーナメントごとに個別のテーブルが含まれています。トーナメントの各ラウンドには、「順位」と「スコア」の列があります。たとえば、3 ラウンドのトーナメントを実行している場合、そのテーブルには次の列が表示されます。

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 tour_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 に答える