我需要显示MySQL桌面上数百个项目的简单列表,查看屏幕上的列表,然后单击每个不需要的项目旁边的链接,将其从表格中删除。这是一个内部管理程序;没有涉及外部用户。我不需要立即从列表中消失该项目;我会定期刷新列表,因此不再列出从表中删除的项目。我不需要任何消息来确认该项目已被删除。重要的是,每次删除某个项目时我都不想忽略该列表,并且必须单击“退回”#34;按钮返回列表。
该表使用MySQL。到目前为止,我所有的编码都是用PHP编写的。所以我使用php在非html屏幕上显示项目列表。这是每个项目的代码:
echo $item." <a href='item_delete.php?id=".$item."'>Delete item</a><br />";
这是item_delete.php的代码:
<?php
require ('connect.php'); // To define connection $con
$id = $_POST['id'];
mysqli_query($con, "DELETE FROM `items_table` WHERE `id` = $id");
?>
正确删除该项目,但显示空白屏幕(可理解)。
我已经做了很多搜索但是大多数需要帮助的人想要做更高级的事情 - 因为我到目前为止设法避免学习JavaScript,jQuery和AJAX - 我甚至无法解决哪些问题我需要在不更改屏幕的情况下更新表格。
我得到的印象是每个PHP脚本总是需要&#34;焦点&#34;有了它,所以也许我需要一个小的JavaScript脚本来做到这一点? 如果是这样: - 我可以将item_delete.php更改为item_delete.js,还是必须将非html列表定义为html列表? - item_delete.js中需要什么js代码?
我读过有关使用:header(&#34; location:javascript://history.go(-1)&#34;); 或:标题(&#39;位置:&#39;。$ _SERVER [&#39; HTTP_REFERER&#39;]); 但他们不会回到屏幕列表。
我不认为我希望js脚本执行虚拟&#34;返回&#34;因为列表最初是使用(大约20个)$ _POST参数生成的,所以我似乎每次都要刷新它。
所以我想要一个留在列表中的解决方案 - 而不是留下它并返回它。感谢。
答案 0 :(得分:0)
使用javascript进行异步删除会很有意义。然而,实现你想要的最简单和最简单的方法是添加target =&#34; _blank&#34;到链接,(这将为您提供每个删除请求的空白选项卡。)
echo $item." <a href='item_delete.php?id=".$item."' target='_blank'>Delete item</a><br />";
或者您可以通过在每个项目前添加复选框来解决此问题,检查要删除的项目并将其作为表单参数提交到删除脚本。
答案 1 :(得分:0)
如果要在实际运行PHP代码后删除屏幕表中的行,可以使用以下实现:
链接的HTML结构需要一个唯一的类名,例如:
echo '<a href="" onclick="return false" class="item-delete" data-item-id="' . $item . '">Delete item</a>'
请注意,商品ID存储在HTML5 data
属性中。我还添加了一个onclick
事件处理程序,它返回false
以避免链接刷新页面。
用于删除项目的javascript使用JQuery AJAX方法并绑定到指定的类,即:item-delete
。该实现需要Jquery版本&gt; = 1.9.0
(function(){
$('.item-delete').click(function(event) {
var target = $(event.target);
var id = target.data('item-id');
$.ajax({
url: 'item_delete.php',
method: 'POST',
data: {
id: id
},
}).done(function() {
target.remove();
}).error(function(err) {
console.error('Could not delete item with ID: ' + id);
console.error(err);
});
});
}())
事件侦听器在自执行函数中定义,该函数在页面加载完成时自动执行,并避免对全局命名空间进行规则。
答案 2 :(得分:0)
您可以直接在同一页面上删除该项目,而无需移动到另一个页面 页面通过传递id通过超链接,然后让它最终删除 不需要的物品。检查一下,请告诉我你是否属于你 想要:-)
// connection
mysql_connect("host", "user", "password");
mysql_select_db("your database name");
// select all the items from table.
$selectQuery = mysql_query("SELECT * FROM table_name" );
// use while loop to list all the items...
while( $row = mysql_fetch_array($selectQuery) )
{
// list the items as a hyperlink, passing their id through the URL.
?>
<a href ="?id=<?php echo $row["id"];?>"> <?php echo "delete " . $row["item_name"]; ?> </a>
<?php
}
// Below is the code to delete the item.
if( isset( $_GET["id"] ) )
{
$itemId = $_GET["id"];
// query to delete item
$deleteQuery = mysql_query("DELETE FROM table_name WHERE id = '$itemId' ");
//-----------THE MOST IMPORTANT PART. >>>
// redirect if delete is successfull.
if( $deleteQuery )
{
// reload the page to get the items minus the deleted one...
// let's say your sript name is delete.php
header("Location:delete.php");
}
}
?>
</code>