我遇到了这段代码的问题。基本上,当页面打开时,会自动将条目输入到表中并显示唯一ID“CustomerRequestID”。输入其余详细信息后,用户可以按“提交”,这将更新条目以及其他详细信息。但是,当用户按下提交时,它实际上在执行提交代码之前再次执行初始代码,从而创建一个额外的条目。 EG,如果生成的ID为59,则用户单击“提交”,代码会创建另一个ID为60的条目,并将更新应用于那个而不是59.如何使其不生成第二个条目,并且而只是更新初始条目?
<?php
include_once ("resource/db_conn.php");
$id = $_GET['ID'];
$query = "SELECT * FROM `customer` WHERE `CustomerId`='$id'";
$retrieval = mysql_query($query);
$rowCustomer = mysql_fetch_array($retrieval);
$customerID = $rowCustomer['CustomerID'];
$customerName = $rowCustomer['CustomerName'];
// creates the new supplier ID
$sql = "INSERT INTO `customer_requests`(`CustomerRequestID`, `Title`, `Description`, `RFQDate`, `Q2CDate`, `QuantityRequested`, `GST`,`NetCost`, `Markup`,`NetSellPrice`, `GrossSellPrice`, `fkCustomerID` , `Status`) VALUES ('','','','','','','','','','','','$customerID','')";
$result = mysql_query($sql);
$addedEntry = "SELECT * FROM customer_requests ORDER BY CustomerRequestID DESC LIMIT 1";
$retrieved = mysql_query($addedEntry);
$row = mysql_fetch_array($retrieved);
if(isset($_POST['submit'])) {
$cRID = $row['CustomerRequestID'];
$title = $_POST['title'];
$description = $_POST['description'];
// validation goes here
$insertSQL="UPDATE `customer_requests` SET `Title` = '$title', `Description` = '$description' WHERE `CustomerRequestID` ='$cRID'";
$updateSQL = mysql_query($insertSQL);
?>
<script>window.close();</script>
<?php
}
?>
答案 0 :(得分:0)
通常的方法:
创建新条目的网址为http://your.site/requests/new
或http://your.site/requests/create
或http://your.site/request
。
更新现有条目的网址为http://your.site/requests/123
。
创建新条目后,用户将被重定向到/ 123页面,以便更新其条目。
这两个网址的php都是一样的。检查isset($_GET['ID'])
在哪种情况下,您正在编辑现有记录。如果未设置$ _GET ['ID'],则表示您正在创建新记录。将INSERT
语句换行if (isset($_GET['ID']))
块。