使用表单提交来更新php中的表记录

时间:2012-10-01 21:51:15

标签: php mysql

我为一些客户创建了一个支持表单,他们向它提交信息,我在我创建的面板中看到它。在这个面板中,我希望能够检查记录旁边的框并点击更新按钮,它将更新该记录,并显示我已完成工作的时间戳和时间。这是示例代码

 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')");

我知道我没有告诉我要添加时间戳或复选框的哪条记录,所以它不会这样做,但它会创建一个带有时间戳的新记录但不会保存复选框并将其余字段留空。我确定答案很简单

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分: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的值,以便DB知道要更新的内容。此外,您需要使用数组命名输入:

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

通过这种方式,您可以遍历帖子上的所有设置复选框并更新所有已检查的记录。

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

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