【发布时间】:2017-01-06 03:28:13
【问题描述】:
我正在使用dropzone.js 将图像文件存储到文件夹中。问题是,所有上传的图片预览只显示在dropzone field 中,只要没有刷新或切换到同一页面上的其他链接,因此这些图片只能在上传后立即删除(如果我'我错了)。
由于这种情况,我想到了保存信息(例如文件名、大小、链接、类型等)以及上传到MySQL 数据库,然后查询表输出,所以我稍后可以从表格行中删除某个图像文件。
通过单击垃圾箱(观看附图),文件名通常应由jQuery 获取,然后由AJAX 发送到PHP,因此可以从数据库中删除该行并取消链接文件从文件夹。不知何故,ID 运行良好,但 name 运行良好。我在这里看不到可能的错误,因此我需要您的帮助。我需要NAME 来获取jQuery 而不是ID,这一点非常重要。它甚至可以这样工作吗?如果是这样,怎么做?如果没有,怎么办?
<table class="table table-striped table-hover droplist">
<thead>
<tr>
<th>#</th>
<th>filename</th>
<th>size[bytes]</th>
<th>image</th>
<th>type</th>
<th>created_at</th>
<th>delete</th>
</tr>
</thead>
<?php
$statement = $pdo->prepare("SELECT * FROM file_upload ORDER BY id");
$result = $statement->execute();
$count = 1;
while($row = $statement->fetch()) {
echo '<tr name="'.$row['name'].'">';
echo "<td>".$count++."</td>";
echo "<td>".$row['name']."</td>";
echo "<td>".$row['size']."</td>";
// echo '<td><a href="'.$row['link'].'">'.$row['link'].'</a></td>';
echo "<td>".$row['type']."</td>";
echo "<td>".date('d.m.Y H:i:s',strtotime($row['date']))."</td>";
echo '<td><a class="delete" href="#"><i class="fa fa-trash" ></i></a></td>';
echo "</tr>";
}
?>
dropzonelist.js:
$('table.droplist td a.delete').click(function(e) {
e.preventDefault();
var name = $(this).parent().parent().prop('name');
var data = 'name=' + name ;
var parent = $(this).parent().parent();
// alert(name),
$.ajax({
type: "POST",
url: "delete_dropfile.php",
data: data,
cache: false,
success: function(response) {
//...whatever
顺便说一句,alert(name) 一直说:未定义!身份证
PHP 脚本:
if(isset($_POST['name'])) {
$file = $_POST['name'];
} else {
die;
}
// sql to delete a record
$filedel = "DELETE FROM file_upload WHERE name='$file'";
if ($pdo->exec($filedel)) {
echo "(image)file successfully erased!";
}
unlink($_SERVER['DOCUMENT_ROOT'] . '/anydaynow/gallery/samples/' . $file);
?>
【问题讨论】:
-
您能帮我一个忙,将您的 PHP 代码生成的 HTML 添加到某处吗?我看到您已经添加了生成 HTML 的 PHP 代码,但是没有数据供我用来填写该循环,我基本上是在和自己玩猜谜游戏。
-
PHP 脚本仅返回 echo 并作为成功警报发送到 JS 文件。就是这样。其他一切都在后面处理。
-
你试过我的答案了吗?
标签: php jquery mysql ajax dropzone.js