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 ($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

            print $pposition;
            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 while  loop
} //end opening for each lo

我已删除foreach ($position as $playerPosition) {

于 2013-09-28T06:42:42.867 回答
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:49:37.227 回答