从PHP中的多个下拉菜单中获取价值

时间:2013-10-01 04:59:46

标签: php mysql

我一直在努力解决以下问题

我有一个页面,我从一个运动队的位置特定的球员拉出名字。 示例: 我将使用下拉列表显示小队中的所有Wings,然后教练可以选择他的侧翼进行比赛。

每个不同的位置都有下拉列表 该页面的目的是让教练快速选择他的团队作为一个夹具

enter image description here

在教练选择他的球队之后,他将选择所选球队将与之对抗的对手。

当他点击提交选定的oppents时,玩家将被存储在两个阵列中,这两个阵列将被调用以在新页面上显示所选团队及其对手。 (之后它将上传到数据库。)

我无法从选择列表中获取值以显示在新页面上。

我想我必须在新页面上做这样的事情:

foreach ($_REQUEST['opponents'] as $opponents){
         print $opponents;
         echo'<br>';    
    }

但它没有给出预期的结果。

奇怪的是,打印的内容是上一页选择菜单中的变量名称。 经过进一步检查,我在新页面上做了一个vardump,它说$ opponenets传递的是一个字符串值,它是变量名而不是它的值?

我的页面看起来像这样 我的问题是如何从选择下拉列表中获取值

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>';
     }

1 个答案:

答案 0 :(得分:0)

你做不到。您的提交只会传输选择的值。这不是一个错误,它是一个功能。您不希望从/向服务器/客户端来回发送数据,这两者都是已知的。

在服务器上,您可以随时查询数据库。您还可以将选择列表缓存到初始列表读取中的$ _SESSION变量中。然而,由于您的缓存列表可能已过时,并且您的服务器内存利用率必须为文件缓存留出空间(SESSION缓存转到文件),因此这是高级装配。

如果您要进行数据库查询,则可能需要一些ID作为锚点。只需将其放入$ _SESSION变量 - 例如:

$ _ SESSION [ '位置'] = $ X;

在你的例子中,$ x似乎是静态的,这显然减少了将它缓存到$ _SESSION的需要 - 但是在其他情况下你可能需要这种方法。