Avatar billede dmy Nybegynder
26. maj 2009 - 08:16 Der er 18 kommentarer

Sletning af billede i tre mapper

Hej
jeg har denne kode, hvor jeg kan slette og rette, men jeg kan ikke rigtig finde ud af hvordan jeg får den til at rette/slette et billede, for billedet skal også slette i deres mapper, billedet (image) ligger i tre mapper: thumb, image, original og det skal jo være sådan at når jeg trykker slet på billedet, at det både sletter det i databasen og i de tre mapper,
hvordan gør jeg det?


min tabel indeholder disse felter:

overskrift
maerke   
aargang
model
farve
km
pris
image (et billede)


Min rediger/slet kode:

<?php

$ID=$_GET['bilerID'];                                
$query="SELECT * FROM biler WHERE bilerID='$ID'";
$result=mysql_query($query);

while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
    {
        $overskrift=$row['overskrift'];
        $maerke=$row['maerke'];
        $aargang=$row['aargang'];
        $model=$row['model'];
        $farve=$row['farve'];
        $km=$row['km'];
        $pris=$row['pris'];
        $image=$row['image'];
    }
   
$ud_overskrift=$_POST['overskrift'];
$ud_maerke=$_POST['maerke'];
$ud_aargang=$_POST['aargang'];
$ud_model=$_POST['model'];
$ud_farve=$_POST['farve'];
$ud_km=$_POST['km'];
$ud_pris=$_POST['pris'];
$ud_billede1=$_POST['billede1'];
$ud_image=$_POST['image'];

if (isset ($_POST['Submit_slet']))
   
        {
$query="DELETE FROM biler WHERE bilerID='$ID'";

mysql_query($query);
    echo '<br /><div id="nyhed_slettet">En salgsannonce er blevet slettet</div><br />';
   
        }

if(isset($_POST['Submit_ret']))
    {
       

$query="UPDATE biler SET overskrift='".secure($ud_overskrift)."', maerke='".secure($ud_maerke)."', aargang='".secure($ud_aargang)."', model='".secure($ud_model)."', farve='".secure($ud_farve)."', km='".secure($ud_km)."', pris='".secure($ud_pris)."'

WHERE bilerID='$ID' ";
       
mysql_query($query);
    echo '<br /><div id="nyhed_rettet">En salgsannonce er blevet opdateret</div><br />';

    }

else
    {
?>
<br />


<form id="form1" name="form1" method="post" enctype="multipart/form-data" action="" onSubmit="return ValidateForm(this)">
    <table width="374" height="258" border="0" cellpadding="" cellspacing="1">
  <tr>
            <td>Overskrift</td>
              <td><input name="overskrift" type="text" id="overskrift" value="<?php echo $overskrift; ?>" /></td>
        </tr>
        <tr>
            <td>Forsidebillede</td>
            <td><img border="0" width="100" height="67" src="../pic/biler/thumb/<?php echo $image; ?>"></td><tr>
        </tr>
        <tr>
            <td>Mærke</td>
            <td><input name="maerke" type="text" id="maerke" value="<?php echo $maerke; ?>" /></td>
        </tr>
        <tr>
            <td>årgang</td>
            <td><input name="aargang" type="text" id="aargang" value="<?php echo $aargang; ?>" /></td>
        </tr>
        <tr>
            <td>model</td>
            <td><input name="model" type="text" id="model" value="<?php echo $model; ?>" /></td>
        </tr>
        <tr>
            <td>farve</td>   
            <td><input name="farve" type="text" id="farve" value="<?php echo $farve; ?>" /></td>
        </tr>
        <tr>
            <td>km</td>
            <td><input name="km" type="text" id="km" value="<?php echo $km; ?>" /></td>
        </tr>
        <tr>
            <td>pris</td>
            <td><input name="pris" type="text" id="pris"value="<?php echo $pris; ?>" /></td>
        </tr>
        <tr>
  <td></td>
  </tr>
  <tr>
        <td></td>
  </tr>
  <tr>   
            </td>
              <td><input name="Submit_ret" type="Submit" id="Submit_ret" value="Gem" /></td><td><input name="Submit_slet" type="submit" id="Submit_slet" value="Slet annoncen" onClick="java script: return confirm('Er du sikker på du vil slette?');" /></td>
        </tr>
    </table>
    </form>
        <?php } ?>
