2013-09-08 4 views
-1

У меня возникли проблемы с этим кодом. В основном, когда происходит открытие страницы, запись автоматически вводится в таблицу, и отображается уникальный идентификатор «CustomerRequestID». После ввода остальных деталей пользователь может нажать «отправить», чтобы обновить запись с помощью дополнительной информации. Однако, когда пользователь нажимает кнопку отправки, он фактически выполняет исходный код еще раз перед выполнением кода отправки, создавая дополнительную запись. EG, если идентификатор был сгенерирован как 59, пользователь нажимает «отправить», код создает другую запись с идентификатором 60 и применяет обновления к этому вместо 59. Как я могу заставить его не генерировать вторую запись, а вместо этого обновлять только начальную запись?Сделать код PHP только один раз

<?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

Избавьтесь от mysql и перейдите в MySQLI (объектно-ориентированное было бы лучше) и сделайте это, как вчера. – Ohgodwhy

ответ

0

Обычный подход:

URL, чтобы создать новую запись будет http://your.site/requests/new или http://your.site/requests/create или просто http://your.site/request.

URL для обновления существующей записи будет http://your.site/requests/123.

После создания новой записи пользователь перенаправляется на страницу/123, где они могут обновлять свою запись.

php одинаковый для обоих URL. Проверьте, что isset($_GET['ID']), в этом случае вы редактируете существующую запись. Если $ _GET ['ID'] не установлен, вы создаете новую запись. Оберните заявление INSERT в блоке if (isset($_GET['ID'])).