Avatar billede coolcom Nybegynder
02. juli 2008 - 01:26 Der er 9 kommentarer og
2 løsninger

Problem med unlink()

Hey

Jeg har et problem med funktionen unlink. Min kode ser således ud:

$connector->query('SELECT * FROM cms_gallery_photos WHERE photo_category="'.$category_id.'"');
                   
while ($row = $connector->fetchArray($result))
{
  $picturepath     = $settings['siteDir'].$settings['galleryImageDir'] . $row['photo_filename'];
                       
  unlink($picturepath);
               
  $small_path        = $settings['siteDir'].$settings['galleryImageDir'] . "small/s_" . $row['photo_filename'];
                       
  unlink($small_path);
                       
  $thumb_path        = $settings['siteDir'].$settings['galleryImageDir'] . "thumbs/tb_" . $row['photo_filename'];
   
  unlink($thumb_path);
                       
  $connector->query('DELETE FROM cms_gallery_category WHERE category_id="'.$category_id.'" LIMIT 1');

  $connector->query('DELETE FROM cms_gallery_photos WHERE photo_category="'.$category_id.'"');                                   
}

Rækken i databsen bliver slettet, men ikke selve billedet på serveren. Hvad kan jeg kan gøre det?
Avatar billede arne_v Ekspert
02. juli 2008 - 04:52 #1
Check argument til unlink og check retur værdi fra unlink.
Avatar billede jakobdo Ekspert
02. juli 2008 - 06:53 #2
Arne_v tænker på noget i stil med:

function myDebug($var,$value){
    return '<b>DEBUG</b> ' . $var . ' : ' . $value . '<br />';
}

$connector->query('SELECT * FROM cms_gallery_photos WHERE photo_category="'.$category_id.'"');
while ($row = $connector->fetchArray($result))
{
    $picturepath    = $settings['siteDir'].$settings['galleryImageDir'] . $row['photo_filename'];
    echo myDebug('picturepath',$picturepath);
    if(unlink($picturepath)){
        echo myDebug('picturepath','deleted');
    }else{
        echo myDebug('picturepath','!deleted');
    }
    $small_path        = $settings['siteDir'].$settings['galleryImageDir'] . "small/s_" . $row['photo_filename'];
    echo myDebug('small_path',$small_path);
  if(unlink($small_path)){
      echo myDebug('small_path','deleted');
  }else{
      echo myDebug('small_path','!deleted');
  }
    $thumb_path        = $settings['siteDir'].$settings['galleryImageDir'] . "thumbs/tb_" . $row['photo_filename'];
    echo myDebug('thumb_path',$thumb_path);
    if(unlink($thumb_path);){
        echo myDebug('thumb_path','deleted');
    }else{
        echo myDebug('thumb_path','!deleted');
    }
    $connector->query('DELETE FROM cms_gallery_category WHERE category_id="'.$category_id.'" LIMIT 1');
    $connector->query('DELETE FROM cms_gallery_photos WHERE photo_category="'.$category_id.'"');                                 
}
Avatar billede coolcom Nybegynder
02. juli 2008 - 17:12 #3
Det virker ikke. Den returnere bare DEBUG picturepath !deleted
Avatar billede jakobdo Ekspert
02. juli 2008 - 18:30 #4
Jamen så har du jo et sted at fejlsøge...
Avatar billede coolcom Nybegynder
03. juli 2008 - 00:44 #5
Jeg fandt fejlen..

Det var $settings['siteDir'], der var forkert.

Jakobdo smid et svar for point :P
Avatar billede jakobdo Ekspert
03. juli 2008 - 07:03 #6
Jeg gav blot koden på Arne_v's forklaring, men jeg deler gerne...
Avatar billede coolcom Nybegynder
03. juli 2008 - 18:18 #7
Jeg forstod dog ingenting af det han skrev, først da du gav en forklaring gav det mening.
Avatar billede jakobdo Ekspert
03. juli 2008 - 21:07 #8
Du får et svar af mig, så kan vi afvente arne_v
Avatar billede arne_v Ekspert
03. juli 2008 - 21:53 #9
.
Avatar billede coolcom Nybegynder
03. juli 2008 - 22:20 #10
Tak for hjælpen
Avatar billede jakobdo Ekspert
04. juli 2008 - 08:06 #11
Takker for point.
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

IT-JOB