Avatar billede michael_stim Ekspert
26. maj 2009 - 08:52 #1
Du skal bruge unlink (http://dk2.php.net/unlink) før du sletter fra din tabel (if (isset ($_POST['Submit_slet']))). Der må du have billednavnet i tabellen.
Avatar billede dmy Nybegynder
26. maj 2009 - 09:51 #2
Jeg har kodestumper fra noget hvor jeg kun skulle slette billedet fra en mappe, men hvordan gør jeg, når jeg så skal fjerne fra de tre mapper:

thumb, image, original

Kodestump:

if(isset($_POST['Submit_ret']))
    {
    if (isset($_POST['image']))
    {
        unlink('images/thumb/'.$_POST['image']);
        $slet_billede=", image=''";
    }


'
<?php
  if($image!= '')
{
?>

<td>Billede</td>
<td>
  <img src="'images/thumb/<?php echo $image; ?>" />
  <br />Slet
  <input type="checkbox" name="image" value="<?php echo $image;?>" />
</td>

<?php
}
?>
Avatar billede michael_stim Ekspert
26. maj 2009 - 10:53 #3
Så tager du bare tre unlink med stien til de tre mapper ;o) Eller er det mig der misforstår dig?
Avatar billede dmy Nybegynder
26. maj 2009 - 12:46 #4
Hehe ja det forstår jeg godt, men sådan rent syntax mæssigt hvordan skriver man det?
Avatar billede fant0mas Nybegynder
26. maj 2009 - 12:46 #5
Ingen grund til at slette, info er $ -sæt et slettet timestamp i databasen i stedet. Så har du også historik over hvornår tingene er sket.

Og hvis du ikke vil have folk kan se billederne mere, så flyt dem til en anden folder i stedet.
Avatar billede michael_stim Ekspert
26. maj 2009 - 13:07 #6
Jeg ville nu nok foretrække at slette billederne, hvis det ikke ligger på ens egen server hvor man selv styrer kapaciteten. Hvorfor have en masse garbage liggende?
Avatar billede fant0mas Nybegynder
26. maj 2009 - 17:58 #7
Nu ved jeg jo ikke om det er brugere der uploader, men det kunne da være rart at se hvad de uploader. Især hvis nogle skulle klage over noget, så er det da rart at brugeren ikke kan slette sine spor før man har set på sagen.

Plads kan man altid få mere af, det samme gælder ikke dine brugeres data/historik.
Avatar billede michael_stim Ekspert
26. maj 2009 - 19:10 #8
Men plads koster.
Desuden bliver der taget backup. Vil de have noget de har smidt ud, må de jo betale for en roll back.
Avatar billede fant0mas Nybegynder
26. maj 2009 - 22:31 #9
Du er helt forkert på den, pladsen koster intet i forhold til den potentielle værdi der ligger i at have en ordentlig historik over dine brugere. Det du foreslår er at gøre sig selv en kæmpe bjørne tjeneste, skulle ens firma/site blive en succes. Desuden, så snakker vi minimum 5 billeder pr. mb. så jeg har svært ved at se hvordan det nogensinde skulle blive et problem, og til den tid ville en task/cronjob være det rigtige valg til at rydde op i gammel data.

Og snakker vi backup, så har du stadig mistet tidspunktet for handlingen, og muligheden for uden besvær at trække denne information.
Avatar billede michael_stim Ekspert
26. maj 2009 - 22:45 #10
Jeg gider ikke diskutere med dig. Har efterhånden været i branchen i et par år nu. Og ja, der er tilfælde hvor man bare "inaktiverer" diverse dokumenter. Men hvis du gider at gøre dig besværet og gå ind på Dianas hjemmeside, så kan du se hvad det skal bruges til. Tvivler stærkt på at der er ubegrænset med resurser der. Klikkes der på en slet knap, er det nok fordi det skal slettes.

Undskyld for spam dmy.
Avatar billede fant0mas Nybegynder
27. maj 2009 - 00:03 #11
Hvis du arbejder i branchen, så burde du vide det er omvendt, der kan være tilfælde hvor man rent faktisk sletter ting. I den virkelige verden er viden om brugerens/medarbejderes færden og handliger vejen til optimering, -sparet = tjent.

Og ser jeg på dmy's site, så giver det da bare mere grund til at gøre tingene rigtig fra starten af, især når det er ens fremtidige levebrød.
Avatar billede dmy Nybegynder
27. maj 2009 - 09:39 #12
Nåh men jeg ville nu have slettet billederne, netop for ikke at spilde pladsen, synes det er tåbeligt at have billeder liggende som ikke bruges, også når der ligger tre varianter af hvert billede.

Dette er også kun til en bruger som er mig selv der skal kunne slette mine billeder og ikke flere brugere.
Avatar billede dmy Nybegynder
27. maj 2009 - 09:45 #13
Er der umiddelbart en nem kode som sletter.
fx. på min hjemmeside, hvis jeg skal have slettet en reference,og billedet til denne reference som også skal slettes fra de mapper hvor de ligger i.

Dvs. når jeg trykker slet på en gældende referece, hvordan kan jeg så nemt gøre sådan at billedet som findes i tre varianter og hver mappe også bliver slettet, sådan jeg ikke skal ind og gøre det bagefter, fordi så bliver det svært at finde rundt i.
Avatar billede michael_stim Ekspert
27. maj 2009 - 09:52 #14
unlink(...
unlink(...
unlink(...

DELETE FROM ...
Avatar billede dmy Nybegynder
27. maj 2009 - 10:00 #15
okey tak jeg prøver lige ;-)
Avatar billede dmy Nybegynder
27. maj 2009 - 11:05 #16
Jeg har faktisk nogenlunde fået det til at virke, men det gør det bare det forkerte sted.

Den skal også slette i mapperne, når man trykker slet i nederst i koden og ikke kun når man sætter flueben i slet.


<?php

$ID=$_GET['billedID'];                            //    Her tjekkes op på produkter og redigere eller slettes


$query="SELECT * FROM billeder WHERE billedID='$ID'";
$result=mysql_query($query);

while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
    {
        $tekst=$row['tekst'];
        $thumb=$row['thumb'];
   
       
    }
   
$ud_tekst=$_POST['tekst'];
$ud_thumb=$_POST['thumb'];



if (isset ($_POST['Submit_slet']))
    {
        $query="DELETE FROM billeder WHERE billedID='$ID'";
        mysql_query($query);
        echo "Indholdet er blevet slettet<br>";


    }
if(isset($_POST['Submit_ret']))
    {
    if (isset($_POST['thumb']))
    {
        unlink('images/original/'.$_POST['thumb']);
        $slet_billede=", thumb=''";
        unlink('images/image/'.$_POST['thumb']);
        $slet_billede=", thumb=''";
        unlink('images/thumb/'.$_POST['thumb']);
        $slet_billede=", thumb=''";
    }
   
   
   
    $query="UPDATE billeder SET tekst='".$ud_tekst."'".$slet_billede."  WHERE billedID='$ID'";
    mysql_query($query);
    echo "Indholdet er blevet opdateret<br>";

}
else
{
?>
<br />
<form id="form1" name="form1" method="post" enctype="multipart/form-data" action="">
    <table width="400" border="1" cellspacing="1" cellpadding="">
        <tr>
           
        <?php
        if($thumb != '')
        {
        ?>
        <tr>
            <td></td>
            <td><img src="images/thumb/<?php echo $thumb; ?>" /><br />Slet<input type="checkbox" name="thumb" value="<?php echo $thumb; ?>" /></td>
        </tr>
        <?php
        }
        else
        {
        ?>
        <tr>
            <td>Billede</td>
            <td><input type="file" name="upload" /></td>
        </tr>
        <?php
        }
        ?>
      <tr>
      </tr>
              <td>Tekst</td>
            <td><input name="tekst" type="text" row="10" cols="30" id="tekst" value="<?php echo $tekst; ?>" /></td>
      <tr>
      </tr>
            <td>
          </td>
      <tr>
      </tr>
            <td></td><td><input name="Submit_ret" type="Submit" id="Submit_ret" value=" Ret indhold" /><input name="Submit_slet" type="submit" id="Submit_slet" value=" Slet indhold " onClick="java script: return confirm('Er du sikker?');" /></td>
        </tr>
    </table>
    </form><?php } ?>
Avatar billede michael_stim Ekspert
27. maj 2009 - 14:33 #17
if (isset ($_POST['Submit_slet']))

Der skal du vel også have unlink x 3.
Avatar billede dmy Nybegynder
27. maj 2009 - 20:25 #18
Jo det har jeg prøvet at gøre, men den registrerer det ikke når jeg sletter en, har det noget at gøre med at i updaten hvor den bruger variablen $slet_billede.

$query="UPDATE billeder SET tekst='".$ud_tekst."'".$slet_billede." 

men hvordan får jeg den sat på

if (isset ($_POST['Submit_slet']))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester