XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Serveradministration und serverseitige Scripte (http://xhtmlforum.de/forumdisplay.php?f=80)
-   -   Dateien aus Ordner auflisten und selektiv löschen? (http://xhtmlforum.de/showthread.php?t=61353)

sepp88 06.06.2010 09:55

Dateien aus Ordner auflisten und selektiv löschen?
 
Hallo Leute,
ich scheitere am Schluss:
ich laufe mit einer Schleife durch einen Ordner und ich liste alle Dateien mit einer Checkbox untereinander. Ich würde jetzt gerne noch beim Klicken des Löschen-Buttons die angewählten (checked) Dateien aus dem Ordner löschen. Allerdings weiß ich nicht wirklich wie. Im Moment versuche ich innerhalb von javascript ein PHP Script laufen zu lassen dass die Dateien mit unlink löscht.

PHP-Code:

<!DOCTYPE html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title> Delete Files </title>
    
    <link rel="stylesheet" type="text/css" href="css/style.css" media="screen, projection" />
    <script type="text/javascript" src="js/jquery-1.4.min.js"></script>
    <script type="text/javascript" src="js/jquery-ui-1.8.1.custom.min.js"></script>
    <script type="text/javascript" src="js/scripts.js"></script>
</head>
<body>
    <?php
    $path 
'thumbs';
    
    
//shuffle files
    
$count 0;
    if (
$handle opendir($path)) {
        
$retval = array();
        while (
false !== ($file readdir($handle))) {
            
$ext pathinfo($filePATHINFO_EXTENSION);
            if (
$file != '.' && $file != '..' && $file != '.DS_Store' && $file != 'Thumbs.db') {
                
$retval[$count] = $file;
                
$count $count 1;
            } else {
                
//no proper file
            
}
        }
        
closedir($handle);
    }
    
    
//loop through shuffled files
    
print "<form id='delete'>";
    foreach (
$retval as $value) {
        
//$ext = pathinfo($value, PATHINFO_EXTENSION); //file extension
        
print "<input type='checkbox' name='$value' value='$value'>$value<br>";
    }
    print 
"<input id='deleteBtn' type='submit' value='Löschen'>";
    print 
"</form>";
    
//unlink('$path/$value');
    
?>
    
    <script type="text/javascript">
    $('#delete').submit(function() {
        //alert('Handler for .submit() called.');
        handleValues(); 
        return false;
    });
    
    /*
    //Delete Files function ???
    */
    function handleValues() {
            $("input:checkbox:checked").each(function(i){
                  //alert($(this).val());
                //document.write("<?php unlink('thumbs/'" + $(this).val() + "); ?>");
              });  
      }
    </script>
    
</body>
</html>

Was mach ich falsch? Danke

Boris 06.06.2010 10:37

Vergib der Checkbox erstmal einen Namen wie z.B. deletefiles[] - dadurch wird ein Array erzeugt, dass all die Felder enthält, die man ausgewählt hat.

In die value trag einfach den Dateinamen ein. Nach dem Submit gehst du dann deltefiles[] mit foreach() durch und löscht die Dateien. ;)

sepp88 06.06.2010 11:13

Danke vielmals.

PHP-Code:

    print "<form id='delete' action='arrayauslesen.php'>";
    foreach (
$retval as $value) {
        
//$ext = pathinfo($value, PATHINFO_EXTENSION); //file extension
        
print "<input type='checkbox' name='deletefiles[]' value='$value'>$value<br>";
    }
    print 
"<input id='deleteBtn' type='submit' value='Löschen'>";
    print 
"</form>";
    
//unlink('$path/$value');
    
    
print count($deletefiles); //0 

und wie submitte ich genau? soll ich da eine neue php datei erstellen in der dann der array ausgelesen wird und die dateien gelöscht werden?
also ich benötige gar kein javascript, oder?

Boris 06.06.2010 11:24

Das kannst du machen wie du willst - in einer neuen Datei oder in der gleichen. Hauptsache die Verarbeitung passiert dann vor dem erneuten auslesen des Verzeichnisses ;)

Und nein, du brauchst kein JS. ;)

sepp88 06.06.2010 11:31

wie mach ichs denn in der selben? :mrgreen:
ich weiß nur wie ich eine externe datei in das action attribut reinschreiben kann.

Boris 06.06.2010 11:51

Willst du mich jetzt veräppeln ...?

Schreib halt die aktuelle Datei in das action hinein ... und frag am Anfang ab, ob das Formular abgeschickt wurde :p

sepp88 06.06.2010 18:24

danke boris,
ich weiß ich bin lästig, aber mir fehlt leider jegliches PHP vorwissen für diese Aufgabe.

PHP-Code:

if ($_POST) {
        echo 
"Soweit funktionierts!!!";
        print 
$deletefiles;
        foreach (
$deletefiles as $value) {
            print 
$value;
            
//unlink($path .'/' . $value);
        
}
    }
    
    print 
"<form method='POST' action='' enctype='multipart/form-data'>";
    foreach (
$retval as $value) {
        
//$ext = pathinfo($value, PATHINFO_EXTENSION); //file extension
        
print "<input type='checkbox' name='deletefiles[]' value='$value'>$value<br>";
    }
    print 
"<input name='deleteBtn' type='submit' value='Löschen'>";
    print 
"</form>";    
    
?> 

irgendwie ist $deletefiles so nicht als array vorhanden? was mach ich noch falsch?

Boris 06.06.2010 19:24

Nach dem Absenden müsstest du es als $_POST['deletefiles'] haben ...

sepp88 06.06.2010 20:23

danke vielmals!

Boris 06.06.2010 20:52

Willst du meine Kontodaten? :mrgreen: ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:37 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023