我目前有一个表可以按列使用带有订单变量的页面刷新进行排序:
$orderBy = array('PTS', '3PT');
$order = $_GET['orderBy'];
$query="SELECT * FROM `temps` ORDER BY ".$order." ASC" ;
然后,您可以通过单击该行中使用jquery的按钮来删除行:
$('input[type="button"]').click(function(e){
$(this).closest('tr').remove()
} )
但是,由于它正在删除HTML行,因此排序会再次带回所有已删除的行。最好的方法是什么,以便每个用户可以删除行然后对自己的表进行排序?
答案 0 :(得分:1)
您可以使用AJAX。
首先,我们必须为您的数据设置一个值。让我们将您的数据封装在<a>
实体中,并在其上设置data-artid
标记,并在其上指定主键值。
让我们假设你像这样获取所有数据:
<div id="result"></div> <!-- WE CAN USE THIS LATER TO SHOW THE STATUS OF THE DELETED DATA -->
<table>
<tr>
<td><a data-artid="1">Data 1</a></td><td><input type="button" value="Delete">
</tr>
<tr>
<td><a data-artid="2">Data 2</a></td><td><input type="button" value="Delete">
</tr>
<tr>
<td><a data-artid="3">Data 3</a></td><td><input type="button" value="Delete">
</tr>
</table>
然后让我们创建一个脚本,该脚本将获取所点击的Delete button
的最接近数据的值。然后使用AJAX将其传递到单独的文件上以执行删除查询。
$(document).ready(function(){ /* PREPARE THE SCRIPT */
$('input[type="button"]').click(function(e){ /* WHEN A DELETE BUTTON IS CLICKED */
e.preventDefault(); /* PREVENT THE DEFAULT ACTION */
var deleteid = $(this).closest('tr').find('a').attr('data-artid'); /* GET THE VALUE OF THE NEAREST DATA OF THE CLICKED DELETE BUTTON */
var dataString = "delete-id=" + deleteid; /* STORE IT IN A DATA STRING */
$(this).closest('tr').remove(); /* REMOVE THE ROW */
$.ajax({ /* START AJAX */
type: "POST", /* METHOD TO USE TO PASS THE DATA */
url: "delete.php", /* FILE WHERE WE WILL PASS THE DATA */
data: dataString, /* THE DATA WE WILL BE PASSING TO delete.php */
success: function(result){ /* WHEN ACTION IS SUCCESS */
$("#result").html(result); /* SHOW TO THIS DIV THE RESULT */
}
}) /* END OF AJAX */
});
});
您可以查看jsfiddle,但不要使用ajax部分。
您会注意到我们将数据传递给delete.php
。我们必须在此文件中创建删除查询(请注意,这将永久删除此记录)。
delete.php:
<?php
/* INCLUDE YOUR DATABASE CONNECTION HERE */
if(!empty($_POST["delete-id"])){
$stmt = $con->prepare("DELETE FROM temps WHERE id = ?");
$stmt->bind_result("i",$_POST["delete-id"]);
$stmt->execute();
}
else {
echo "You have not selected a data to delete.";
}
?>
但是如果你想保留数据,我们可以为你的表结构添加一个方案。
我们可以创建一个表,让它命名为preference-tb
。该表将存储以下内容
pre-id
)users-id
)data-id
)order
)因此,我们的delete.php
不会完全是删除查询,而是更新/插入查询。