Avatar billede fajsa Nybegynder
20. april 2005 - 22:39 Der er 10 kommentarer og
1 løsning

Sletning af filer på liste

Jeg har følgende kode, til at lave en liste over filer, der er i en mappe, og laver det som et link så man kan downloade filen.

Det jeg så godt kunne tænke mig, var en måde hvor man kunne slette filen. Men kan sq ikke rigtig se hvordan man kan gøre.

Nogen ideer?

<?
$the_array = Array();
$handle = opendir('.');
while (false !== ($file = readdir($handle))) {
  if ($file != "." && $file != "..") {
  $the_array[] = $file;
  }
}
closedir($handle);
sort ($the_array);
reset ($the_array);
while (list ($key, $val) = each ($the_array)) {
  echo "<a href=\"$val\">$val</a><br>";
}
?>
Avatar billede voirsous Nybegynder
20. april 2005 - 22:51 #1
du kan bruge funktione
unlink()

noget ala
<?php
if(file_exists($file))
    if(unlink($file)==TRUE)
      Print "Fil slettet";
    } Else {
      print " der opstod en fejl";
    }
?>
Avatar billede coderdk Praktikant
21. april 2005 - 00:31 #2
<?

function getFiles()
{
  $the_array = Array();
  $handle = opendir('.');
  while (false !== ($file = readdir($handle))) {
    if ($file != "." && $file != "..") {
      $the_array[] = $file;
    }
  }
  closedir($handle);
  sort ($the_array);
  return $the_array;
}

$the_array = getFiles();

if ( !empty( $_GET['del'] ) && in_array( $_GET['del'], $the_array ) )
{
  unlink( $_GET['del'] );
  $the_array = getFiles();
}

while (list ($key, $val) = each ($the_array)) {
  echo "<a href=\"$val\">$val</a> [<a href=\"{$_SERVER['PHP_SELF']}?del=$val\">slet</a>]<br>";
}
?>
Avatar billede fajsa Nybegynder
24. april 2005 - 16:29 #3
1000 tak for det script, der er dog lige en fejl jeg har fundet.
man kan ikke definere mappen til en undermappe.
Filerne kommer frem på listen, men kan ikke hentes, fordi undermappen ikke kommer med i linket.

Kan det rettes?
Avatar billede coderdk Praktikant
24. april 2005 - 16:31 #4
Kan denne ikke gøre det? Så angiver du bare hvilken mappe du vil undersøge?

<?

function getFiles( $mappe )
{
  $the_array = Array();
  $handle = opendir( $mappe );
  while (false !== ($file = readdir($handle))) {
    if ($file != "." && $file != "..") {
      $the_array[] = $file;
    }
  }
  closedir($handle);
  sort ($the_array);
  return $the_array;
}

$the_array = getFiles( "enmappe" );

if ( !empty( $_GET['del'] ) && in_array( $_GET['del'], $the_array ) )
{
  unlink( $_GET['del'] );
  $the_array = getFiles();
}

while (list ($key, $val) = each ($the_array)) {
  echo "<a href=\"$val\">$val</a> [<a href=\"{$_SERVER['PHP_SELF']}?del=$val\">slet</a>]<br>";
}
?>
Avatar billede fajsa Nybegynder
24. april 2005 - 16:42 #5
Det er vel denne linje jeg skal definere mappen ikke?

$the_array = getFiles( "enmappe" );

jeg har prøvet at erstatte den med både "bruger" og "./bruger" (mappen hedder bruger)
og virker ikke :/
Avatar billede coderdk Praktikant
24. april 2005 - 19:48 #6
Prøv lige at lave funktionen getFiles om til:

function getFiles( $mappe )
{
  $the_array = Array();
  $handle = opendir( $mappe );
  while (false !== ($file = readdir($handle))) {
    if ($file != "." && $file != "..") {
      $the_array[] = $mappe . '/' . $file;
    }
  }
  closedir($handle);
  sort ($the_array);
  return $the_array;
}

og prøv igen
Avatar billede fajsa Nybegynder
24. april 2005 - 20:53 #7
Jo, nu kan man hente den, der dog lige en lille ting.

Når man prøver at slette en fil kommer følgende fejlmeddelser:

Warning: Missing argument 1 for getfiles() in /web/www/frac/users/gowshi/oh/filliste.php on line 11

Warning: readdir(): supplied argument is not a valid Directory resource in /web/www/frac/users/gowshi/oh/filliste.php on line 15

Warning: closedir(): supplied argument is not a valid Directory resource in /web/www/frac/users/gowshi/oh/filliste.php on line 20

dvs følgende linjer:

function getFiles( $mappe )

while (false !== ($file = readdir($handle))) {

closedir($handle);
Avatar billede fajsa Nybegynder
24. april 2005 - 20:54 #8
glemte lige at sige, at filen bliver slettet, er bare lidt irreterende.
Avatar billede fajsa Nybegynder
24. april 2005 - 21:02 #9
btw. hvis jeg nu afsætter nogle flere point, kan du så ikke komme med nogle kommentare til hvordan det enlig virker. Skulle også gerne lære noget af det :)
Avatar billede coderdk Praktikant
24. april 2005 - 21:49 #10
Laver lige det hele lidt om:

<?

  $mappen = 'bruger'; // Mappen du vil vise

  function getFiles( $mappe )
  {
    // Denne funktion henter indholdet af mappen og sorterer det
    $the_array = array();
    $handle = opendir( $mappe );
    while (false !== ( $file = readdir( $handle ) ) )
    {
      if ($file != "." && $file != "..")
      {
        $the_array[] = $file;
      }
    }
    closedir($handle);
    sort ($the_array);
    return $the_array;
  }

  $the_array = getFiles( $mappen ); // Først henter vi mappen

  if ( !empty( $_GET['del'] ) && in_array( $_GET['del'], $the_array ) )
  {
    // Her checker vi om der er en "del=en_id" i adresselinjen
    unlink( $_GET['del'] ); // Sletter
    $the_array = getFiles( $mappen ); // Og henter en ny liste
  }

  while ( list( $key, $val ) = each( $the_array ) )
  {
    // Udskriv listen
    echo "<a href=\"$val\">$val</a> [<a href=\"{$_SERVER['PHP_SELF']}?del=$val\">slet</a>]<br>";
  }

?>
Avatar billede coderdk Praktikant
24. april 2005 - 21:57 #11
Ok fik ikke mine egne rettelser med ;)

<?

  $mappen = 'bruger'; // Mappen du vil vise

  function getFiles( $mappe )
  {
    // Denne funktion henter indholdet af mappen og sorterer det
    $the_array = array();
    $handle = opendir( $mappe );
    while (false !== ( $file = readdir( $handle ) ) )
    {
      if ($file != "." && $file != "..")
      {
        $the_array[] = $mappe . '/' . $file;
      }
    }
    closedir($handle);
    sort ($the_array);
    return $the_array;
  }

  $the_array = getFiles( $mappen ); // Først henter vi mappen

  if ( !empty( $_GET['del'] ) && in_array( $_GET['del'], $the_array ) )
  {
    // Her checker vi om der er en "del=en_id" i adresselinjen
    unlink( $_GET['del'] ); // Sletter
    $the_array = getFiles( $mappen ); // Og henter en ny liste
  }

  while ( list( $key, $val ) = each( $the_array ) )
  {
    // Udskriv listen
    echo "<a href=\"$val\">$val</a> [<a href=\"{$_SERVER['PHP_SELF']}?del=$val\">slet</a>]<br>";
  }

?>
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