At slette en fil fra serveren

Tags:    php mysql

Er der nogen som kan hjælpe mig med lidt kode til at slette en fil fra serveren?

Jeg har en database med en tabel "billeder". Heri er gemt oplysninger om billeder som er uploadet til en bestemt mappe på min server.

Jeg vil så gerne på en side hvor jeg udskriver alle billeder med et bestemt id lave et link "slet billede" som så skal slette det pågældende billede fra serveren samt fra databasen.

Henter billederne fra databasen:
Fold kodeboks ind/udPHP kode 






Indlæg senest redigeret d. 21.07.2013 17:54 af Bruger #17644
36 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato

Stien passer vel godt nok, når mappen "Banners" ligger der hvor min php side ligger?

nej fjern "/".
Fold kodeboks ind/udKode 




Jeg bliver fint sendt videre til forsideP.php - men den sletter ikke banneret

din header vil altid blive udført, uanset om dine if sætninger bliver udført




hvis jeg som bruger kan se hest 4,5,6
og jeg kan se linket til slet hedder http://....delete.php?hid=4
hvad så hvis jeg skriver http://....delete.php?hid=7 i url'en ??
jeg ejer ikke hest 7 men jeg kan slette den, derfor check ejerskab i billed tabellen, inden du sletter den

men prøv at se om du kan slette et billed du ikke ejer med den metode jeg her beskriver



filen slettes med unlink og i selve databasen en simpel sql DELETE

kald af delete, simpelt link, dette skal bare ligge i din while løkke
(utested)
Fold kodeboks ind/udKode 



(utested)
delete.php
Fold kodeboks ind/udKode 



http://php.net/manual/en/function.mysql-num-rows.php
http://www.php.net/manual/en/mysqli-stmt.num-rows.php



Øhh....jeg tror jeg kan se det meste af ideén i det, men jeg forstår ikke rigtigt hvordan jeg får slettet filen fra serveren?
Billederne vil jo have forskellige filnavne, så kan ikke bare bede den om at slette eks. "hest.jpg". Den skal slette det billede som er i IMGurl i databasen.





Du kan gemme dine billeder med et id, som kan trækkes ud fra din db.
Ud fra det id, finder du billedet som fik idét i upload.

Så den er gemt med det billede navn i db, som så findes i db, og derfor også kan findes, og slettes igen. Kan du så følge det? :)



nej ikke helt :$

Altså jeg kan uploade et billede som har et eller andet tilfældigt navn.
Ved uploadet gemmer jeg billedets url i min database. Dette gør jeg i et felt jeg har kaldt "IMGurl"

Når jeg så vil slette billedet igen, så skal jeg jo flette filen på serveren som har det navn som svarer til det der står i "IMGurl".

Og det kan jeg ikke lige se at jeg får med i dit eksempel?

Jeg har fundet en anden tråd om det samme som jeg sidder og kigger lidt på, men har ikke endnu fået det til at fungere...
http://www.eksperten.dk/spm/735555

Fold kodeboks ind/udPHP kode 






Indlæg senest redigeret d. 21.07.2013 22:05 af Bruger #17644

Når jeg så vil slette billedet igen, så skal jeg jo flette filen på serveren som har det navn som svarer til det der står i "IMGurl".

erstat filename med IMGurl i sql

erstat
$sql = "SELECT user_id, filename FROM billeder WHERE id = $id";
...
$filename = $row['filename'];

med
$sql = "SELECT * FROM billeder WHERE hestid = $id";
...
$filename = $row['IMGurl'];


og så kan jeg se der mangler et $ tegn i filename=""; og selvføgelig også en requred_once("mysqlconnection.php");
$conn er en mysqli connection og defineret i mysqlconnection.php

her er lidt kommentare på det vigtige
Fold kodeboks ind/udKode 





Jeg forstår simpelthen ikke hvordan denne kan være rigtig???:
Fold kodeboks ind/udPHP kode 


Billederne hedder jo noget forskelligt. ikke hest.jpg

Jeg har ikke noget felt med userid, så det skal jeg ikke lige bruge her.

Jeg forsøger lige nu at lave en delete.php fil, men det virker ikke endnu:
Fold kodeboks ind/udPHP kode 





Jeg forstår simpelthen ikke hvordan denne kan være rigtig???:
Fold kodeboks ind/udKode 

Billederne hedder jo noget forskelligt. ikke hest.jpg

filens rigtige navn henter du jo ind i $filename via $filename = $row['IMGurl'];


Jeg har ikke noget felt med userid, så det skal jeg ikke lige bruge her.


userid, kalder du vist nok noget med EjerID eller sådan noget ligende, det er id på den person der ejer hesten


Fold kodeboks ind/udKode 


og så bør man vel teste om filen findes før man forsøger at slette den som du også bruger i dit forsøg
Fold kodeboks ind/udKode 


ellers lav et sql dump af billed tabellen (max 10 linjer ), så vi har nogle test data, og korrekte felt navne




Jo men jeg har ikke EjerID med i min billed-tabel.
Jeg har lavet lidt om i databasen så jeg har en tabel til alle billederne hvor jeg så bare har et felt som gemmer hestID så jeg på den måde kan hente billeder ud til de forskellige heste.
Så der er ikke (pt.) andre felter end: id, IMGurl, hestid, fotograf, ride, front

Den del du ellers laver med at tjekke om brugerid er ejer af hesten vil jeg ellers meget gerne have med på en eller anden måde på flere af mine sider.
Jeg forsøger at lave den somn et lille stykke kode som jeg kan lægge ind, hvor den videresener til en anden side hvis brugerID ikke er det samme som EjerID.





t