2

次のコードを作成して、データベースに保存されているデータをテーブルに入力しました。ご覧のとおり、フィールドでデータを直接編集することもできます。私がやろうとしているのは、編集したフィールドをデータベースに保存することです。フィールドが変更されている場合は「古い」フィールドを上書きするだけで、変更されていない場合は古いフィールドが使用されます。

<?php

$querymod =" SELECT * FROM table ORDER BY id DESC ";

$result = mysql_query($querymod) or die(mysql_error());

echo "<div style='width: 100%; text-align: center;'>";                   
echo "<table style='margin: auto auto;'>";
echo "<tr><th>ID</th><th>Image</th><th>Article Number</th><th>Description</th></tr>";

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

$id    = $row['id'];
$img_name    = $row['img_name'];
$art_number    = $row['art_number'];
$description    = $row['description'];


echo "<form method='post' action=''>";
echo "<tr>
<td style='width: 20px;'><input name='id' id='id' value='".$id."' disabled='yes'>
<input type='submit' name='submit' value='Save'></td>
<td style='width: 210px;'><img src='../../upload/content/uploads/". $img_name ."' width='200px'></td>
<td style='width: 100px;'><input type='text' name='art_number' value='".$art_number."'></td>
<td style='width: 100px;'><input type='text' name='description' value='".$description."'></td>
</tr>";     
}
echo "</table><br /><br /></div>";
echo "</form>";

?>

「UPDATE」関数を使用してデータベースとフィールドを更新できることはわかっていますが、問題は、変更された行の ID を取得し、関連する変更されたフィールドの更新を開始する方法がわからないことです。

ヒントをお願いします。

4

3 に答える 3

4

移動する必要があります:

echo "</form>";

while ループ内。ループのたびに新しいフォームを開始していますが、ループ全体が完了するまでフォームを閉じません。これにより、不適切なネスティングが作成されます。

また、id='id'ID が一意になるように (おそらく必要ないでしょう) 削除するか、何かを行ってください。

于 2012-10-24T19:19:02.433 に答える
0

入力にはtype=hiddenを使用します。

<td style='width: 20px;'><input name='id' id='id' value='".$id."' type='hidden'>
于 2012-10-24T19:04:15.263 に答える
0

1. 行ごとにフォームを使用する

また:

2. という名前の隠し入力を 1 つ作成しますid。送信ボタンの属性を使用しonClick='document.forms.form_name.id.value='$id';document.forms.form_name.submit();"ますが、type='submit' を type='button' に変更します。$id 値を他の各入力の名前に追加します。次に、送信後にページがリロードされると、ID が取得され、POST で他の入力も見つけることができます。

echo "<form name='myform' action='' method='POST'>
    <input type='hidden' name='id' value=''>
    <table>";

while($row = mysql_fetch_array($result)) {
    $id          = $row['id'];
    $img_name    = $row['img_name'];
    $art_number  = $row['art_number'];
    $description = $row['description'];
    $onClick = "document.forms.myform.id.value='$id';document.forms.myform.submit();";

    echo "<tr>
        <td><input type='button' name='save_$id' value='Save' onClick='$onClick'></td>
        <td><img src='../../upload/content/uploads/$img_name' width='200px'></td>
        <td><input type='text' name='art_number_$id' value='$art_number'></td>
        <td><input type='text' name='description_$id' value='$description'></td>
      </tr>\n";
}
echo "</table>\n</form>\n";

次に、保存がクリックされると、POST で値を読み取ることができます。

$id = !empty($_POST["id"]) ? $_POST["id"] : NULL;
$art_number = !empty($_POST["art_number_$id"]) ?$_POST["art_number_$id"] : NULL;
$description = !empty($_POST["description_$id"]) ?$_POST["description_$id"] : NULL;

SQL データベースの更新に使用できます。

于 2012-10-24T19:16:59.630 に答える