PHP表单更新mysql数据库在编辑一条记录后返回所有数据库记录

时间:2014-09-23 03:09:11

标签: php database forms post edit

所以我有这个代码,其他Stack成员帮我调整并纠正了一些错误,代码全部按原样运行但是有一个小细节,在成功编辑一条记录并单击更新按钮之后数据库中的记录加载到页面中。以下是我的代码:

<?php 

$con = mysql_connect("localhost", "root", "M1q2w3e4r");
if (!$con) {
die("Can not connect: " . mysql_error());
}
mysql_select_db("inventory",$con);

if (isset($_POST['update'])){
$UpdateQuery = "UPDATE invoice SET `inv_number`='$_POST[inv_number]', `from_date`='$_POST[from_date]', `to_date`='$_POST[to_date]',`date_type`='$_POST[date_type]', `notes`='$_POST[notes]' WHERE id='$_POST[id]'";               
mysql_query($UpdateQuery, $con);
};

$where = '';
    if(!empty($_GET) && !empty($_GET['edit'])) {
        $where = ' where id='.$_GET['edit'];
    }
    $sql = "SELECT * FROM invoice".$where;

$myData = mysql_query($sql,$con);
echo "<table border=1>
<tr>
<th>Inv #</th>
<th>From</th>
<th>To</th>
<th>Type</th>
<th>Notes</th>
</tr>";
while($record = mysql_fetch_array($myData)){
echo "<form action='edit.php' method='post'>";
echo "<tr>";
echo "<td>" . "<input type='text' name='inv_number' value='" . $record['inv_number'] . "'> </td>";
echo "<td>" . "<input type='text' id='from' name='from_date' value='" . $record['from_date'] . "'> </td>";
echo "<td>" . "<input type='text' id='to' name='to_date' value='" . $record['to_date'] . "'> </td>";
echo "<td>" . "<input type='text' name='date_type' value='" . $record['date_type'] . "'> </td>";
echo "<td>" . "<input type='text' name='notes' value='" . $record['notes'] . "'> </td>";
echo "<td>" . "<input type='hidden' name='id' value='" . $record['id'] . "'> </td>";
echo "<td>" . "<input type='hidden' name='hidden' value='" . $record['id'] . "'> </td>";
echo "<td>" . "<input type='submit' name='update' value='update'>" . " </td>";
echo "</tr>";
echo "</form>";
}

echo "</table>";
mysql_close($con);

?>

我知道它与表单action =“edit.php”有关,因为它会刷新页面中url中的id号被拉出。所以我尝试了这个:

echo "<form action='edit.php?edit=<?php echo $_REQUEST["id"]; ?>' method='post'>";

但这只导致我的edit.php显示为空白页面。如果有人可以帮我弄清楚如何防止在点击更新按钮后在页面中显示所有数据库记录,那将真的有帮助。

1 个答案:

答案 0 :(得分:2)

我可能会这样做,例如,如果我只想显示刚更新的记录:

if (isset($_POST['update'])){
    $UpdateQuery = "UPDATE invoice SET `inv_number`='$_POST[inv_number]',    `from_date`='$_POST[from_date]', `to_date`='$_POST[to_date]',`date_type`='$_POST[date_type]', `notes`='$_POST[notes]' WHERE id='$_POST[id]'";               
    mysql_query($UpdateQuery, $con);
    $where = ' where id='.$_POST[id];
}
else {
    $where = '';
    if(!empty($_GET) && !empty($_GET['edit'])) {
        $where = ' where id='.$_GET['edit'];
    }
}

您也可以使用REQUEST而不是GET,并使用名称&#34;编辑&#34;创建一个隐藏的输入字段。在你的形式。