Avatar billede kren1000 Nybegynder
11. april 2006 - 14:27 Der er 5 kommentarer og
1 løsning

Sletning af billeder/filer fra server

Hej eksperter

Jeg har en simpel upload af billeder med lidt tekst til en db.

Jeg har en adminside der viser thumbnails, samt teksten, og der kan så klikkes på disse thumbnails, så selve billedet vises i stort vindue alene.

Man skal også kunne slette billederne og thumbs fra serveren igen.

Som det er nu bliver kun oplysningerne i databasen slettet, men ikke selve billederne der ligger og optager plads.

Kan nogen hjælpe med hvordan jeg for gjort så der også reelt bliver slettet?
(Koden er med noget hjælp fra eksperten, derfor udkommenteret.)

BILLEDUPLOADOK.php
<?
DB connect
   
//Her skal filen flyttes fra
$src = $_FILES['fil']['tmp_name'];

//Hvilken type fil arbejder vi med?
$ext = strtolower(end(explode(".", $_FILES['fil']['name'])));

//laver et par variabler
$navn = $navn;
$kommentar = $kommentar;
$telefon = $telefon;
$adresse = $adresse;
$tid = time();

//Her giver vi billedet et andet navn, så der ikke kommer to ens navne…
$nytNavn = "uploadet-" . $tid . "." . $ext;

//Her er vores destination for det store billede
$dst = "upload/" . $nytNavn;

//her uploades det store billede:
copy($src, $dst);

//billed-funktioner:
$image = $dst;

//hvis billedet eksisterer
if(file_exists($image)) {

//billedet eksisterer
$foto = 1;

//find størrelsen
$imgsize = getimagesize($image);

//hvis bredden er mere end 200px
if($imgsize[0] > 100) {

//sæt det nye billedes bredde til 200,
//og regn højden ud så propertionerne passer
$width = 100;
$height = $imgsize[1] / ($imgsize[0] / 100);

//lav et nyt, blankt billede
$dst_img=imagecreatetruecolor($width,$height);

//åbn kildebilledet
$src_img=ImageCreateFromJpeg("$image");

//kopiér og resize kildebilledet over i det nye billede
ImageCopyResampled($dst_img,$src_img,0,0,0,0,$width,$height,ImageSX($src_img),ImageSY($src_img));

//lav output til mappen /tmp/
ImageJpeg($dst_img, "upload/thumbnail/" . $nytNavn);
       
//hvis bredden ikke er over 200px
} else {

//åbn kildebilledet og lav output
$src_img=ImageCreateFromJpeg("$image");
ImageJpeg($src_img, $dst);
};

//sæt url'en til billedet
$imgurl = "upload/thumbnail/" . $nytNavn;
} else {

//foto findes ikke
$foto = 0;
};


//Her ligges oplysningerne ind databasen – huske at connecte til den!
$query    = "INSERT INTO billeder (billede, adresse, navn, telefon, kommentar, thumbnail) VALUES ('$dst','$adresse','$navn','$telefon','$kommentar','$imgurl')";
mysql_query($query);

    header("Location: forespoerg.php");
    exit();
   
?>
DELETE FRA ADMIN SIDEN
<?php
    DB Connect….
   
    if($_POST[submit]=="slet")
    {   
        $sql2 ="delete from billeder where id=$_POST[id]";
        mysql_query($sql2,$mydb);
       
    }
    $sql1 ="select * from billeder";
    $query = mysql_query($sql1,$mydb);
   
    while($raekke=mysql_fetch_array($query))
    {
    ?>
            osv….
Avatar billede hmortensen Nybegynder
11. april 2006 - 14:29 #1
Du kan slette med unlink() (http://se.php.net/unlink).
Avatar billede kren1000 Nybegynder
11. april 2006 - 14:39 #2
Ok, tjekker det lige ud.
Avatar billede kren1000 Nybegynder
11. april 2006 - 15:23 #3
Har lige lavet en tester og nu sletter den hovedbilledet, men ikke resten, kan du guide mig lidt? Er ingen haj til php...

Den skulle gerne slette resten i db og så thumnailet.

<?php
    DB Conn...
   
    if($_POST[submit]=="slet")
    {   
        mysql_query("DELETE FROM billeder WHERE id='".$_POST['id']."'",$db);
        unlink($_SERVER["DOCUMENT_ROOT"] ."/". $_POST["billede"]);
        }
               
   
    $sql1 ="select * from billeder";
    $query = mysql_query($sql1,$mydb);
   
    while($raekke=mysql_fetch_array($query))
    {
    ?>
   
    <table height='50px' width='650px' border='0' align='center'>
          <tr>
          <td width='250px'><?php echo $raekke[4]; ?><br><?php echo $raekke[5]; ?><br><?php echo $raekke[3]; ?></td>
          <td width='250px' height="25px">&nbsp;</td>
        </tr>
        <tr>
        <td width='250px'><?php echo $raekke[1]; ?></td>
        <td width='150px'><a href="../<?php echo $raekke[2] ?>" target="new"><img src="../<?php echo $raekke[6] ?>" border="0"> </a></td>
        <form action="index.php" method="POST">
        <input type="hidden" name="id" value="<?php echo $raekke[0]; ?>">
        <input type="hidden" name="billede" value="<?php echo $raekke[2]; ?>">
        <td width='50px'><INPUT type='submit' name='submit' value='slet'></td>
        </form><hr>
        </tr>
        </table>   
   
    <?php } ?>
Avatar billede hmortensen Nybegynder
11. april 2006 - 16:04 #4
Du kan blot kalde unlink() to gange:
unlink($_SERVER["DOCUMENT_ROOT"] ."/". $_POST["billede"]);
unlink($_SERVER["DOCUMENT_ROOT"] ."/thumbnail/". $_POST["billede"]);
Avatar billede kren1000 Nybegynder
11. april 2006 - 17:13 #5
Det funker 100%, takker og bukker, skriv et svar så for du points:)
Avatar billede hmortensen Nybegynder
11. april 2006 - 17:49 #6
Det var så lidt :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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