试图让这个工作变得有点疯狂......我有一个照片上传页面,可让您上传多张照片,并在上传表单下方显示特定用户的所有上传照片。我还在每张照片旁边放置了一个删除按钮,但是一旦删除照片,它就会一直显示该图像(尽管照片从服务器中删除时链接已断开)。我首先循环一个包含文件目录和名称的表,然后显示这些照片。我有一个调用unlink()函数的提交按钮。
$photoQuery= "SELECT * FROM photo_index WHERE User_ID='$UserID'";
$result = mysqli_query($dbcon, $photoQuery);
while ($photo_data = mysqli_fetch_array($result)){
echo "<form id=photo_Form action=listing_photos.php method=post> ";
echo "<input type=hidden name=photoDir value='$photo_data[Photo_Dir]' />";
echo "<input type=submit name=photoDel id=submit_but value=Delete />";
echo "</form>";
echo "<img src='$photo_data[Photo_Dir]' height=100px width=100px>";
}
然后这是删除照片文件的php和存储照片信息的表格中的行。
if (isset($_POST['photoDel'])){
$fh = fopen($_POST['photoDir'], 'a');
fclose($fh);
unlink($_POST['photoDir']);
$photoDel= "DELETE FROM photo_index WHERE Photo_Dir='$_POST[photoDir]'";
$result = mysqli_query($dbcon, $photoDel) or die(mysql_error());
echo "Photo Removed";
}
我必须在使用取消关联之前打开并关闭文件,因为如果我没有,我会在照片被删除后发出警告,说unlink(images / somephoto.jpg)不存在(因为它已从服务器已经)
点击删除按钮后应刷新页面不应该吗?当页面刷新时,它应重新加载查询,只显示照片列表中列出的照片?无论如何,需要两次刷新才能获得该结果。任何帮助将非常感激,或任何方式来做得更好!欢呼声。
答案 0 :(得分:0)
首先,您的代码很容易受到SQL注入攻击。你应该研究一下。接下来,也许您应该使用JS来查找和删除文档中的图像。因此,让<button>
运行一个函数,该函数从文档中删除具有该特定源的图像。
这是一个PHP代码段:
$photoQuery= "SELECT * FROM photo_index WHERE User_ID='$UserID'";
$result = mysqli_query($dbcon, $photoQuery);
while ($photo_data = mysqli_fetch_array($result)){
echo "<form id=photo_Form action=listing_photos.php method=post> ";
echo "<input type=hidden name=photoDir value=". $photo_data[Photo_Dir] . "/>";
echo "<input type=submit name=photoDel id=submit_but value=Delete />";
echo "</form>";
echo "<img src=" .$photo_data[Photo_Dir]. " id = 'picture' height=100px width=100px>";
echo "<script>
var d = getElementById('submit_but');
var b = getElementById('pic');
d.onclick = function(){
pic.parentNode.removeChild(b);
return true;
}
</script>";
}
请参阅此处了解JavaScript: