php - 按名称删除表格行

标签 php jquery mysql ajax dropzone.js

我正在使用 dropzone.js 将图像文件存储到文件夹中。问题是,只要没有刷新或切换到同一页面上的其他链接,所有上传的图片预览只会显示在 dropzone 字段 中,因此这些图片只能在上传后立即删除(如果我在这里错了,请纠正我)。

由于这种情况,我有了一个想法,通过保存信息(例如文件名、大小、链接、类型等)以及上传到 MySQL 数据库,然后查询一个表输出,这样我就可以稍后从表行中删除特定的图像文件。

enter image description here

通过点击垃圾桶(看附图),文件的名称通常会被 jQuery 获取,然后被 AJAX 发送到 PHP 这样就可以从数据库中删除该行,并且该文件与文件夹断开链接。它以某种方式在 ID 上运行良好,但在 name 上运行不佳。我在这里看不到可能的错误,因此我需要你的帮助。我需要一个 NAMEjQuery 而不是 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) 一直在说:undefined!身份证

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);
?>

最佳答案

而不是使用 prop() 要获取数据,您需要使用 attr() :

var name = $(this).parent().parent().attr('name');

您可以使用 prop()只给那些 tags <tr> 支持的喜欢classid ,在您的情况下,您使用 name 的地方, 不受支持。同时 attr()可用于不同的不受支持的标签。


另一种方法:

一种方法是在您的 <a> 上分配一个新标签直接,而不是通过父级两次:

echo '<td><a class="delete" href="#" data-artname="'.$row['name'].'">...

所以,不要使用以下方法获取名称:

var name = $(this).parent().parent().attr('name');

可以通过以下方式获取对应的姓名数据:

var name = $(this).attr('data-artname');

你可以查看这个fiddle举个例子。


还是需要考虑@e4c5的回答和推荐

关于php - 按名称删除表格行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41498460/

相关文章:

javascript - jQuery 代码中的基本问题

javascript - 如何在 Sharepoint 2010 中使用 javascript 在连接的列表查看器 Web 部件中获取所选项目

javascript - jQuery 全局函数和 Javascript .id 方法

mysql - 将具有 STR_TO_DATE 的查询转换为 BigQuery 语法

php - Cakephp不更新模型

php cURL 问题

mysql - 在 Amazon EC2 上安装 DBD::mysql 时无法找到 mysql_config

php - 与在 PHP 中计算持续时间(然后存储在 MySQL 中)相比,在 MySQL 中计算持续时间有什么优势吗?

php - 名称数组 = 获取正确的文件

php - 获取我们数据库的 Facebook 个人资料图片