Php delete folder and delete one row from mysql database with one button delete post

    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 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 the delete button, I expected to delete one folder and one row from my mysql database, but nooooo will delete one folder and the entire row in the mysql database on the first page where I can see the delete button. Where is the problem I can understand. Can anyone help me?

+3


source to share


1 answer


You are calling delete_row()

from within a loop that iterates over the result set is SELECT ... FROM files WHERE username = '$userfile'

limited to only a statement LIMIT

.



While remove_directory()

also called multiple times inside this loop, it is always called with the same argument: 'files/'.basename($_POST['dir'])

.

+1


source







All Articles