使PHP代码只执行一次

时间:2013-09-08 23:52:59

标签: php mysql

我遇到了这段代码的问题。基本上,当页面打开时,会自动将条目输入到表中并显示唯一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

} 

?>

1 个答案:

答案 0 :(得分:0)

通常的方法:

创建新条目的网址为http://your.site/requests/newhttp://your.site/requests/createhttp://your.site/request

更新现有条目的网址为http://your.site/requests/123

创建新条目后,用户将被重定向到/ 123页面,以便更新其条目。

这两个网址的php都是一样的。检查isset($_GET['ID'])在哪种情况下,您正在编辑现有记录。如果未设置$ _GET ['ID'],则表示您正在创建新记录。将INSERT语句换行if (isset($_GET['ID']))块。