从PHP中的多个下拉菜单中获取值
我一直在努力解决以下问题 我有一个页面,我从运动员的名字中找出他们在运动队中的具体位置。 示例:我将使用下拉菜单显示球队中的所有边路,然后教练可以在其中为比赛挑选边路 每个不同的位置都有下拉列表 该页面的目的是让教练快速选择他的球队参加比赛 在教练选择他的球队后,他将选择所选球队将与之对抗的对手 当他点击提交时,所选的对手和球员将被存储在两个数组中,这两个数组将被调用以在新页面上显示所选的球队和他们的对手。(之后将上传至数据库。) 我无法从选择列表中获取要在新页面上显示的值 我想我必须在新的页面上做这样的事情:从PHP中的多个下拉菜单中获取值,php,mysql,Php,Mysql,我一直在努力解决以下问题 我有一个页面,我从运动员的名字中找出他们在运动队中的具体位置。 示例:我将使用下拉菜单显示球队中的所有边路,然后教练可以在其中为比赛挑选边路 每个不同的位置都有下拉列表 该页面的目的是让教练快速选择他的球队参加比赛 在教练选择他的球队后,他将选择所选球队将与之对抗的对手 当他点击提交时,所选的对手和球员将被存储在两个数组中,这两个数组将被调用以在新页面上显示所选的球队和他们的对手。(之后将上传至数据库。) 我无法从选择列表中获取要在新页面上显示的值 我想我必须在新的页
foreach ($_REQUEST['opponents'] as $opponents){
print $opponents;
echo'<br>';
}
foreach($\u请求['opposers']作为$opposers){
印刷美元;
回声“
”;
}
但这并没有产生预期的结果
奇怪的是,打印的是上一页选择菜单中的变量名。
进一步检查后,我在新页面上做了一个vardump,它说$opponenets传递了一个string值,它是变量名,而不是它的值
我的页面看起来像这样
我的问题是如何从选择下拉列表中获取值
if(isset($_POST["submit"]))
{
foreach ($_REQUEST['opponents'] as $against){
var_dump($against);
print $against;
echo'<br>';
}
}
else
{
echo'<h1>Select your Team</h1>';
$x = array("THP", "HKR", "LHP", "LH", "FLH"); //players positions gets assigned to x which will be used to query the database
echo '<form name="playerselect" method="post" action="">';
//query database with different query after each loop
for ($i = 0; sizeof($x) > $i; $i++)
{
//query where position field equeals variable x
$result = mysql_query("SELECT `name`, `position` FROM `player_info`
WHERE `position` = '$x[$i]'") or die(mysql_error()) ;
//Gets data from DB and assigns values to arrays below
while($row = mysql_fetch_array($result))
{
$playername[] = $row['name'];
$position[] = $row['position'];
}
//print player position
print $position[0];
echo'<br>';
//unset the array so that it is empty for the next query in the new loop
unset($position);
echo '<select name="players[]" >' ;
foreach ($playername as $name )
{
//Put playernames relevant to the position in the option element
echo'<option value="$name" selected="selected">'.$name;'</option>';
echo'<br>';
}
echo'</select>';
//unset array so that its contents is empty for the next query in the new loop
unset($playername);
echo'<br>';
}
if(设置($\u POST[“提交”]))
{
foreach($_请求['opporters']作为$对){
var_dump(对美元);
打印美元;
回声“
”;
}
}
其他的
{
echo“选择你的团队”;
$x=数组(“THP”、“HKR”、“LHP”、“LH”、“FLH”);//将玩家的位置分配给x,x将用于查询数据库
回声';
//在每个循环后使用不同的查询查询数据库
对于($i=0;sizeof($x)>$i;$i++)
{
//查询位置字段等于变量x的位置
$result=mysql\u query(“从`player\u info`中选择`name`、`position`”
其中'position`='$x[$i]')或die(mysql_error());
//从数据库获取数据,并将值分配给下面的数组
while($row=mysql\u fetch\u数组($result))
{
$playername[]=$row['name'];
$position[]=$row['position'];
}
//打印播放器位置
打印$position[0];
回声“
”;
//取消设置数组,使其在新循环中的下一个查询中为空
未结算($头寸);
回声';
foreach($playername作为$name)
{
//将与选项元素中的位置相关的playername放入
回显“”。$name;“”;
回声“
”;
}
回声';
//取消设置数组,使其内容在新循环中的下一个查询中为空
unset($playername);
回声“
”;
}
您不能。您的提交将只传输选定的值。这不是一个错误,而是一项功能。您不希望在服务器/客户端之间来回发送双方都知道的数据
在服务器上,您可以随时查询数据库。您也可以将选择列表缓存到初始列表读取中的$\u会话变量中。但是,这是一种高级配置,因为缓存列表可能会过时,而且您的服务器内存利用率必须为文件缓存留出空间(会话缓存转到文件)
如果要进行数据库查询,可能需要一些ID作为锚点。只需将
$\会话['positions']=$x
在您的示例中,$x似乎是静态的,这显然减少了将其缓存到$\u会话中的需要-但是在其他情况下,您可能需要此方法。提供完整的表单,您只为玩家选择框提供了代码,而没有为对手提供代码。另外,请告诉我您是否只有对手或玩家存在问题o。