0

I am trying to delete pictures from the server that are associated with a specific item, that way when the user clicks on the delete button it will delete the item as well as all pictures associated with it, after doing a bunch of searching and experimenting I have this code, I comented out all the code that deletes things in favor of just echoing each picture because I thought if I can get it to echo all the picture names then I would be able to uncomment the delete staments and allow it to delete, rather then having to constantly replace information on the server to test.

<?php
session_start();
include 'conection.php';
error_reporting(E_ALL);
ini_set('display_errors', 1);

if(isset($_SESSION['user_id']))
{
    $stock = $_POST['refStk'];
    $refId = $_POST['refID'];
    $numPics = 0;
    $pics = 0;

    $result = mysql_query("SELECT * FROM inventory WHERE id = '$refId'") or die(mysql_error());
    $row = mysql_fetch_array($result); 

    $picRes = mysql_query("SELECT * FROM uploads WHERE ref_id = '$stock'");

    if(isset($_POST['confirm']))
    {
        $stock = $_POST['refStk'];
        $id = $_POST['refID'];

        /*$query="DELETE FROM inventory WHERE id='".$id."'";
        $query_2="DELETE FROM uploads WHERE ref_id ='".$stock."'";
        if (!mysql_query($query,$con) || !mysql_query($query_2,$con))
        {
            die('Error: ' . mysql_error());
        }
        if(mysql_query($query,$con) && mysql_query($query_2,$con))
        {
            echo 'Vehicle Removed';
        }*/

        while($pics <= $numPics)
        {
            $delFile = 'pics/' . $_POST['picName'];

            echo $delFile;
            $pics++;
            /*if (file_exists($delFile))
            {
                //unlink($delFile);
                echo $delFile;
            }else
            {
                echo 'file does not exist';
            }*/
        }
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>File Delete</title>
    </head>
    <body onUnload="window.addEventListener("unload", invalidateBackCache, true)"><center>
    <table border = '1'>
    <tr>
    <th>Stock Number</th><th>Year</th><th>Make</th><th>Model</th><th>Mileage</th><th>Transmition</th><th>Body Style</th><th>Location</th><th>Asking Price</th>
    </tr>
    <tr>
    <td><?php echo $row['stock']?></td><td><?php echo $row['year']?></td><td><?php echo $row['make']?></td><td><?php echo $row['model']?></td><td><?php echo $row['mileage']?></td><td><?php echo $row['transmition']?></td><td><?php echo $row['body_style']?></td><td><?php echo $row['location']?></td><td><?php echo $row['ask_price']?></td>
    </tr>
    </table><br /><br />
    <form name="delete" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
    <?php
    while($picRow = mysql_fetch_array($picRes))
    {
        $numPics++
        ?>
        <img src="<?php echo "pics/".$picRow['name']; ?>" width="110" height="83" />
        <input type="hidden" name="picName" value="<?php echo $picRow['name']; ?>" />
        <?php
    }
    ?>
    <h1>Are you sure you want to delete all files associated with this vehicle?</h1>
    <input type="hidden" name="refID" value="<?php echo $refId ?>" />
    <input type="hidden" name="refStk" value="<?php echo $stock ?>" />
    <input type="submit" name="confirm" value="Yes" />
    <a href = vehicleSelect.php><input type="button" value="No" /></a>
    </form>
    </center>
    </body>
    </html>
    <?php
}else
{
    echo "<br /><br /><br /><br />";
    echo "<strong><center>"."You Are Not Authorized To view This Page......<a href='admin.php'>Please Login First !!</a>"."</center></strong>";
}
?>

all I get with this is the last picture posted, I have tried having each picture have its own form but then I errors trying to get the names to displayat all as if i am not even getting the information transmitted

3
Contributors
7
Replies
8
Views
4 Years
Discussion Span
Last Post by GraficRegret
0

I am trying to delete pictures from the server that are associated with a specific item, that way when the user clicks on the delete button it will delete the item as well as all pictures associated with it, after doing a bunch of searching and experimenting I have this code, I comented out all the code that deletes things in favor of just echoing each picture because I thought if I can get it to echo all the picture names then I would be able to uncomment the delete staments and allow it to delete, rather then having to constantly replace information on the server to test.

I don't understand what you are trying to do?

The reason why I ask is because you don't have this file extension: "jpg", "jpeg", "gif", "png" for the images. How are you gonna delete that image?

Is this where your folder contain the images:

$delFile = 'pics/' . $_POST['picName'];

Base on what you have, the only way to delete that image is by id which you already establish.

Can you explain a little bit more what you trying to do?

I assume that you can delete a file but you want to delete more than 1 file?

The id is the best solution which you have.

Edited by LastMitch: grammer

0

exactly what you said, however I am trying to delete all the image files associated with the given product.

yes the pics/ is the folder that lods the pictures and the picName is the name of the image including the extention (.jpg, .gif, .png, etc.)

I can delete one picture at a time using similar code in the edit.php, and I am trying to adjust so that I can delete every picture, like when a product is removed from the inventory all together I want the pictures associated to get deleted with it. Accurate inventory you see.

0

I have even tried setting up a for loop, attaching $numPics to the name, however that has failed as well thus far

0

in order to use the loop method you need to fisrt have an array of you image file names. then you loop through them with a foreach to eliminate the unwanted photos. I have used this technique many times

$images=array('1.jpg', '2.jpg', '3.jpg');
foreach ($images as $image){
    unlink($image);
}

Or in your case I think it might be something like this

$picRes = mysql_query("SELECT * FROM uploads WHERE ref_id = '$stock'");
while($entry=mysql_fetch_assoc($picRes)){
    unlink($entry['imageUrlKey']);
    mysql_query("DELETE FROM uploads WHERE id='".$entry['id']."'");
}
0

how does that work with the post method I am using? Every time I try to post the paths to get to the multiple image files I get one posted and the rest are lost. Here is the updated code, which shows me where the hickup is at.

<?php
session_start();
include 'core/conection.php';
error_reporting(E_ALL);
ini_set('display_errors', 1);

if(isset($_SESSION['user_id']))
{
    $stock = $_POST['refStk'];
    $refId = $_POST['refID'];
    $numPics = 0;
    $picsA = array();

    $result = mysql_query("SELECT * FROM inventory WHERE id = '$refId'") or die(mysql_error());
    $row = mysql_fetch_array($result); 

    $picRes = mysql_query("SELECT * FROM uploads WHERE ref_id = '$stock'");

    if(isset($_POST['confirm']))
    {
        $stock = $_POST['refStk'];
        $id = $_POST['refID'];
        $numPics = $_POST['numPics'];

        /*$query="DELETE FROM inventory WHERE id='".$id."'";
        $query_2="DELETE FROM uploads WHERE ref_id ='".$stock."'";
        if (!mysql_query($query,$con) || !mysql_query($query_2,$con))
        {
            die('Error: ' . mysql_error());
        }
        if(mysql_query($query,$con) && mysql_query($query_2,$con))
        {
            echo 'Vehicle Removed <br />';
        }*/
        echo 'Stock Number: ' . $stock;
        echo '<br />';
        echo 'Id: ' . $id;
        echo '<br />';
        echo 'Picture Count: ' . $numPics;
        echo '<br /> <br />';
        print_r($picsA);

        /*for($i=0; $i < $numPics; $i++)
        {
            $delFile = 'pics/' . $_POST['picName'];

            echo $delFile;
            echo '<br />';
            if (file_exists($delFile))
            {
                //unlink($delFile);
                echo $delFile;
            }else
            {
                echo 'file does not exist';
            }
        }*/
        $numPics = 0;
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>File Delete</title>
    </head>
    <body onUnload="window.addEventListener("unload", invalidateBackCache, true)"><center>
    <form name="confirm" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
    <table border = '1'>
    <tr>
    <th>Stock Number</th><th>Year</th><th>Make</th><th>Model</th><th>Mileage</th><th>Transmition</th><th>Body Style</th><th>Location</th><th>Asking Price</th>
    </tr>
    <tr>
    <td><?php echo $row['stock']?></td><td><?php echo $row['year']?></td><td><?php echo $row['make']?></td><td><?php echo $row['model']?></td><td><?php echo $row['mileage']?></td><td><?php echo $row['transmition']?></td><td><?php echo $row['body_style']?></td><td><?php echo $row['location']?></td><td><?php echo $row['ask_price']?></td>
    </tr>
    </table><br /><br />
    <table><tr>
    <?php
    $picCount = 0;

    while($picRow = mysql_fetch_array($picRes))
    {
        if($picCount >= 5)
        {
            echo '</tr><tr>';
            $picCount = 1;
            array_push($picsA, $picRow['name']);
            ?><td>
            <img src="<?php echo "pics/".$picRow['name']; ?>" width="110" height="83" />
            <input type="hidden" name="picName" value="<?php echo $picRow['name']; ?>" />
            </td><?php
            print_r($picsA);
            $numPics++;
        }else
        {
            $picCount++;
            array_push($picsA, $picRow['name']);
            ?><td>
            <img src="<?php echo "pics/".$picRow['name']; ?>" width="110" height="83" />
            <input type="hidden" name="picName" value="<?php echo $picRow['name']; ?>" />
            </td><?php
            print_r($picsA);
            $numPics++;
        }
    }
    ?></tr></table>
    <h1>Are you sure you want to delete all files associated with this vehicle?</h1>
    <input type="hidden" name="numPics" value="<?php echo $numPics?>" />
    <input type="hidden" name="refID" value="<?php echo $refId ?>" />
    <input type="hidden" name="refStk" value="<?php echo $stock ?>" /><?php print_r($picsA); ?>
    <input type="submit" name="confirm" value="Yes" />
    <a href = vehicleSelect.php><input type="button" value="No" /></a>
    </form>
    </center>
    </body>
    </html>
    <?php
}else
{
    echo "<br /><br /><br /><br />";
    echo "<strong><center>"."You Are Not Authorized To view This Page......<a href='admin.php'>Please Login First !!</a>"."</center></strong>";
}
?>

Edited by GraficRegret

0

what gets me about this is from what I learned going through my classes, an array holds the values it is given untill they are cleared out either manually or by the program being turned off or restarted, I am not sure why the page is apparently reloading and therefore emptying the array of the values I had in it.

0

ok I got it working, just had to work with the array I had created inside the form and have it pass each name properly, thanks.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.