Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按名称删除表行_Php_Jquery_Mysql_Ajax_Dropzone.js - Fatal编程技术网

Php 按名称删除表行

Php 按名称删除表行,php,jquery,mysql,ajax,dropzone.js,Php,Jquery,Mysql,Ajax,Dropzone.js,我正在使用dropzone.js将图像文件存储到文件夹中。问题是,只要没有刷新或切换到同一页面上的其他链接,所有上传的图像预览都只显示在dropzone字段中,因此这些图像只能在上传后立即删除(如果我在这里出错,请纠正我) 由于这种情况,我有了一个想法,即在上传到MySQL数据库的同时保存信息(例如文件名、大小、链接、类型等),然后查询表输出,以便稍后能够从表行中删除特定的图像文件 通过点击垃圾桶(观看附件图像),通常情况下,文件名应该由jQuery获取,然后由AJAX发送到PHP,这样就可以

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

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

通过点击垃圾桶(观看附件图像),通常情况下,文件名应该由
jQuery
获取,然后由
AJAX
发送到
PHP
,这样就可以从数据库中删除该行,并且文件与文件夹解除链接。不知何故,它通过
ID
而不是
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>";
}
?>
顺便说一句,警报(名称)一直在说:未定义!IDK

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);
?>
Javascript错误 您的javascript中存在问题。这是错误的

var data = 'name=' + name ;
有时它会工作,但当文件名包含非字母数字字符时,即使是空格也会中断。例如,如果文件名为
hello world.jpg
,它将被发送到服务器,但服务器希望它是
hello+world.jpg
,您应该这样做

 var data = {'name': name }
PHP错误 这也是错误的

 $filedel = "DELETE FROM file_upload WHERE name='$file'";
特殊字符将破坏这一点,更糟糕的是,它可能导致sql注入。固定为

$filedel = $pdo->prepare("DELETE FROM file_upload WHERE name=:file");
$filedel->execute(array(":file"=>$file));
Javascript错误 您的javascript中存在问题。这是错误的

var data = 'name=' + name ;
有时它会工作,但当文件名包含非字母数字字符时,即使是空格也会中断。例如,如果文件名为
hello world.jpg
,它将被发送到服务器,但服务器希望它是
hello+world.jpg
,您应该这样做

 var data = {'name': name }
PHP错误 这也是错误的

 $filedel = "DELETE FROM file_upload WHERE name='$file'";
特殊字符将破坏这一点,更糟糕的是,它可能导致sql注入。固定为

$filedel = $pdo->prepare("DELETE FROM file_upload WHERE name=:file");
$filedel->execute(array(":file"=>$file));
您需要使用以下命令,而不是使用获取数据:

您只能将
prop()
用于
支持的对象,如
class
id
,在您使用
name
的情况下,这些对象不受支持。而
attr()
可用于不同的不受支持的标记


另一种方法: 例如,一种方法是在
上指定一个新标记


您还需要考虑“E4C5/P>>P>的答案和建议,而不是使用获取数据,您需要使用:

您只能将
prop()
用于
支持的对象,如
class
id
,在您使用
name
的情况下,这些对象不受支持。而
attr()
可用于不同的不受支持的标记


另一种方法: 例如,一种方法是在
上指定一个新标记




你还需要考虑E4C5

的答案和建议。你能帮我一个忙,并把你的PHP代码中的HTML添加到什么地方吗?我看到您添加了生成HTML的PHP代码,但没有数据可供我填写循环,我基本上是在玩猜谜游戏。PHP脚本只返回echo,并将其作为成功警报发送到JS文件。就这样。其他的都在后面处理。你试过我的答案了吗?你能帮我一个忙,把PHP代码生成的HTML添加到某个地方吗?我看到您添加了生成HTML的PHP代码,但没有数据可供我填写循环,我基本上是在玩猜谜游戏。PHP脚本只返回echo,并将其作为成功警报发送到JS文件。就这样。其他的都在后面处理。你试过我的答案吗?即使把JS代码改成var data={'name':name}它也会一直说:未定义!由于某种原因,似乎无法获取任何值(图像文件中的名称)。真奇怪!你知道还有什么不对劲吗?在你发布的代码中没有一个带有droplist类的表为什么你不直接将名称添加到
标记中对我来说是个谜@e4c5-这就是我对我的答案的建议:(顺便说一句,我们已经远离了原来的问题。这有两个问题是我帮助您解决的。未定义的变量是另外一个问题。请接受这个问题,如果您仍然有问题,请发布另一个问题,即使将JS代码改为var data={'name':name}它一直在说:未定义!似乎没有值(来自图像文件的名称)由于某种原因可以获取。这很奇怪!知道还有什么可能是错误的吗?在你发布的代码中没有一个带有droplist类的表。为什么你不直接将名称添加到
标记中对我来说是个谜!@e4c5-这就是我在回答中的建议:(顺便说一句,我们已经远离了原来的问题。我帮你解决了两个问题。未定义的变量是另外一个问题。如果你仍然有问题,请接受这个问题并发布另一个问题是的,现在它很好!竖起大拇指!我想。prop()将是相同的,例如.attr()和.attr()同时已过时且不再使用。我再次必须检查两种方法之间的差异。很好,你解决了这个奇怪的问题。@what_me-如果答案对你有帮助,你可以勾选答案左侧相应的复选图标,或者向上投票最有帮助的答案。是的,现在
var name = $(this).attr('data-artname');