0

我正在为一个运动队制作一个页面,教练可以在其中选择他的球队。我想做的是:

1)打印不同的位置

2) 在位置名称旁边指定仅与该位置相关的球员。(即如果位置名称为侧卫,则下拉菜单中应仅显示侧卫

我对上述问题的逻辑是:

  • 将位置名称分配给名为 $position 的数组循环遍历数组

  • 查询数据库,每次循环后位置具有不同的值。

  • 与位置匹配的选定球员被分配到一个名为 $playerName 的数组中

  • 打印 $position 变量

  • 为每个职位创建下拉菜单

  • 将 $playername 数组中的值分配给下拉菜单中的选项元素。

  • 现在应该有不同的位置和下拉菜单,在它们旁边,包含与位置相关的球员姓名。

//创建位置数组

$position = array(
    "THP",
    "HKR",
    "LH",
    "LK4",
    "LK5",
    "FLH"
);
echo '<form name="slectPlayers" method="post">';
foreach ($position as $pposition) {
    $result = mysql_query("SELECT `player_id`,`name`,`surname` FROM `player_info` WHERE `position` = '$pposition'") or die(mysql_error());
    while ($row = mysql_fetch_array($result)) { //create arrays
        $id[]             = $row['player_id'];
        $playerName[]     = $row['name'];
        $playerLastName[] = $row['surname'];
        // print position and open select element
        foreach ($position as $playerPosition) {
            print $playerPosition;
            echo '<select>';
            foreach ($playerName as $name) { //assign playername to position element
                echo '<option>' . $name;
                '</option>';
                echo '</select>';
                echo '<br />';
            } //close assign player nae to position loop
        } //end print position and open select loop
    } //end while  loop
} //end opening for each loop
echo '</form>';

对我来说不幸的是,要么我的逻辑错误,要么我的代码不正确。这是我得到的输出:( 注意只有名称 Tendai 显示在所有下拉菜单中,没有其他名称出现) 在此处输入图像描述

如果整个早上都在为此苦苦挣扎,如果有人能指出我正确的方向,将不胜感激

(版主请注意,上面的图片不包含真实姓名,只是一个虚构的数据库)

4

2 回答 2

0

在您的原始代码中,您可以删除foreach循环中的两个循环while。使用$pposition代替,$playerPosition您的代码应该按预期工作。这是您的代码,以及我建议的更改,以您的程序风格:

$position = array(
    "THP",
    "HKR",
    "LH",
    "LK4",
    "LK5",
    "FLH"
 );
 echo '<form name="selectPlayers" method="post">';
 foreach ($position as $pposition) {
    $result = mysql_query("SELECT `player_id`,`name`,`surname` FROM `player_info` 
                         WHERE `position` = '$pposition'") or die(mysql_error());
    echo '<select name="'. $pposition . '">';
    while ($row = mysql_fetch_array($result)) {
        print $pposition;

        echo '<option value="' . $row['player_id'] . '">'.
                 $row['name'] .' '. $row['surname'].
             '</option>';

    } //end while  loop
    echo '</select>';
    echo '<br />';
} //end opening for each loop
echo '</form>';
于 2013-09-28T08:14:48.883 回答
0

你可以这样做。逻辑是不同的

function get_players_by_position($position)
{
    $query  =   "SELECT
                  `player_id`,
                  `name`,
                  `surname`
                FROM `player_info`
                WHERE `position` = $position
                ORDER BY name   ";

    $result =   mysql_query($query);
    $data   =   array();
    while ($row = mysql_fetch_array($result)) { 
        $data[] =   $row;
    }

    return $data;
}   

foreach($position as $pposition){
    $data   =   get_players_by_position($pposition);
    echo $pposition;    
    echo '<select>';
    foreach($data as $row){
        echo '<option '.$row['id'].'>' . $row['name'].'</option>';
    }
    echo '</select>';
    echo '<br />';
    unset($data);
}
于 2013-09-28T06:03:57.567 回答