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"> • ' , formatBytes($filesize) , ' • ' , $filedate , ' • ' , $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"> • ' , formatBytes($filesize) , ' • ' , $filedate , ' • ' , $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>
我的问题太大了。当我点击删除按钮时,我预计它会从我的mysql数据库中删除一个文件夹和一行,但是nooooo它是删除一个文件夹和第一页中mysql数据库中的所有行,我可以看到删除按钮。我能理解的问题在哪里?有人能帮助我吗?
答案 0 :(得分:1)
您正在循环内调用delete_row()
,该循环遍历SELECT ... FROM files WHERE username = '$userfile'
仅受LIMIT
子句限制的结果集。
虽然在该循环中也会重复调用remove_directory()
,但始终使用相同的参数调用'files/'.basename($_POST['dir'])
。