【问题标题】:Getting value from multiple drop down menus in PHP从 PHP 中的多个下拉菜单中获取价值
【发布时间】:2013-10-02 17:26:20
【问题描述】:

我一直在与以下问题作斗争

我有一个页面,我可以从中提取特定于他们在运动队中位置的球员的名字。 示例: 我将使用下拉菜单显示球队中的所有侧翼,然后教练可以在其中选择他的侧翼进行比赛。

每个不同的位置都有下拉菜单 该页面的目的是让教练快速选择他的球队进行比赛

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

当他点击提交选择的对手时,玩家将被存储在两个数组中,这两个数组将被调用以在新页面上显示选择的球队和他们的对手。 (之后它将被上传到数据库。)

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

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

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

【问题讨论】:

  • 提供完整的表格,您只提供了玩家选择框的代码,而不是对手。同时让我知道您是否只在对手或球员方面有问题。

标签: php mysql


【解决方案1】:

你不能。您的提交只会传输选定的值。这不是一个错误,它是一个功能。您不想在双方都知道的服务器/客户端之间来回发送数据。

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

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

$_SESSION['positions']=$x;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2014-08-03
    • 2014-03-08
    相关资源
    最近更新 更多