2014-09-23 78 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