user3375665
user3375665

Reputation: 63

Delete image in database

I'm trying to delete specific images in a database through PHP.

I have a page where all images in the database are displayed and I wanted a button under each one of them so I could delete them individually through their id but I don't know how.

Here's the PHP code for showing all images:

<?php
$result = mysqli_query($con, "SELECT * FROM galeria");
?>
<h5>Images:</h5>
<?php
while ($row = mysqli_fetch_array($result)) {
    ?><h6> <?php echo $row['titleimg']; ?></h6>
    <p><?php echo $row['events_id']; ?></p>
    <img src="../images/<?php echo $row["img"]; ?>" width="301px" height="200px"/>
    <form action="delete_images.php" method="post">
        <input type="submit" name="delete" value="Delete" />
    </form>
    <?php
    echo "<br>";
    echo "<br>";
}
?>

So now, what's the code I should have in my "delete_images.php" file?

Upvotes: 1

Views: 102

Answers (2)

Deo
Deo

Reputation: 82

Put a hidden input field that will contain the imageName to which you want to delete.

<input type="hidden" value="'.$row["img"].'" name="imageName" />

// Now write some server side code in delete_images.php that will delete file 

  if (array_key_exists('imageName', $_POST)) {
  $filename = $_POST['imageName'];
  if (file_exists($filename)) {
   unlink($filename);
  // Write Mysql query that will delete the row from database
  echo 'File '.$filename.' has been deleted';
   } else {
    echo 'Could not delete '.$filename.', file does not exist';
   }
   }

Upvotes: 0

David
David

Reputation: 218808

Your form needs an additional piece of information, an identifier for the image to be deleted. Something like:

<form action="delete_images.php" method="post">
    <input type="hidden" name="id" value="<?php echo $row['img_id'] ?>" />
    <input type="submit" name="delete" value="Delete" />
</form>

Naturally, I'm guessing on the column name (img_id), but any identifier for that specific image will do the trick. With that, your POST to delete_images.php will have that value (in $_POST['id']) and can use it in the DELETE query to the database.

Upvotes: 1

Related Questions