Solved

delete an image from the database folder

Posted on 2010-09-01
4
370 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
4 Comments
 
LVL 31

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 31

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 31

Expert Comment

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

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Wordpress Query 5 47
How to use session variables in php? 22 52
Increase counter and attr inside a while loop 15 37
How do I remove "" from json_encode 5 23
Generating table dynamically is the most common issue faced by php developers.... So it seems there is a need of an article that explains the basic concept of generating tables dynamically. It just requires a basic knowledge of html and little maths…
3 proven steps to speed up Magento powered sites. The article focus is on optimizing time to first byte (TTFB), full page caching and configuring server for optimal performance.
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

730 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