我已经使用下面的PHP代码创建了一个图像库,该图像库将从数据库中检索图像。现在,我想在图像中添加一个删除符号,以便从数据库中检索后可以将其删除。请帮助我。我该怎么做?
<div class="header">
<h2>
GALLERY
<!--<small>All pictures taken from <a href="https://unsplash.com/" target="_blank">unsplash.com</a></small>-->
</h2>
<hr/>
<div class="body">
<div id="aniimated-thumbnials" class="list-unstyled row clearfix">
<?php
//Include database configuration file
include('dbConfig.php');
//get images from database
$query = $db->query("SELECT * FROM images ORDER BY uploaded_on DESC");
if($query->num_rows > 0){
while($row = $query->fetch_assoc()){
$imageThumbURL = 'images/thumb/'.$row["file_name"];
$imageURL = 'images/'.$row["file_name"];
?>
<a href="<?php echo $imageURL; ?>" data-fancybox="group" data-caption="<?php echo $row["title"]; ?>" >
<img src="<?php echo $imageThumbURL; ?>" alt="" />
</a>
<?php }
} ?>
</div>
</div>
</div>
您可以简单地添加删除按钮
<?php
//Include database configuration file
include('dbConfig.php');
//get images from database
$query = $db->query("SELECT * FROM images ORDER BY uploaded_on DESC");
if($query->num_rows > 0){
while($row = $query->fetch_assoc()){
$imageThumbURL = 'images/thumb/'.$row["file_name"];
$imageURL = 'images/'.$row["file_name"];
?>
<a id="imageid-<?=$row[0]?>" href="<?php echo $imageURL; ?>" data-fancybox="group" data-caption="<?php echo $row["title"]; ?>" >
<img src="<?php echo $imageThumbURL; ?>" alt="" />
<div class="delete" data-imgId="<?=$row[0]?>">Delete</div>
</a>
<?php
}
}
?>
然后处理该按钮的单击和一个Ajax调用,例如
$(".delete").click(function(e){
var rowId = e.target.dataset.imgId;
$.ajax({
method: 'DELETE',
url: "", // url to delete
data: {image_id: rowId}
success: function(){
$('imageid-'+rowId).hide();
}
});
});
在这里,它将将图像ID作为参数传递给API调用,并在API调用成功后隐藏图像。
if($query->num_rows > 0) {
while($row = $query->fetch_assoc()) {
$imageThumbURL = 'images/thumb/'.$row["file_name"];
$imageURL = 'images/'.$row["file_name"];
?>
<a href="<?php echo $imageURL; ?>" data-fancybox="group" data-caption="<?php echo $row["title"]; ?>" >
<img src="<?php echo $imageThumbURL; ?>" alt="" /></a>
<!-- HERE YOU CREATE SPAN AND GIVE IMAGE ID AS DATA ID
<span class="deleteImage" data-id="<?=$row[0]?>">Delete Image</span>
<?php }
和ajax调用如下
$(".deleteImage").click(function(){
$.ajax({
//PAGE THAT DELETE IMAGE
url: "delete_image_page.php",
context: document.body,
data: {data:data}
success: function(){
//ON SUCCESS WHAT YOU WANT TO DO
$(this).addClass("done");
}
});
});
注意:有关更多信息,请阅读此文档。而且,您应该在提出此类问题之前先阅读这篇文章。
这是一个小例子。基本上,在单击按钮时,您要调用AJAX
方法以发送要删除的图像名称。需要将请求发送到另一个PHP
文件,该文件将接收请求,对其进行处理并返回响应。根据响应,我们会知道该方法是否成功。
您需要一个额外的Javascript
文件来保存AJAX
功能,以及一个其他PHP
文件来处理请求并返回响应。
您的php文件:
<div class="header">
<h2>GALLERY</h2>
<!--<small>All pictures taken from <a href="https://unsplash.com/" target="_blank">unsplash.com</a></small>-->
<hr/>
<div class="body">
<div id="aniimated-thumbnials" class="list-unstyled row clearfix">
<?php
//Include database configuration file
include('dbConfig.php');
//get images from database
$query = $db->query("SELECT * FROM images ORDER BY uploaded_on DESC");
if($query->num_rows > 0)
{
while($row = $query->fetch_assoc())
{
$imageThumbURL = 'images/thumb/'.$row["file_name"];
$imageURL = 'images/'.$row["file_name"];
echo '<div class="imageContainer">
<a href="'.$imageURL.'" data-fancybox="group" data-caption="'.$row['title'].'" >
<img src="'.$imageThumbURL.'" alt="" />
</a>
<input type="button" onclick="deleteImage(''.$row["file_name"].'')" value="Delete" />
</div>';
}
}
?>
</div>
</div>
</div>
JavaScript文件:
// Send the `fileName` of the image
function deleteImage(fileName)
{
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function()
{
// This `if` underneath is success. It means we got a response back
if (this.readyState == 4 && this.status == 200)
{
if(this.responseText == "OK")
{
alert('Success, deleted: ' + fileName + ' Response: ' + this.responseText);
}
else if(this.responseText == "Not OK")
{
alert('Picture: ' + fileName + ' was not deleted.');
}
}
};
// For example you send a request to deleteImage.php sending `fileName` info
// - deleteImage.php just needs to echo the response to answer back
xhttp.open("GET", "deleteImage.php?fileName=" + fileName, true);
xhttp.send();
}
其他php文件,deleteimage.php(ajax请求接收者):
<?php
$con = ... // Here goes DB connection data
if(isset($_GET['fileName']) && $_GET['fileName'] != '')
{
// Clean the input
$clean['fileName'] = mysqli_real_escape_string($con, $_GET['fileName']);
// Do something
}
// if successful echo 'OK';
// if not successful echo 'Not OK';
?>