我在一个运动队的页面上工作,教练可以选择他的球队。我想做的是:
1)打印不同的位置
2)在位置名称旁边分配,只与球员相关的球员 位置。 (,即如果职位名称是侧翼,只有侧翼应该 显示在下拉菜单中)
我对上述问题的逻辑是:
将位置名称分配给名为$ position Loop over array
查询数据库,每个循环后位置具有不同的值。
匹配该位置的所选玩家被分配到 数组名为$ 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显示在所有下拉菜单中,没有其他名称出现)
如果有人能指出我正确的方向,那么整个上午如果一直在与这个人挣扎,我们将不胜感激
(请注意,上面的图片不包含真实姓名,只是一个虚构的数据库)
答案 0 :(得分: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);
}
答案 1 :(得分: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>';