Question

i'v an issue with unlink function in php , i'v a delete script where i click on a delete button it deletes an image ID from the table , but when i add the unlink function to the same button it automatically deletes the image but the ID remains which displays an empty image.

  <a href="inc/delete.php?id=<?php echo $i_id?>"><img src="inc/delete.png" style="height:15px;width:15px;"></img></a>

above code deletes the image ID but without deleting the image which works but i need as well to delete the image from the file.

<a href="inc/delete.php?id=<?php echo $i_id, unlink('photos/'.$i_img);?>"><img src="inc/delete.png" style="height:15px;width:15px;"></img></a>

above code called automatically whenever i refresh the page if there is an image it will delete it and it keeps the ID . my issue is that i want to perform that whenever i click on the delete image which deletes the image and unlink it as well. any help will be appreciated thanks.

Was it helpful?

Solution 4

well i did it this way and it works in case if someone later need the answer.

delete.php
    $id = $_GET["id"]; //ID OF THE ITEM FROM THE OTHER FILE
$select=mysql_query("select img from $table where id='$id'");
$image=mysql_fetch_array($select);
$img = $image['img'];
unlink("C:/wamp/www/ifinal/photos/$img");
$result=mysql_query("delete from $table where id='$id'");

a href that sends the id to the delete.php

 <a href="inc/delete.php?id=<?php echo $i_id;?>"><img src="inc/delete.png" style="height:15px;width:15px;"></img></a>

OTHER TIPS

what is the comma -> $i_id, unlink

you are calling the unlink() function

just remove unlink in href and put unlink function in delete.php file

<a href="inc/delete.php?id=<?php echo $i_id; ?>"><img src="inc/delete.png" style="height:15px;width:15px;"></img></a>

That's not how php works... Your php instructions are executed server-side before the page is rendered to the user. Here, you're saying to php "echo the id here, and then call this function immediately", not "echo this id, and when clicked, call this function" ; all of that is done before sending the page to the client, you can't call functions once the page has been loaded by the browser. Basicaly, remember that php "talks" to the server, not to the browser.

You can't tell the browser to "use the unlink php function on click"... The browser doesn't know how to use php.

You have to tell the browser to "call a php page on the server", page that will understand php and unlink the image based on the id only when the page is called, juste as Ka_lin suggested.

Maybe you should try to learn more about the difference between client and server and the process of calling a php script.

Remove unlink() from following code:

<a href="inc/delete.php?id=<?php echo $i_id, unlink('photos/'.$i_img);?>"><img src="inc/delete.png" style="height:15px;width:15px;"></img></a>

And use following logic in your delete.php file.

 $query = "YOUR DELETE QUERY";

 if( mysqli_query($connection, $query) ){  //if query executes successfully   
    if( file_exists("YOUR FILE PATH") ) { //check for the existence of file
        if( unlink("YOUR FILE PATH") ){ 
           //success! file has been deleted from server and entry from database
        } else {
           //Error! file not deleted from server but entry from database is gone
        }                    
    }
 } else {
     //error in database operation
 }
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top