0

私は次の問題と戦ってきました

スポーツチームのポジションに固有の選手から名前を引き出すページがあります. 例: ドロップダウンを使用して、チーム内のすべてのウィングを表示し、コーチがゲームのウィングを選択できるようにします。

異なるポジションごとにドロップダウンがあります このページの目的は、コーチがフィクスチャのチームをすばやく選択できるようにすることです

ここに画像の説明を入力

コーチがチームを選択した後、選択したチームが対戦する対戦相手を選択します。

彼がクリックすると、選択した対戦相手とプレイヤーが 2 つの配列に保存され、選択したチームとその対戦相手を新しいページに表示するために呼び出されます。(その後、DBにアップロードされます。)

選択リストから値を取得して新しいページに表示するのに問題があります。

新しいページで次のようなことをしなければならないと思います:

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['positions']=$x;

あなたの例では、 $x は静的であるように見えます。これにより、 $_SESSION にキャッシュする必要性が明らかに減少しますが、他の場合には、このメソッドが必要になる場合があります。

于 2013-10-02T09:26:20.543 に答える