Avatar billede nyst Nybegynder
07. februar 2007 - 09:31 Der er 11 kommentarer og
1 løsning

liste filer i alfabetisk orden

Hej,

jeg har en kode der lister alle mine filer i et dir og samtidig kan jeg så slette disse.

Dog kan jeg ikke få den til at vise listen i alfabetisk orden, er der nogen der kan se hvad der er galt.

Her er min kode:

<?php
$dir = $_SERVER["DOCUMENT_ROOT"] ."/image/";

if(!isset($_GET['slet'])){
    if (is_dir($dir)) {
      if ($dh = opendir($dir)) {
          while (($file = readdir($dh)) !== false) {
                        if($file != "." && $file != ".." && substr($file, -4) != '.php') {
                            echo "<table border=0><tr>";
                            echo('<td width=200><a href="/image/'.htmlentities(urlencode($file)).'">'.htmlentities($file).'</a></td>');
                            echo "<td><a href=\"" . $_SERVER['PHP_SELF'] . "?slet=" . $file . "\">&#8594;&nbsp;delete</a></td>";
                            echo "</tr></table>";
}
          }
          closedir($dh);
      }
    }
}else{
    if(file_exists($dir . $_GET['slet'])){
        unlink($dir . rawurldecode($_GET['slet']));
        echo "Filen: " . $_GET['slet'] . " blev slettet. <a href=\"" . $_SERVER['PHP_SELF'] . "\">Retur</a><br><br>";
    }else{
        echo "Filen: " . $_GET['slet'] . " findes ikke. <a href=\"" . $_SERVER['PHP_SELF'] . "\">Retur</a><br><br>";
    }
}
?>

:-) nyst
Avatar billede jakobdo Ekspert
07. februar 2007 - 10:30 #1
<?php

$dir = $_SERVER['DOCUMENT_ROOT'] . '/image/';

//HER BØR DU NOK TJEKKE OM FILEN ER EN KORREKT TYPE, F.EKS. billede-typer (jpeg,jpg,gif, osv...)
//ELLER KAN MAN SLETTE ALLE FILER...
if(isset($_GET['slet']))
{
    if(file_exists($dir . $_GET['slet']))
    {
        unlink($dir . rawurldecode($_GET['slet']));
        echo "Filen: " . $_GET['slet'] . " blev slettet. <a href=\"" . $_SERVER['PHP_SELF'] . "\">Retur</a><br><br>";
    }
    else
    {
        echo "Filen: " . $_GET['slet'] . " findes ikke. <a href=\"" . $_SERVER['PHP_SELF'] . "\">Retur</a><br><br>";
    }
}
else
{
    $images = glob($dir . "{*.jpg,*.JPG,*.jpeg,*.JPEG,*.gif,*.GIF,*.png,*.PNG}", GLOB_BRACE);
   
    natsort($images);
   
    foreach ($images as $image)
    {
        $file = basename($image);
        echo "<table border=0><tr>";
        echo('<td width=200><a href="/image/'.htmlentities(urlencode($file)).'">'.htmlentities($file).'</a></td>');
        echo "<td><a href=\"" . $_SERVER['PHP_SELF'] . "?slet=" . $file . "\">&#8594;&nbsp;delete</a></td>";
        echo "</tr></table>";
    }
}

?>
Avatar billede nyst Nybegynder
07. februar 2007 - 11:03 #2
Hej jakobdo,

tak for svaret

der er en lille ting og det er den slener mellem store og små bogstaver,

så den lister alle med stort først og så de små bagefter

kan man indsætte noget så den lister ligegyldigt om det er med stor eller lille

feks a,b,C,d og ikke som nu C,a,b,d

:-)
Avatar billede jakobdo Ekspert
07. februar 2007 - 11:10 #3
Måske denne er bedre:

<?php
//http://www.eksperten.dk/spm/760990

//CONFIG
$fileTypes = array('jpg','jpeg','gif','png');
$dir = '/images/';

//DONT CHANGE BELOW THIS LINE
//---------------------------
$realPath = $_SERVER['DOCUMENT_ROOT'] . $dir;

if(isset($_GET['slet']))
{
    $deleteFile = $_GET['slet'];
    $ext = strtolower(end(explode('.',$deleteFile)));
    if(preg_match('/^[a-z0-9_.-]+$/i', $deleteFile) && in_array($ext,$fileTypes))
    {
        if(file_exists($realPath . $_GET['slet']))
        {
            unlink($realPath . rawurldecode($_GET['slet']));
            echo "Filen: " . $_GET['slet'] . " blev slettet. <a href=\"" . $_SERVER['PHP_SELF'] . "\">Retur</a><br><br>";
        }
        else
        {
            echo "Filen: " . $_GET['slet'] . " findes ikke. <a href=\"" . $_SERVER['PHP_SELF'] . "\">Retur</a><br><br>";
        }
    }
    else
    {
        echo "Forkert valg. <a href=\"" . $_SERVER['PHP_SELF'] . "\">Retur</a><br><br>";
    }
}
else
{
    $types = '*.' . implode(',*.',$fileTypes);
    $types = $types . ',' . strtoupper($types);
    $images = glob($realPath . '{'.$types.'}', GLOB_BRACE);
   
    natsort($images);
   
    foreach ($images as $image)
    {
        $file = basename($image);
        echo '<table border=0>';
        echo '<tr>';
        echo '<td width=200><a href="' . $dir . htmlentities(urlencode($file)) . '">' . htmlentities($file) . '</a></td>';
        echo '<td><a href="' . $_SERVER['PHP_SELF'] . '?slet=' . $file . '">&#8594;&nbsp;delete</a></td>';
        echo '</tr>';
        echo '</table>';
    }
}

?>

Og du skal så evt. natcasesort()
Avatar billede nyst Nybegynder
07. februar 2007 - 11:14 #4
den viser intet overhovedet *S*
Avatar billede jakobdo Ekspert
07. februar 2007 - 11:26 #5
Jeg brugte diret: $dir = '/images/'; i min test!
Du skal rette til: $dir = '/image/';
Avatar billede nyst Nybegynder
07. februar 2007 - 11:36 #6
ja den burde jeg selv have fanget *S*

men den virker på samme måde som den anden

altså først store så små bogstaver

det burde da kunne lade sig gøre eller?

:-)
Avatar billede nyst Nybegynder
07. februar 2007 - 11:40 #7
kan man ikke bruge strtolower(); i koden?
Avatar billede nyst Nybegynder
07. februar 2007 - 11:43 #8
det burde denne vel

$ext = strtolower(end(explode('.',$deleteFile)));
Avatar billede jakobdo Ekspert
07. februar 2007 - 11:44 #9
Har du rettet denne linie: natsort($images); til: natcasesort($images);
Avatar billede nyst Nybegynder
07. februar 2007 - 11:48 #10
så var den der, lige det jeg skulle

takker mange gange, det var skønt

smider du et svar og fortsat god dag

:-)
Avatar billede jakobdo Ekspert
07. februar 2007 - 11:52 #11
Svar!
Avatar billede jakobdo Ekspert
07. februar 2007 - 12:13 #12
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