我希望通过使用链接而不是按钮来删除数据库中的文件。我怎样才能做到这一点?我需要使用href / unlink或者什么? 我可以做弹出确认,是或否。我知道该怎么做,但我应该把代码放在哪里?
这是系统如何显示所有文件名并直接上传的部分。在每个文件旁边,都会有一个“删除”功能:
$qry = "SELECT * FROM table1 a, table2 b
WHERE b.id = '".$rs[id]."' AND a.ptkid = '".$rs[id]."' ";
$sql = get_records_sql($qry);
foreach($sql as $rs){ ?>
<?echo '<a href="download.php?f='.$rs->faillampiran.'">'. basename($rs->faillampiran).'</a>';
?><td><?echo '<a href=""> [Remove]</a>';?></td><?
?><br>
<? }
?>
谢谢所有
答案 0 :(得分:3)
这样做的优雅方式是同时使用PHP和JavaScript。 PHP是一种服务器端语言,应尽可能从客户端端删除。一个很好的方法就是基本上创建一个API。
API将是一个删除行的PHP脚本。它在via GET中接受一个变量,并返回一个布尔值,表示“是的,我们删除了行”或“出错了”。我喜欢使用JSON,它在JavaScript中比XML更容易使用,以及jQuery的getJSON函数,这个包使得真的很容易开始。
在.php文件中(稍后我们称之为api.php),如果结果成功则返回成功布尔值。我们在数组上使用PHP的json_encode,并回显结果:
$variable = someFunctonToSanitize($_REQUEST['idToDelete']);
$query_to_run = "delete query using $variable";
$result = mysql_query($query_to_run);
// set headers
header('Content-type: text/json');
header('Content-type: application/json');
// if the query was successful, echo true
if($result) {
echo json_encode(array("success"=>"true"));
} else { // else echo false
echo json_encode(array("success"=>"false"));
}
在你的JavaScript中,这里使用jQuery(不鼓励,请参阅下面的评论):
$('#deleteLink').click(function(event) {
// prevent link from actually going anywhere
event.preventDefault();
// Fire off API request
$.getJSON("api.php?idToDelete=whatever", function(data){
if(data.success) {
alert("Item was deleted.");
} else {
alert("There was an error");
}
});
});
根据@Col的.post()请求。 Shrapnel和@josh3736的评论(注意:还将$ _GET更改为$ _REQUEST以同时使用):
$.post("api.php", { "idToDelete": "whatever" },
function(data){
if(data.success) {
alert("Item was deleted.");
} else {
alert("There was an error");
}
}, "json");
在您的HTML中:
<a href="#" id="deleteLink">Delete!</a>
答案 1 :(得分:1)
没有链接或按钮可用于数据库交互。执行此类操作是服务器端代码。您必须了解您的应用程序有3层:
第一个不能直接与最后一个互动。
因此,一方面,无关紧要,通过链接或按钮,您可以调用服务器端代码(代码保持不变)。
但是,另一方面,有一条规则:
使用GET方法(链接)来请求信息和POST(表单/按钮)来修改它。
所以,你不应该使用链接删除文件,因为一些太聪明的机器人可以在一秒钟内擦除你的所有数据库。
关于你在哪里放置代码的问题,只需编写一个php脚本unlink.php
,它通过硬编码路径删除文件。然后,在完成此操作后,将此文件设为HTML表单的操作。硬编码的。完成后 - 您可以尝试从数据库生成此表单
这种 - 逐步的方式 - 是开发wab-application的唯一可行方法
答案 2 :(得分:0)
建立链接:
<a href="/delete.php?......">Delete</a>
然后创建一个处理删除的delete.php
,并确保您检查会话是否已获得授权。
答案 3 :(得分:0)
在PHP中,您使用unlink()删除文件。如果您提供一个接受文件名(或更好,文件ID)作为参数的页面,则可以在文件上调用unlink()。显然,您需要考虑一些严重的安全隐患。
答案 4 :(得分:-1)
要确认删除,请在onclick函数()
中使用它在href标签中,本身:
<a href="" onclick="return ConfirmDelete();" ></a>
在上部页面使用这样的javascript,
function ConfirmDelete() {
var confm = window.confirm("Are you sure want to delete this !");
if(confm == true) {
return true;
} else {
return false;
}
}
对于删除选项,给出相同的页面链接并传递参数并通过get function
获取参数<a href='samepagename?deleteid='.<?php echo $id;?>
在这样的参数使用中,
$deleteid = $_GET["deleteid"];