Link to home
Start Free TrialLog in
Avatar of irwells
irwells

asked on

delete an image from the database folder

Hi, I need help once again. This time with deleting images from the 'uploads' database folder.

I have no problems deleting the item from the database but cant find a way of deleting the related image from the folder (../../uploads).

I have looked through some of the solution posted on this site, but cant find a solution as each question in unique.

I have add to my code (attached) but get an error?

$path = '../../uploads/'; //path
           $image= $_POST["image_name"] ;
           
            //check that the path excsits
           if(file_exists($path)){
            echo "file exists";
            //echo $path;
            unlink($path,$image);
            }else{
              echo"file doesnt exist";
            }

error message: Warning: unlink() expects parameter 2 to be resource, string given in C:\xampp\htdocs\WEBSITE\wwwroot\admin\delete_image.php on line 64

The parth is ok, but I dont think im getting thew right image value to be deleted. I can delete the image manually by

$path = '../../uploads/pic1.jpg';
unlink($parth);

thanks
Ian Wells
<?php
session_start();
if(!isset($_SESSION['agent']) or ($_SESSION['agent'] != md5($_SERVER['HTTP_USER_AGENT']))){
require_once('../../secure/connect.php');
require_once('../php/login_functions.php');

        $url = absolute_url();
        header("Location:$url");
        exit();
}

$page_title = 'Delete Product!';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title>delete image</title>
</head>
<?php
require_once('../../secure/connect.php');
include ('../includes/header.html');
?>

<!--<link rel="stylesheet" href="css/styleSheet.css" type="text/css" />-->
<body>
<!-- Start of Container -->
<div id="container">
<!--Header -->

<div align="center" >
<?php # delete_image.php

// This page is for deleting a item record.
// This page is accessed through search_product.php

echo '<b><font color="#993300"><h1>Delete Image...</h1></b>';

// Check for a valid user ID, through GET or POST:
if ( (isset($_GET['id'])) && (is_numeric($_GET['id'])) ) { // From view_users.php
	$id = $_GET['id'];
} elseif ( (isset($_POST['id'])) && (is_numeric($_POST['id'])) ) { // Form submission.
	$id = $_POST['id'];
} else { // No valid ID, kill the script.
	echo '<p class="error">This page has been accessed in error.</p>';
	//include ('includes/footer.html');
	exit();
}

// Check if the form has been submitted:
if (isset($_POST['submitted'])) {

	if ($_POST['sure'] == 'Yes') { // Delete the record.
           // Get the user's information:
            
           $path = '../../uploads/';
           $image= $_POST["image_name"] ;

           if(file_exists($path)){
            echo "file exists";
            //echo $path;
            unlink($path,$image);
            }else{
              echo"file doesnt exist";
            } 
 
		// Make the query:
		$q = "DELETE FROM images WHERE images.id=$id LIMIT 1";
		$r = @mysqli_query ($mysqli, $q);
                
		if (mysqli_affected_rows($mysqli) == 1) { // If it ran OK.

			// Print a message:
			echo '<p>The image has been deleted.</p>';
                        echo '<p><a href="search_product.php">Return to Admin</a></p>';

		} else { // If the query did not run OK.
			echo '<p class="error">The imjage could not be deleted due to a system error.</p>'; // Public message.
			echo '<p>' . mysqli_error($mysqli) . '<br />Query: ' . $q . '</p>'; // Debugging message.
		}

	} else { // No confirmation of deletion.
		echo '<p>The image has NOT been deleted.</p>';
        echo '<p><a href="search_product.php">Return to Admin</a></p>';
	}

} else { // Show the form.

	// Retrieve the user's information:
	$q = "SELECT * FROM images WHERE id=$id";
	$r = @mysqli_query ($mysqli, $q);

	if (mysqli_num_rows($r) >=0) { // Valid user ID, show the form.

		// Get the user's information:
		$row = mysqli_fetch_array ($r, MYSQLI_NUM);

// Create the form:
	echo '<form action="delete_image.php" method="post">';
        echo '<h3>Name: ' . $row[1] . '</h3>';
        echo "<img src=\"../../uploads/".$row[2]."\" width=\"80px\" /></br>";
	echo '<p>Are you sure you want to delete this user?<br />';
	echo '<input type="radio" name="sure" value="Yes" /> Yes';
	echo '<input type="radio" name="sure" value="No" checked="checked" /> No</p>';
	echo '<p><input type="submit" name="submit" value="Submit" /></p>';
	echo '<input type="hidden" name="submitted" value="TRUE" />';
	echo '<input type="hidden" name="id" value="' . $id .'" />';
        echo '<input type="hidden" name="image_name" value="' .$row[2].'" />';
	echo '</form>';

	} else { // Not a valid user ID.
		echo '<p class="error">This page has been accessed in error.</p>';
	}

} // End of the main submission conditional.

mysqli_close($mysqli);
?>
</div>
</div>
</body>
</html>

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of Marco Gasi
Marco Gasi
Flag of Spain image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
To chekc if you get the right value for image name, first you can add a simple echo $image;exit(); immediatly after having filled $image varible. You could also post your table structure, so I can try to see if row[2] holds image_name. Your code seems to be correct.

Best regards
Avatar of irwells
irwells

ASKER

Thanks marqusG for the quick reply.

I changed

$parth ='../../uploads/';
to
$parth ='../../uploads/'.$image;

and it works great.

Thank you.
Glad for helped you. Thanks for points.