我是PHP / MySQL和HTML的完全初学者,但我从这个论坛获得的帮助帮助我学习的帮助令人惊讶。真的很有意思。
当我从数据库中删除记录并将html表输出到页面上时,我的最新问题就出现了。我点击删除并立即删除记录,但是如果可能的话,我会像对话框一样说“你确定要删除此订单吗?”
的index.php:
<?php
include('connection.php');
$result = mysql_query("SELECT * FROM orderform ORDER BY id ASC");
echo "<table border='1' >
<tr>
<th><u>ID</th>
<th><u>Date</th>
<th><u>Product</th>
<th><u>Product Comments</th>
<th><u>Name</th>
<th><u>Address</th>
<th><u>Age</th>
<th><u>Delivery</th>
<th><u>Order Complete?</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['id']. "</td>";
echo "<td>" . $row['date'] . "</td>";
echo "<td>" . $row['product'] . "</td>";
echo "<td>" . $row['productcomments'] . "</td>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['address'] . "</td>";
echo "<td>" . $row['age'] . "</td>";
echo "<td>" . $row['delivery'] . "</td>";
echo "<td><a href=\"deleterow.php?id=".$row['id']."\">Yes</a></td>";
echo "</tr>";
}
echo "</table>";
?>
deleterow.php:
<?php
$id = $_GET['id']; //this needs to be sanitized
if(!empty($id)){
include('connection.php');
$result = mysql_query("DELETE FROM orderform WHERE id=".$id);
}
header("Location: index.php");
?>
非常感谢所有帮助
答案 0 :(得分:3)
尝试这样,我们删除了href
并在重定向之前添加了onclick
这是带有确认提示的javascript
替换这个:
echo "<td><a href=\"deleterow.php?id=".$row['id']."\">Yes</a></td>";
由此:
echo '<td><a href="javascript:void(0);" onclick="if(confirm(\'Are you sure you want to delete this row?\')){ window.location=\'deleterow.php?id='.$row['id'].'\';}">Yes</a></td>';
然后在你的文件deleterow.php中保护自己免受sql注入消毒这样:
<?php
$id = (int)$_GET['id']; //this needs to be sanitized
if(!empty($id)){
include('connection.php');
$result = mysql_query("DELETE FROM orderform WHERE id=".$id);
}
header("Location: index.php");
?>
如果你开始学习,我肯定SO上的人应该告诉你停止使用mysql_*
函数,因为它们已被弃用。您应该学会使用:mysqli或PDO
答案 1 :(得分:0)
我就是这样做的...我真的很讨厌javascript弹出窗口......
<?php
if(isset($_GET['id'])){
$id = $_GET['id'];
?>
<form method="POST">
<fieldset style="border: thin black solid; width: 500px; margin: 0 auto;">
<legend>Confirm!</legend>
Are you sure you want to delete record <b><?=$id?></b><br/><br/>
<input type="hidden" name="id" value="<?=$id?>"/>
<input type="submit" name="confirm" value="Yes" />
<input type="button" value="no" onclick="window.location = 'index.php';" />
</fieldset>
</form>
<?php
}else if(isset($_POST['confirm']) && $_POST['confirm'] == 'YES'){
$id = $_POST['id'];
if(isset($id) && !empty($id) && ctype_digit($id)){
include('connection.php');
$result = mysql_query("DELETE FROM orderform WHERE id=".$id);
}
header("Location: index.php");
exit();
}
答案 2 :(得分:0)
您可以选择处理此客户端或服务器端。
客户端或浏览器将使用javascript进行处理。对于用户来说,这通常更简单,更容易,但是您的代码对客户端是可见的,可以被操纵或完全绕过。由于这里已经有一个例子,你要求php帮助我将跳过这个例子。
另一个选项是服务器端,或者是php代码。在这里,您将在删除过程中有第二页。此解决方案对于可能会尝试遍历链接的Web爬网程序或机器人可能意外访问的CRUD命令很有用。机器人不会知道该链接是用于删除的,并且会点击它,并且您将在一天早上醒来,每次删除数据库中的记录。
这是一个编写它的方法的简单示例。
<?php
$id = $_GET['id']; //this needs to be sanitized
$confirm = $_GET['confirm']; //this needs to be sanitized
if(!empty($comfirm)){
include('connection.php');
$result = mysql_query("DELETE FROM orderform WHERE id=$comfirm");
}
?>
<? if(!empty($id)) : ?>
<h2>Are you sure?</h2>
<a href="deleterow.php?comfirm=<?= $row['id']?>">Yes</a>
<? endif; ?>
header("Location: index.php");
?>
上面的例子中有两点需要注意。第一,用双引号“和单引号”把东西放在一起。双引号允许您传递变量
echo "Hello $name"; //Hello Jonty
而单引号不是
echo 'Hello $name'; //Hello $name
第二个是你可以在同一个文档中插入html和php,这样你就可以看到我关闭php并开始输入计划HTML,随时我想使用php逻辑我只是使用打开和关闭标签
<? while($row = mysql_fetch_array($result)) : ?>
<tr>
<td> <?= $row['id'] ?> </td>
<td> <?= $row['date'] ?> </td>
<td> <?= $row['product'] ?> </td>
<td> <?= $row['productcomments'] ?> </td>
<td> <?= $row['name'] ?> </td>
<td> <?= $row['address'] ?> </td>
<td> <?= $row['age'] ?> </td>
<td> <?= $row['delivery'] ?> </td>
<td> <a href="deleterow.php?id= <?= $row['id'] ?>">Yes</a> </td>
</tr>
<? endwhile; ?>
一些帮助你学习php的快速资源是:
http://learnxinyminutes.com/docs/php/
希望这会有所帮助,快乐的编码。