0

以下のようにPHPで作成された2つのフォームがあります

echo '<form name="delete" action="?page=deletetable" method="POST" autocomplete="off">';
    echo '<input type=submit value="Delete" name="'.$row['TableName'].'">';
echo "</form>"; 
echo '<form name="assign" action="?page=assign" method="POST" autocomplete="off">';
    echo '<select name="user">';
     $sql = mysqli_query($con,"SELECT * FROM users WHERE hasCustom = 0");
     while ($row = mysqli_fetch_array($sql)){
    echo "<option value=\"".$row['user_name']. "\">" . $row['user_name'] . "</option>";
     }
     echo "</select>";              
     echo '<input type="submit" value="Assign" name="'.$row['TableName'].'">';
echo "</form>";

これは、最後のhtmlコードで以下のようになります

<form name="delete" action="?page=deletetable" method="POST" autocomplete="off">
    <input type=submit value="Delete" name="rates_test">
</form>
<form name="assign" action="?page=assign" method="POST" autocomplete="off">
    <select name="user">
        <option value="zac">zac</option>
        <option value="testadmin">testadmin</option>
        <option value="tonyd">tonyd</option>
    </select>
    <input type="submit" value="Assign" name="">
</form>

最後の送信ボタンでわかるように、名前タグは空ですが、最初のフォームでは名前タグは正しいです。name="rates_test"

両方のフォームが同じ PHP を使用してこの値を取得しているため、一方が機能し、もう一方が機能しない理由がわかりません。

4

3 に答える 3

2

「while」ループを使用して $row をリセットしています。私の推測では、 ['TableName'] はそのループの後に $row に存在しません。

最初の $row と while ループ内の変数に別々の変数名を使用してみてください。

于 2013-08-29T09:47:06.370 に答える
1

次の行で:

while ($row = mysqli_fetch_array($sql)){

変数 $row を上書きする場合は、意図しない限りその while ループに別の変数を使用してみてください。

于 2013-08-29T09:47:14.863 に答える
0

$rowクエリからレコードを再度取得すると、変数は再び新しい値を取得します。

($row1 = mysqli_fetch_array($sql))代わりに試してください$row = mysqli_fetch_array($sql))

于 2013-08-29T09:49:52.550 に答える