0

SQLステートメントによって返される行数が「n」あります。よく働く。返されるすべての行について、ユーザーにオプション (オプション 'a' またはオプション 'b') を選択してもらいたい

標準的な方法として、while ループを使用して各行を反復し、行番号でオプションに名前を付けようとします。ただし、ユーザーが選択したラジオ ボタンの値を取得しようとすると、問題が発生します。

where句の最初のループ(または適切な名前のループ)で1という名前のラジオボタンの値を動的に取得できないようです。

コードスニペットはこちら:

$counter = 1;

while($row = mysql_fetch_array($result))
{

  echo "<form action='updatepics.php' method='post'>";
  echo "<input type='radio' name='m" . $counter . "' value=  ". $row['f_id'] ."> " . $row['Favorite'];
  echo "<input type='hidden' name='game' value=" . $counter . ">";
  echo " vs " . $row['Underdog'] ." ";
  echo "<input type='radio' name='m" . $counter . "' value=  ". $row['d_id'] ."> ";

  echo "<br>";
  echo "<input type='hidden' name='choice' value=" . $_GET["m" . $counter] . " >";
  echo "<input type='submit' value='Make Choice'>";
  echo "</form>";
  $counter ++;
}

updatepics.php:

Game 
<?php
 echo $_POST['game'];
 echo " " . $_POST['player'] . " picks: ";
 echo " " . $_POST['choice'] ;
 ?>

updatepics.php の出力...
ゲーム 1 おばあちゃんのピック:

「choice」が null であることに注意してください

4

2 に答える 2

0

HTML4 仕様によると、names 属性は CDATA として定義されCDATA は次のように定義されます

ID および NAME トークンは文字 ([A-Za-z]) で始まり、その後に任意の数の文字、数字 ([0-9])、ハイフン ("-")、アンダースコア ("_") が続く場合があります、コロン (":")、およびピリオド (".")。

コードを変更して、すべての名前の値が少なくとも 1 文字で始まるようにします。

于 2012-08-23T19:33:09.073 に答える
0

ラジオボタン名を動的に作成することから抜け出しました。これで、すべてのラジオ ボタンが、ループの各反復を通じて同じ名前になります。

各反復で送信ボタンを押す前にすべてのボタンが設定されていることを選択した場合でも、正しい値を正しい時間に渡すように動作するようです。

echo "<form action='updatepics.php' method='post'>";

echo "<input type='radio' name='mw' value=  ". $row['f_id'] ."> " . $row['Favorite'];
echo "<input type='hidden' name='game' value=" . $row['f_id'] . ">";
echo "<input type='hidden' name='player' value='" . $user . "' >";
echo " vs " . $row['Underdog'] ." ";
echo "<input type='radio' name='mw' value=  ". $row['d_id'] ."> ";
echo "  " . $row['line'];

echo "<input type='submit' value='Make Choice'>";
echo "</form>";

updatepics.php も同様にシンプルで、動作します: $_POST['mw']

于 2012-08-24T04:57:34.603 に答える