How to delete multible images in a directory with a checkbox.

  • Continuing from "How to copy files from one directory and adding two supporting files into the copied directory/directories"
    We now have moved the necessary files to manage those images in the newly moved directory entitled "archive".
    There is one exception, the code below will only delete one image at a time even though multiple checkboxes can be marked for deletion. How would we modify this code (manage.php) to delete all the images that have checkboxes selected?

        <form action="remove.php" method="POST" >
                <input type="submit" name="remove" value="Select image and Delete">
        //define location of photo image
        $photosDir = './images';
        //define which file extention are images
        $photosExt = array('gif','jpg','jpeg','tif','tiff','bmp','png');
        //initialize array to hold filenames of images found
        $photoList = array();
        //read directory contents
        //build photo list
        if (file_exists($photosDir)) {
          $dp = opendir($photosDir) or die('Error: cannot open file');
          while ($file =  readdir($dp)) {
            if ($file != '.' && $file != '..') {
              $fileData = pathinfo($file);
              if (in_array($fileData['extension'], $photosExt)) {
                $photoList[] = "$photosDir/$file"; // file includes as an array
        }else {
          die('ERROR: directory dosent exists');
        //itarate over photo list
        //display each image and file name
        if (count($photoList)>0) {
          for ($x=0; $x <count($photoList) ; $x++) {
              <input type="checkbox" name="check" value="<?php echo $photoList[$x] ?>">
              <img src="<?php echo $photoList[$x]; ?>" class="imagegrid"/>
    				<?php echo 'Image Name: '.  basename($photoList[$x]); ?><br>
    				<?php echo 'Image Size: '. round(filesize($photoList[$x])/1024) . 'KB'; ?>
        		} else {
          		die('ERROR: No image found');

    and next, remove.php

    //for delete image
      //check the image
      //unlink the file
      if (isset($_POST['check']) && !empty($_POST['check'])) {
           //find the file
          $file = $_POST['check'];
          //delete from directory
              header('Location: manage.php');
              echo $_POST['check']." has successfully deleted";
              echo $_POST['check']." has not been found!";
      } else{
      	header('Location: manage.php');
        echo "Select any image for delete";

  • In manage.php I would change "check" to "check[]"

    so from

     <input type="checkbox" name="check" value="<?php echo $photoList[$x] ?>">


     <input type="checkbox" name="check[]" value="<?php echo $photoList[$x] ?>">

    Then in remove.php you can access all the fields that were selected by doing something like:

    $files= $_POST['check'];
    foreach ($files as $file){ 
       // Do something with each $file here

    I have not tested this. But the idea should be solid. Keep me posted.

  • Hey @MPG-Radio

    How did that answer work out for you.

  • Pretty good but I haven't been able to get it working...:)