Avatar billede pemo123456 Novice
12. maj 2011 - 21:51 Der er 4 kommentarer og
1 løsning

Problemer med at slette DIR og "row" i MySQL samtidig.

Hej

Sidder og forsøger at oprette et script, der både sletter et DIR på serveren og samtidig en "row" i en MySQL tabel. Den anden del kører uden problemer, men den del, der skal slette DIR på serveren, volder desværre lidt problemer.

Den fejl jeg får er, at Remote server ikke kan finde filen - delete_gallery_parse.php?pid=18 - men omklamre jeg DELETE DIR delen med

/* 

*/          , så kan den fint finde siden med pid=18.

Mit script ser således ud:

  $pid = $_GET['pid'];
 
// delete directory ********* virker desværre ikke som ser ud nu.
$sqlCommand = "SELECT * FROM gallery_names_of WHERE gallery_id='$pid'";
$query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());
while ($row = mysqli_fetch_array($query)) {
    $gallerypath = $row["gallerypath"];
}

function delete_directory($gallerypath) {
  if (is_dir($gallerypath))
      $dir_handle = opendir($gallerypath);
  if (!$dir_handle)
      return false;
  while($file = readdir($dir_handle)) {
      if ($file != "." && $file != "..") {
        if (!is_dir("../gal_images/"$gallerypath."/".$file))
            unlink("../gal_images/"$gallerypath."/".$file);
        else
            delete_directory("../gal_images/"$gallerypath.'/'.$file);   
      }
  }
  closedir($dir_handle);
  rmdir($gallerypath);
  return true;
}

// delete entry in MySQL tabel
$query = mysqli_query($myConnection, "DELETE FROM gallery_names_of WHERE gallery_id='$pid'") or die (mysqli_error($myConnection));
Avatar billede jakobdo Ekspert
12. maj 2011 - 22:10 #1
Er det en delete_directory du selv har udviklet eller ?
Avatar billede pemo123456 Novice
13. maj 2011 - 07:42 #2
Hej jakobdo

Smiler! - Som du nok allerede har regnet ud, så er jeg temmelig grøn til det her. Så jeg googler det, jeg har brug for, og læser mig så frem, prøver at rette til for at få det til at virke. Og så trækker jeg selvfølgelig også på alle eksperterne her, når hårene er ved at blive for grå. :-)

Så nej - jeg har ikke selv skrevet det, men selvom det måske ikke er verdens bedste script jeg har fundet, så ligger fejlen ikke (alene) der, da jeg også får samme fejl, hvis jeg blot prøver at forbinde til min tabel 2 gange som her.

$sqlCommand = "SELECT * FROM gallery_names_of WHERE gallery_id='$pid'";
$query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());
while ($row = mysqli_fetch_array($query)) {
    $gallerypath = $row["gallerypath"];
}

// delete entry in MySQL tabel
$query = mysqli_query($myConnection, "DELETE FROM gallery_names_of WHERE gallery_id='$pid'") or die (mysqli_error($myConnection));

Og hvorfor er det lige, at jeg ikke kan det?
Avatar billede jakobdo Ekspert
13. maj 2011 - 08:13 #3
Hvad får du af fejl?
Avatar billede pemo123456 Novice
13. maj 2011 - 17:32 #4
at den ikke kan finde den side, der svarer til ID i min tabel.

Remote server or file not found => delete_gallery_parse.php?pid=18

Hvis jeg fjerner denne del -

$sqlCommand = "SELECT * FROM gallery_names_of WHERE gallery_id='$pid'";
$query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());
while ($row = mysqli_fetch_array($query)) {
    $gallerypath = $row["gallerypath"];
}

- så sletter den "row" i tabellen, således som det også er meningen. Så den ene del af scriptet har ikke problemer med at finde korrekt "row" i tabellen, mens ovenstående giver problemer, hvilket jeg ikke lige kan se det logiske i.
Avatar billede pemo123456 Novice
14. maj 2011 - 23:00 #5
Lukker 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
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