0

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

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

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

在此处输入图像描述

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

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

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

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

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

1 回答 1

0

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

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

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

$_SESSION['职位']=$x;

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

于 2013-10-02T09:26:20.543 回答