Avatar billede mibu Nybegynder
18. november 2008 - 19:51 Der er 12 kommentarer og
1 løsning

Hvorfor sletter den ikke?

Jeg har dette her script, som skal slette billeder fra en valgt mappe. Mappen vælges fint men det valgte billede sletter ikke!

Hvad har gjort forkert?

Script:

<?php

    $mappe = $_REQUEST["mappe"];

echo "Du har valgt at slette billeder fra mappen $mappe.<br><br><br>";
   

$dir = "./../images/billeder/$mappe/"; // Mappe med billeder

if(!isset($_GET['slet'])){
    if (is_dir($dir)) {
      if ($dh = opendir($dir)) {
          while (($file = readdir($dh)) !== false) {
            if($file != "." && $file != ".."){
            echo "
<table width='250'>
<tr>
    <td width='150'>$file</td>
    <td width='50'><img src=./../images/billeder/$mappe/$file width=50 height=50 border=0> &nbsp;</td>
    <td width='50'><a href=\"" . $_SERVER['PHP_SELF'] . "?slet=" . $file . "\">Slet billede</a></td>
   
</tr>
</table>   
<br />\n";       
           
                        }
          }
          closedir($dh);
      }
    }
}else{
    if(file_exists($dir . $_GET['slet'])){
        unlink($dir . $_GET['slet']);
        echo "Filen: " . $_GET['slet'] . " blev slettet. <a href=\"" . $_SERVER['PHP_SELF'] . "\">Gå tilbage</a>";
    }else{
        echo "Filen: " . $_GET['slet'] . " findes ikke. <a href=\"" . $_SERVER['PHP_SELF'] . "\">Gå tilbage</a>";
    }
}

?>
Avatar billede jakobdo Ekspert
18. november 2008 - 19:57 #1
Hvis mappen slette fint nok, men ikke filen, så skal du tjekke om unlink() har korrekt navn på filen og hvad resultatet er af kaldet til filen.
Avatar billede mibu Nybegynder
18. november 2008 - 20:03 #2
Mappen sletter ikke, Men det skal den heller ikke, først vælges der hvilken mappe i mappen "billeder" der skal slettes fra, og så listes filerne op med navn og billede samt en knap "slet billede" og det er her der ikke sker noget, så et eller andet sted får jeg nok ikke den korrekte sti med, kan bare ikke se hvor.
Avatar billede showsource Seniormester
18. november 2008 - 20:08 #3
Prøv:

}else{

if(is_file($dir . $_GET['slet'])){
    if(is_writable($dir . $_GET['slet'])) {

        if(unlink($dir . $_GET['slet'])) {
        echo"Fil slettet";
        }else{
        echo"Fil er ikke slettet!";
        }

    }else{
    echo"Der ikke skriverettigheder til ".$dir . $_GET['slet'];
    }
}else{
echo"Fil findes ikke! ".$dir . $_GET['slet'];
}
Avatar billede mibu Nybegynder
18. november 2008 - 20:20 #4
Den returnere "Parse error: parse error, unexpected $ " i linie 68 men der er kun 68 linier og hvis jeg sætter en tom linie mere på så er det linie 69 der er gal ???
Avatar billede showsource Seniormester
18. november 2008 - 20:37 #5
Måske:

}else{

if(is_file($dir . $_GET['slet'])){
    if(is_writable($dir . $_GET['slet'])) {

        if(unlink($dir . $_GET['slet'])) {
        echo"Fil slettet";
        }else{
        echo"Fil er ikke slettet!";
        }

    }else{
    echo"Der ikke skriverettigheder til ".$dir . $_GET['slet'];
    }
}else{
echo"Fil findes ikke! ".$dir . $_GET['slet'];
}

} // END if(!isset($_GET['slet'])){
Avatar billede showsource Seniormester
18. november 2008 - 20:38 #6
eller, arghh, måske det er bøf med brugen af " og ' ????
Avatar billede showsource Seniormester
18. november 2008 - 20:43 #7
njahh, det virker for mig på windåze:

if(!isset($_GET['slet'])){

//..............

}else{



if(is_file($dir . $_GET['slet'])){
    if(is_writable($dir . $_GET['slet'])) {

        if(unlink($dir . $_GET['slet'])) {
        echo"Fil slettet";
        }else{
        echo"Fil er ikke slettet!";
        }

    }else{
    echo"Der ikke skriverettigheder til ".$dir . $_GET['slet'];
    }
}else{
echo"Fil findes ikke! ".$dir . $_GET['slet'];
}
Avatar billede showsource Seniormester
18. november 2008 - 20:44 #8
For heklvede da::::::::


if(!isset($_GET['slet'])){
echo"OK";
}else{



if(is_file($dir . $_GET['slet'])){
    if(is_writable($dir . $_GET['slet'])) {

        if(unlink($dir . $_GET['slet'])) {
        echo"Fil slettet";
        }else{
        echo"Fil er ikke slettet!";
        }

    }else{
    echo"Der ikke skriverettigheder til ".$dir . $_GET['slet'];
    }
}else{
echo"Fil findes ikke! ".$dir . $_GET['slet'];
}

}
Avatar billede mibu Nybegynder
18. november 2008 - 20:44 #9
Jeg tjekker lidt senere, serveren på mit webhotel, har lige lagt sig på ryggen :-(
Avatar billede mibu Nybegynder
18. november 2008 - 21:22 #10
Nu fik jeg det vist nok til at virke men nu får jeg denne her i hovedet,
Forbidden
You don't have permission to access /images/billeder/personale/ on this server.
Og det kan jeg da ikke forstå, alle aktuelle mapper (og filer) sat til 777
Avatar billede jakobdo Ekspert
18. november 2008 - 21:25 #11
Måske du skal have den fulde sti på..
Avatar billede mibu Nybegynder
18. november 2008 - 21:27 #12
Den ser sådan her ud nu:

<?php

    $mappe = $_REQUEST["mappe"];

echo "Du har valgt at slette billeder fra mappen $mappe.<br><br><br>";
   

$dir = "./../images/billeder/$mappe/"; // Mappe med billeder

if(!isset($_GET['slet'])){
    if (is_dir($dir)) {
      if ($dh = opendir($dir)) {
          while (($file = readdir($dh)) !== false) {
            if($file != "." && $file != ".."){
            echo "
<table width='250'>
<tr>
    <td width='150'>$file</td>
    <td width='50'><img src=./../images/billeder/$mappe/$file width=50 height=50 border=0> &nbsp;</td>
    <td width='50'><a href=./../images/billeder/$mappe/ '?slet='  $file  >Slet billede</a></td>
   
</tr>
</table>   
<br />\n";       
           
                        }
          }
          closedir($dh);
      }
    }
}else{
    if(file_exists($dir . $_GET['slet'])){
        unlink($dir . $_GET['slet']);
        echo "Filen: " . $_GET['slet'] . " blev slettet.";
    }else{
        echo "Filen: " . $_GET['slet'] . " findes ikke.";
    }
}


?>
Avatar billede mibu Nybegynder
17. april 2009 - 23:08 #13
Lukker
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