Results 1 to 7 of 7

Thread: Delete image from folder

  1. #1
    Join Date
    Aug 2008
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Delete image from folder

    Hi
    i was wondering if anyone can help me with a small problem im having. I have this script that will let users delete there messages from my database by checking a check box of the message they want to delete, witch is working great. With each message they save to my database, they have to upload a image witch will save the path of the image in the database and save the image to a folder. Is there anyway when they delete a message it will also delete the image in the folder by grabbing the path from the selected message there trying to delete? i have tried using unlink($image); witch will work if i put the path in the script but have no idea how to go about grabbing the path from the check box that has been checked thanks...

    code:
    PHP Code:
    <?php
    include("db.php");
    $user       mysql_real_escape_string($_SESSION['id']);
    $sql "SELECT * FROM messages WHERE  
    user = '
    {$user}'";
    $result=mysql_query($sql$conn)
    or die(
    'Error in query:<br>'$sql .'<br>'.mysql_error($conn).'<br>Time of Error: '.date("l F j, Y, G:i:s T"));
    $count=mysql_num_rows($result);
    ?>
    <table width="938" border="0" cellspacing="1" cellpadding="0">
    <tr>
    <td><form name="form1" method="post" action="">
    <table width="938" border="0" cellpadding="3" cellspacing="1" bgcolor="#000000">
    <tr>
    <td align="left" bgcolor="#3576B4" width="26"><font color="#FFFFFF" size="2"><strong></strong></td>
    <td align="left" bgcolor="#3576B4" width="102"><font color="#FFFFFF" size="2"><strong>Subject:</strong></font></td>
    <td align="left" bgcolor="#3576B4" width="271"><font color="#FFFFFF" size="2"><strong>Message:</strong></font></td>
    </tr>
    <?php
    while($rows=mysql_fetch_array($result)){
    ?>
    <tr>
    <td align="center" bgcolor="#f8f8f8" width="26">
    <input name="checkbox[]" type="checkbox" id="checkbox[]" value="<?php echo htmlentities($rows['id']); ?>" style="float: left"></td>
    <td bgcolor="#f8f8f8" width="102"><font size="2"><?php echo htmlentities($rows['subject']); ?></font></td>
    <td bgcolor="#f8f8f8" width="271"><font size="2"><?php echo htmlentities($rows['message']); ?></font></td>
    </tr>
    <?php
    }
    ?>
    <tr>
    <td colspan="6" align="center" bgcolor="#f8f8f8">
    <input name="delete" type="submit" id="delete" value="Delete" style="float: left"></td>
    </tr>
    <?php
    $checkbox 
    $_POST['checkbox'];
    $delete    mysql_real_escape_string(strip_tags($_POST['delete']));
    $user       mysql_real_escape_string($_SESSION['id']);
    if(
    $delete){
        for(
    $i=0;$i&lt;$count;$i++){
            
    $del_id $checkbox[$i];
            
    $sql "DELETE FROM messages
            WHERE id = '
    {$del_id}'
            And user = '
    {$user}'";
            
    mysql_query($sql$conn)
            or die(
    'Error in query:<br>'$sql .'<br>'.mysql_error($conn).'<br>Time of Error: '.date("l F j, Y, G:i:s T"));
        }
        if(
    $result){
            echo 
    "&lt;meta http-equiv=\"refresh\" content=\"0\"&gt;\n";
        }
    }
    mysql_close();
    ?>
    </table>
    </form>
    </td>
    </tr>
    </table>

  2. #2
    Join Date
    Mar 2007
    Location
    New York, NY
    Posts
    557
    Thanks
    8
    Thanked 66 Times in 66 Posts

    Default

    i have tried using unlink($image); witch will work if i put the path in the script but have no idea how to go about grabbing the path from the check box that has been checked
    Then how do you display the uploaded image to your users?

    With that said, there is no way to delete the image from a folder without knowing where it is first. Therefore, you need its exact path.

    Now, it is theoretically possible to go through each folder and recursively in subfolders to search for the file name if they're all unique, and then delete it. But that is not elegant, takes time and isn't a good solution.
    - Josh

  3. #3
    Join Date
    Aug 2008
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    Quote Originally Posted by JShor View Post
    Then how do you display the uploaded image to your users?

    With that said, there is no way to delete the image from a folder without knowing where it is first. Therefore, you need its exact path.

    Now, it is theoretically possible to go through each folder and recursively in subfolders to search for the file name if they're all unique, and then delete it. But that is not elegant, takes time and isn't a good solution.
    the path to where the image is stored is also saved to the same row as the message the user created. My problem is i have no idea how to retrieve the path of the image when the user checks off what message they want to delete.

  4. #4
    Join Date
    Mar 2007
    Location
    New York, NY
    Posts
    557
    Thanks
    8
    Thanked 66 Times in 66 Posts

    Default

    I see.

    This should work:
    PHP Code:
    if($delete){ 
        for(
    $i=0;$i&lt;$count;$i++){ 
            
    $del_id $checkbox[$i]; 

            
    // Get the image path.
            
    $img_q mysql_query("SELECT `image_path` FROM messages WHERE id id = '{$del_id}' And user = '{$user}'") or die(mysql_error());

            if(
    mysql_num_rows($img_q) > 0) {
                 
    $img mysql_result($img_q0);
            }

            
    unlink($img);

            And 
    user '{$user}'";
            
    $sql = "DELETE FROM messages 
            WHERE id 
    '{$del_id}' 
            
    And user '{$user}'"; 
            mysql_query(
    $sql$conn
            or die('Error in query:<br>'. 
    $sql .'<br>'.mysql_error($conn).'<br>Time of Error: '.date("l F jYG:i:s T")); 
        } 
        if(
    $result){ 
            echo "
    &lt;meta http-equiv=\"refresh\" content=\"0\"&gt;\n"
        } 

    Replacing "image_path" with the field name where the image is stored.
    - Josh

  5. #5
    Join Date
    Aug 2008
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    Thanks a lot for your time! just one thing if its ok im getting this error Parse error: syntax error, unexpected ';', expecting ')' on this line for($i=0;$i&lt;$count;$i++);{ again thank you very much.

  6. #6
    Join Date
    Mar 2007
    Location
    New York, NY
    Posts
    557
    Thanks
    8
    Thanked 66 Times in 66 Posts

    Default

    The semicolon at the end does not belong there, and neither does the &lt; (that's the HTML entity for a less-than sign.

    PHP Code:
    for($i=0;$i>$count;$i++) { 
    - Josh

  7. #7
    Join Date
    Aug 2008
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    Again thanks for all the help.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •