Solved

delete an image from the database folder

Posted on 2010-09-01
4
361 Views
Last Modified: 2012-05-10
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

0
Comment
Question by:irwells
  • 3
4 Comments
 
LVL 30

Accepted Solution

by:
Marco Gasi earned 500 total points
ID: 33577245
You could simply write:

$image= $_POST["image_name"] ;
$path = '../../uploads/'.$image;
unlink($path);

If this doesn't work try to check  $_POST["image_name"]

Best regards
0
 
LVL 30

Expert Comment

by:Marco Gasi
ID: 33577500
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
0
 

Author Comment

by:irwells
ID: 33579220
Thanks marqusG for the quick reply.

I changed

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

and it works great.

Thank you.
0
 
LVL 30

Expert Comment

by:Marco Gasi
ID: 33579313
Glad for helped you. Thanks for points.
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Author Note: Since this E-E article was originally written, years ago, formal testing has come into common use in the world of PHP.  PHPUnit (http://en.wikipedia.org/wiki/PHPUnit) and similar technologies have enjoyed wide adoption, making it possib…
These days socially coordinated efforts have turned into a critical requirement for enterprises.
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
The viewer will learn how to count occurrences of each item in an array.

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now