从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。