Avatar billede emotion Nybegynder
26. august 2003 - 10:10 Der er 6 kommentarer

hjælp - unlink()

Er der en der kan hjælpe mig, med at få min kode til at slette billederne i mapperne thumb og prod?
Jeg er ved at få grå hår! JEg er ingen ekspert, men ved at lære noget php og har bla kastet mig over det her!

Sådan ser min koden ud:
<?php
/*
Her bliver det sletttet fra databasen, men det skal også slettes fra den mappe
hvor billederne ligger (mapperne thumb og prod)?
*/

include_once ('database.class.php');
$db = new Database('mysql');
$id = $_GET['id'];

$errors = array();

$sql = "select * from billeder where id='$id';";
$fileNames = $db->query($sql, "rows");

// slet thumb billed
foreach ($fileNames as $f)
{
  if(is_file("thumb/".$f[1]))
  {
      unlink("thumb/".$f[1]);
      if(!unlink("thumb/".$f[1]))
      {
          $errors[] = "thumb/".$f[1];
          echo "filen \"thumb/".$f[1]." kunne ikke findes!";
      }
  }

  // slet stort billed
  if(is_file("prod/".$f[2]))
  {
  unlink("prod/".$f[2]);
  if(!unlink("prod/".$f[2]))
      {
          $errors[] = "prod/".$f[2];
            echo "filen \"prod/".$f[2]." er blevet slettet!";
        }
  }
}
if(count($errors)>0)
{
    echo "Scriptet kunne ikke slette følgende billeder: ";
    foreach($errors as $e) echo $e."<br />";
    echo "Årsagen er muligvis at scriptet ikke er testet endnu"; // lav en bedre fejlmeddelelse!! :D
}

/*
*    Efter at de fysiske billeder er blevet slettet, kan du slette rækken i db tabellen
*/

$sql = "DELETE FROM billeder WHERE id='$id'";
//echo $sql;
$bilDelete = $db->query($sql,"delete");

if ($bilDelete)
{
  $sql = "DELETE FROM produkter WHERE billed_id='$id'";
  //echo $sql;
  $delete = $db->query($sql,"delete");

  echo $message = "Data er slettet";
}
else if (!$bilDelete)
{
  echo $message = "Data er IKKE slettet";
}
?>
Avatar billede Slettet bruger
26. august 2003 - 10:18 #1
Hvad er dit problem?
Avatar billede erikjacobsen Ekspert
26. august 2003 - 10:36 #2
Hvorfor siger du unlink 2 gange til samme fil?

    unlink("thumb/".$f[1]);
    if(!unlink("thumb/".$f[1]))
Avatar billede emotion Nybegynder
26. august 2003 - 11:34 #3
Mit problem er at den ikke sletter billederne (filerne) i mapperne thumb og prod. Det bliver slettet fra tabellen, men ligger stadig og optager plads på domænet.

Ang.:
Hvorfor siger du unlink 2 gange til samme fil?

    unlink("thumb/".$f[1]); - her skal den slettes
    if(!unlink("thumb/".$f[1])) //her tjekkes om den er slettet
Avatar billede erikjacobsen Ekspert
26. august 2003 - 11:40 #4
Du skal undersøge om stien til filerne passer. Lav et par testudskrifter,
og fortæl os evt hvordan scripts, kataloger og filer ligger i forhold
til hinanden.
Avatar billede Slettet bruger
26. august 2003 - 11:44 #5
brug fileexists() til at tjekke om en fil eksisterer, i stedet for unlink().

unlink() kan kun slette filer som du har rettighederne til. Derfor kan unlink("minfil.gif") godt fejle selvom filen eksisterer.
Avatar billede emotion Nybegynder
26. august 2003 - 11:49 #6
jeg har testet at den får fat i den rigtige fil ved at echo'e $f[1] og den skal så bare ind i mapperne thumb og prod (her er billedfilerne). Disse mapper ligger det samme sted som scriptet her - og derfor skal jeg ikke ud af nogle mapper og stien skulle passe.
Håber det er det du ville vide og det du mente, erikjacobsen!
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