2

mysqlデータベースからデータを取得し、リストを作成したいと思います。リストに、postを使用して次のページに値を送信するボタンが必要です。

$result = mysql_query("SELECT * FROM all");
echo "<table border=\"1\">";
echo"<tr>
    <th>ID</th>
    <th>Naam</th>
    <th>Eigenaar</th>
    <th>Plaats</th>
    <th>Bewerk</th>
    </tr>";
    ?>
    <form action="editshop.php" method="post">
    <?php
    while($rij = mysql_fetch_array($result))
  {

    ?> 


        <?php
        echo "<tr><td>".$rij['id'] . "</td><td> " . $rij['naam'] ."</td><td>";
        echo $rij['eigenaar'] . "</td><td>" . $rij['plaats']."</td>" ;
        echo"<input type=\"hidden\" name=\"id\" value=".$rij['id']."  /><td><input type=\"submit\" /></td>";
        echo "</tr>";
    }
echo "</form></table>";

テーブルは見栄えがしますが、ボタンを押すとeditshops.phpが開き、echo $_POST["id"]; 常にリストの最後のIDになります。リスト内のIDと同じ番号だけが必要です。リストでは、IDが適切に表示されます。私が間違ったことをしました(この投稿のレイアウトが良くない場合は申し訳ありませんが、これは私の最初の投稿であり、コードを強調表示する方法がわかりません) 更新 によりループがに変更されました

<?php
    while($rij = mysql_fetch_array($result))
  {

    ?> 
        <form action="bewerkshop.php" method="post">

        <?php
        echo "<tr><td>".$rij['id'] . "</td><td> " . $rij['naam'] ."</td><td>";
        echo $rij['eigenaar'] . "</td><td>" . $rij['plaats']."</td>" ;
        echo"<td><input type=\"submit\" name=\"id\" value=\"".$rij['id']."\"  /></td>";
        echo "</tr>";
    }
echo "</form></table>";

?>

すべてが機能していますが、ボタンの名前はID番号であり、編集するように変更できます。したがって、すべてのボタンはID番号ではなく、編集と表示されます

4

4 に答える 4

1

name="id[]"配列を取得するには、次のようなものを使用する必要があると思います

行ごとに送信ボタンがあることがわかりました。つまり、行ごとにフォームを作成するか、送信ボタン自体にid値を入力する必要があります。

于 2012-09-13T10:10:02.137 に答える
0

<input>値の前後に一連の引用符がないようです。

value=\"".$rij['id']."\"

トリックを適切に行う必要があります。

ただし、各入力に同じ名前を使用している場合、PHPはデータを最後に送信されたIDに上書きします(すべての非表示の入力は同じ名前であるため)。

データの行ごとにフォームを作成することを検討することをお勧めします。したがって、実際に送信されたものがわかります。または、JavaScriptを使用してフォームを送信し、渡す適切な値を選択します。

于 2012-09-13T10:10:01.203 に答える
0

投稿するとすべての非表示の入力が同じ名前になるため、配列として投稿できる最後のIDが表示されます

"<input type=\"hidden\" name=\"id[]\" value=".$rij['id']."  />

または、送信ボタン自体にIDを渡して投稿します。

于 2012-09-13T10:15:28.923 に答える
0

注:送信で複数の行を編集するのか、1つだけで編集するのかわかりません。私の答えは、複数の行を編集する場合にのみ役立ちます。

すべて同じ名前の各行の入力フィールドを作成しています。これが、最後の1つが他のすべてを上書きする理由です。

それに応じて入力フィールドに名前を付ける必要があります。

例:

<input name="naam[1]" value="..." />

ここで1は、行のIDです。

次に、$ _ POST ['naam']を反復処理して、値をフェッチできます。

foreach ($_POST['naam'] as $id => $value) {
    $otherValue = $_POST['otherValue'][$id];
    // ...

    // do something with it and add some checks if the keys exist.
}
于 2012-09-13T10:15:43.567 に答える