php删除文件夹并使用一个提交删除按钮从mysql数据库中删除一行

php删除文件夹并使用一个提交删除按钮从mysql数据库中删除一行

问题描述:

    function remove_directory($directory) {
        if (is_dir($directory) === true) {
            $contents = scandir($directory);
            unset($contents[0], $contents[1]);

            foreach($contents as $object) {
                $current_object = $directory.'/'.$object;
                if (filetype($current_object) === 'dir') {
                    remove_directory($current_object);
                    } else {
                    unlink($current_object);    
                    }
                }
                rmdir($directory);
            }
        }

    function delete_row($filecode) {
        $filecode = mysql_real_escape_string($filecode);

        mysql_query("DELETE FROM `files` WHERE `code` = '$filecode'");

        }
          $query = mysql_query("SELECT `id`, `username`, `title`, LEFT(`description`, 90) as `description`, `code`, `type`, `size`, `date` FROM `files` WHERE `username` = '$userfile' ORDER BY id DESC LIMIT $start, $per_page");

        while ($query_row = mysql_fetch_assoc($query)) {
            $fileuser = $query_row['username'];
            $filetitle = $query_row['title'];
            $filecode = $query_row['code'];
            $filedesc = $query_row['description'];
            $filesize = $query_row['size'];
            $filedate = $query_row['date'];
            $filetype = $query_row['type'];

            if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['dir'])) {
            $dir = basename($_POST['dir']);
            if ($dir[0] != '.') 
            remove_directory("files/$dir"); //these function work good and delete only one folder when I click Delete button
            delete_row($filecode); //these function delete me all row in database in first page when I click in second page delete button too what the .... I am so angry i cant believe what is happend it's gone my database  

        }

        if (empty($filedesc) === false) {   
        echo '<div id="linkstyle"><strong><a href="http://localhost/edu/1111111111111/userdownload.php?code='. $filecode . ' ">' , $filetitle , '</a></strong></div> <div id="displayfiledesc">' , $filedesc , '...</div><div id="displayfiledate"> &#149; ' , formatBytes($filesize) , ' &#149; ' , $filedate , ' &#149; ' , $filetype , '</div>';?>

        <form action="" method="post">
            <input type="hidden" name="dir" value="<?= $filecode?>">
            <input type="submit" name="delete" id="bdelete" value="Delete"><br><br>
        </form>

        <?php
        } else { 
        echo '<div id="linkstyle"> <strong><a href="http://localhost/edu/1111111111111/userdownload.php?code='. $filecode . ' ">' , $filetitle , '</a></strong></div> <div id="displayfiledate"> &#149; ' , formatBytes($filesize) , ' &#149; ' , $filedate , ' &#149; ' , $filetype , '</div>';?>

        <form action="" method="post">
            <input type="hidden" name="dir" value="<?= $filecode?>">
            <input type="submit" name="delete" id="bdelete" value="Delete"><br><br>
        </form>

My problem is too big. When I clicked delete button I expected it is delete one folder and one row from my mysql database but nooooo it is delete one folder and all row in mysql database in first page where I can see delete button. Where is the problem I can understood. Can somebody help me?

You're calling delete_row() from within a loop that iterates over the resultset of SELECT ... FROM files WHERE username = '$userfile' restricted only by the LIMIT clause.

Whilst remove_directory() is also called repeatedly from within that loop, it is always called with the same argument: 'files/'.basename($_POST['dir']).