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...") 您应该使用("UPDATE网站SET...")。请参阅此处的参考:http: //www.w3schools.com/php/php_mysql_update.asp

查看 PDO 并停止所有 mysql_ 功能。见参考: http: //php.net/manual/en/book.pdo.php

您可以为您的复选框提供记录 ID 的值,以便数据库知道要更新哪个。此外,您需要使用数组命名输入:

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

这样你就可以遍历所有设置的复选框并更新所有检查的记录。

如果不启动有关如何编写 PHP 和与数据库交互的教程,我不知道如何正确解释所有这些。参考链接应该足以开始。

如果您有具体问题,请随时提出。我会相应地更新我的答案

于 2012-10-01T21:58:34.613 回答