2014-09-23 64 views
1

所以我有這個代碼,其他堆棧成員幫助我微調和糾正一些錯誤,代碼都工作,因爲它應該但有一個小細節,後成功編輯一條記錄並單擊數據庫中所有現有記錄的更新按鈕加載到頁面中。這裏是我下面的代碼:PHP窗體更新mysql數據庫在編輯一個記錄後返回所有數據庫記錄

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

?> 

我知道它與形式的行動=「edit.php」的事,因爲它刷新在網址中的編號被拉出的頁面。所以我試過這個:

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

但這隻導致我的edit.php顯示爲空白頁。如果任何人都可以幫助我找出如何在點擊更新按鈕後阻止所有數據庫記錄顯示在頁面中,這真的會有所幫助。

+1

要麼省略SELECT,要麼使用兩個不同的文件,要麼在成功查詢後執行標題重定向。後者是你最好的選擇。 *你不能有你的蛋糕,也不能吃它*; – 2014-09-23 03:10:35

+0

你想要它做什麼?顯示更新的記錄或沒有?有幾種方法可以解決它。 – 2014-09-23 03:15:15

+0

理想情況下,更新發生後,我希望頁面重定向回我的索引頁。第一步是索引,第二步是edit.php檢索當前記錄值,然後edit.php提交新值,然後理想情況下重新定向。 – WebEducate 2014-09-23 03:17:56

回答

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']; 
    } 
} 

你也可以用它代替GET請求,並作出一個隱藏的輸入字段名「編輯「的形式。

+1

是的,這個效果很好,謝謝Garr和Fred,重定向可能不是最好的選擇,因爲我可以提供一個鏈接回到上一頁,以便將新的更改加載到更新的記錄。多謝你們 – WebEducate 2014-09-23 03:25:44