0

一部のクライアント向けにサポート フォームを作成しました。彼らはそれに情報を送信し、作成したパネルに表示されます。このパネルでは、レコードの横にあるチェックボックスをオンにして更新ボタンを押すと、そのレコードが更新され、作業が完了したことと何時かを示すタイム スタンプが表示されます。サンプルコードはこちら

 echo "<table border='1'>
<tr>
<th>ICL</th>
<th>PAGE ID</th>
<th>SUBMISSION NAME</th>
<th>UPTDATES/BUGS</th>
<th>MISSING INFO</th>
<th>TIME OF SUBMISSION</th>
<th>COMPLETED</th>
<th>TIME COMPLETED</th>
</tr>";
echo "<form name='completed' action='insert4panel.php' method='post'>";
while($row = mysql_fetch_array($results))
  {
  echo "<tr>";
  echo "<td>" . $row['ICL'] . "</td>";
  echo "<td>" . $row['officename'] . "</td>";
  echo "<td>" . $row['submitname'] . "</td>";
  echo "<td>" . $row['feedback'] . "</td>";
  echo "<td>" . $row['missinginfo'] . "</td>";
  echo "<td>" . $row['TimeStamp'] . "</td>";
  echo "<td><input type='checkbox' name='complete'></td>";
  echo "<td>" . $row['completionstamp'] . "</td>";
  echo "</tr>";
  }
echo "<input type='submit' value='Update'>";
echo "</form>";
echo "</table>";

送信を押すとどうなりますか このコードに送信します

$timeissued=$_POST["complete"];
$date = date("m-d-y H:i:s");
mysql_query("INSERT INTO SITES (completed, completetime )
VALUES ('$timeissued' ,'$date')");

タイムスタンプまたはチェックボックスを追加するレコードを指定していないことはわかっているので、実行しませんが、タイムスタンプ付きの新しいレコードを作成してもチェックボックスは保存されず、残りのフィールドは空白のままにします。きっと答えは簡単です

4

2 に答える 2

1

属性になるようにチェックボックスを変更しますvalue=1

上記のチェックボックスの名前をに変更しますname=complete[$id]

さて、物事のPHP側では、次の行に沿って何かを行います...

<?php
$complete = $_POST["complete"];
$time = time();
foreach($complete as $key => $value) {
    $query = "UPDATE SITES
              SET completed=1, completedtime='$time'
              WHERE id = '$key'";
    // This query is not in any way secure...
    mysql_query($query);
}

これにより、ヒットしたすべてのチェックボックスがループさcompletedれ、データベースのフィールドが 1 に設定され、フィールドcompletedtimeが現在のタイムスタンプ (整数) に設定されます。

ただし、非推奨であるため、mysql_* 関数を使用するべきではありません。PDOを調べる必要があります。

于 2012-10-01T22:03:24.660 に答える
0

これは、見下すように聞こえずに答えるのが難しいので、簡単にします。

あなたが PHP とデータベースの相互作用の両方に慣れていないことは明らかです。

("INSERT INTO...") You should be using ("UPDATEsitesと伝えているので、新記録を作っていますSET...")。ここのリファレンスを参照してください: http://www.w3schools.com/php/php_mysql_update.asp

PDO を調べて、すべての mysql_ 関数を中止してください。参照を参照してください: http://php.net/manual/en/book.pdo.php

チェックボックスにレコード ID の値を指定して、DB が更新対象を認識できるようにします。また、配列で入力に名前を付ける必要があります。

<input type="checkbox" name="complete[]" value="<?php echo $row['id']; ?>">

そうすれば、投稿時に設定されたすべてのチェックボックスを反復処理し、チェックされたすべてのレコードを更新できます。

PHP の作成方法とデータベースとの対話方法に関するチュートリアルを開始せずに、これらすべてを適切に説明する方法がわかりません。参照リンクは、開始するのに十分なはずです。

具体的な質問がある場合は、お気軽にお尋ねください。それに応じて回答を更新します

于 2012-10-01T21:58:34.613 に答える