Avatar billede pjevser Nybegynder
04. august 2009 - 20:29 Der er 3 kommentarer og
1 løsning

Slet billede via mysql

Jeg er nu igen kommet i problemer med mit script.

Jeg har et upload scriptet (hentet herfra) hvor man kan uploade billeder og hvor den så ellers resizer billedet. Jeg har så ændret rimelig meget i det, så man (hvis man er admin) kan se alle billederne der er blevet uploaded, man kan så derfor slettet dem direkte fra siden med en delete knap.

Dog har jeg problemer med at få den til at virke optimalt.

Koden kan ses her:

elseif($_GET[mode] == "delete") { // DELETE
if($realadmin == 1){
$id = 0 + $_GET["id"];
$result = mysql_query("select * from log2 WHERE id = '".$id."' LIMIT 1") or die(mysql_error());
while($row = mysql_fetch_array($result)) {
$filename = $row["filename"];
}
$ddir = "upload2/";
echo"<br><br><a href=\"index.php\">Back to Index</a><br><br>";
$return = @unlink($ddir.$filename);
if ( $return == true ) {
echo "The file has been deleted!<br>$filename";
$del = mysql_query("DELETE FROM log2 WHERE id = '$id'") or die(mysql_error());
if($del == true){
echo"<br>Removed from log";
}else{
echo"<br>Couldn't remove from log";
}
}else{
echo "Could not delete the file!";
}
echo"<br /><br /><a href=\"index.php\">Back to Index</a>";
}else{ // Admin
echo"You are NOT allowed to delete!";
}
}

Når jeg så ellers sletter et billede fra siden, bliver den fint fjernet fra siden og ftp'en, MEN den fjerner ikke thumbnail billedet.

Jeg har så prøvet at fx tilføje:

$ddir = "upload2/";
$ddir2 = "thumbs/";

Og så lave en: $return = @unlink($ddir.$filename) && @unlink($ddir2.$filename);

Så fjerner den gerne både billedet of thumb billedet.

Men gør jeg på den måde der, så gider den fx ikke fjerne txt filer, så får jeg bare fejl. Den fjerner txt filen fra selv ftp'en, men i mysql og på hjemmeside bliver de ikke fjernet.

Jeg har efterhånden prøvet alt (lige udover det som virker).

Så jeg håber der er nogle php eksperter derude som kan hjælpe lidt.

Jeg har ikke ret meget forstand på php, så forklar venligst på så nem metode som muligt, skal være så en nybegynder som mig kan forstå det haha :)
Avatar billede repox Seniormester
04. august 2009 - 23:00 #1
Æv, hvor er det trættende at se folk der misbruger @ - det er en ren Silvan løsning!
Udover det er det her:

$return = @unlink($ddir.$filename) && @unlink($ddir2.$filename);

noget rent sludder i den form det står i.

Skriv noget ordentligt - fjern dine @'er, og lav nogle kontroller istedet:
<?php
    $ddir = "upload2/";
    $ddir2 = "thumbs/";

    if(file_exists($ddir.$filename))
        unlink($ddir.$filename);

    if(file_exists($ddir2.$filename))
        unlink($ddir2.$filename);

?>


Så forsøges sletning kun hvis filerne eksisterer.
Avatar billede pjevser Nybegynder
04. august 2009 - 23:10 #2
Okay, tak.

Men jeg har så ikke ret meget forstand på hvad jeg skal fjerne i det gamle og hvor jeg så skal indsætte det der henne.
Avatar billede pjevser Nybegynder
04. august 2009 - 23:29 #3
Jeg fandt faktisk ud af det og fik det til at virke :)

Jeg siger mange tak for hjælpen repox.

Hvis du lige laver et svar her i tråden, så jeg kan få godkendt dit svar :)
Avatar billede repox Seniormester
04. august 2009 - 23:46 #4
Det fik du her
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

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