2017-02-22 5 views
2

下線付きフォームには、選択フォームを使用して選択する一連のオプションがあります。正しいIDが渡されているにもかかわらず、$ _POST配列から値が取り出されると、シーズンの値は単にフォームの最後の値のようです。HTMLフォームから正しくない値が渡される

私は自分のコードをチェックしており、リーグはどこからでも私が見る限り更新されていません。

私は何か明白な行方不明だが、それを理解できないと確信している!

<form method = 'post' action = 'index.php?choice=matcht&stage=1'><table width = '50%' border = '1'><thead><tr> 
<th>Select</th> 
<th>League</th> 
<th>Season</th> 
</tr></thead> 
<tr><td><input type = 'radio' name = 'id' value = '1' ></td> 
<td><input type = 'text' name = 'league' value = 'MLB21' readonly></td> 
<td><input type = 'text' name = 'season' value = '12' readonly></td> 
</tr> 
<tr><td><input type = 'radio' name = 'id' value = '25' ></td> 
<td><input type = 'text' name = 'league' value = 'MLB21' readonly></td> 
<td><input type = 'text' name = 'season' value = '13' readonly></td> 
</tr> 
<tr><td><input type = 'radio' name = 'id' value = '49' ></td> 
<td><input type = 'text' name = 'league' value = 'MLB21' readonly></td> 
<td><input type = 'text' name = 'season' value = '14' readonly></td> 
</tr> 
<tr><td><input type = 'radio' name = 'id' value = '73' ></td> 
<td><input type = 'text' name = 'league' value = 'MLB21' readonly></td> 
<td><input type = 'text' name = 'season' value = '15' readonly></td> 
</tr> 
<tr><td><input type = 'radio' name = 'id' value = '97' ></td> 
<td><input type = 'text' name = 'league' value = 'MLB21' readonly></td> 
<td><input type = 'text' name = 'season' value = '16' readonly></td> 
</tr> 
<tr><td colspan = '3' align = 'center'><input type = 'submit' name = 'go' value = 'GO'></td></tr> 
</table> 
</form> 

は、ここでHTMLを生成するPHPです:

$sql='SELECT `TeamID`, `League`,`Season` FROM teams WHERE `FranchiseID` = 0 GROUP BY `League`,`Season` ORDER BY `League` ASC ,`Season` ASC '; 
    $unmatched = $db2->get_results($sql); 

    if ($db2->num_rows>0) { 

    echo "<form method = 'post' action = 'index.php?choice=matcht&stage=1'>"; 
    echo "<table width = '50%' border = '1'>"; 
    echo "<thead><tr>\n"; 
    echo "<th>Select</th>\n"; 
    echo "<th>League</th>\n"; 
    echo "<th>Season</th>\n"; 
    echo "</tr></thead>\n"; 
    foreach ($unmatched as $unmatch) 
    { 
       // Access data using object syntax 
       echo "<tr>"; 
       echo "<td><input type = 'radio' name = 'id' value = '$unmatch->TeamID' ></td>\n"; 
       echo "<td><input type = 'text' name = 'league' value = '".$unmatch->League."' readonly></td>\n"; 
       echo "<td><input type = 'text' name = 'season' value = '".$unmatch->Season."' ></td>\n"; 
       echo "</tr>\n"; 
    } 

    echo "<tr><td colspan = '3' align = 'center'><input type = 'submit' name = 'go' value = 'GO'></td></tr>\n"; 
    echo "</table>\n"; 
    echo "</form>\n"; 

答えて

3

テキスト入力のすべてが同じ名前を持っているし、最後は他人を上書きしています。そう、あなたが取得するものを知っている配列を使用してidにインデックスを設定します。

<tr><td><input type = 'radio' name = 'id' value = '1' ></td> 
<td><input type = 'text' name = 'league[1]' value = 'MLB21' readonly></td> 
<td><input type = 'text' name = 'season[1]' value = '12' readonly></td> 

次に、あなたはそれが好きで取得することができます。

$id = $_POST['id']; 
$league = $_POST['league'][$id]; 
$season = $_POST['season'][$id]; 
関連する問題