Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Удаление файлов из БД и сервера (http://forum.oszone.net/showthread.php?t=114634)

darksmoke 17-08-2008 22:11 877357

Удаление файлов из БД и сервера
 
передаем в этот скрипт такие значения Array ( [check] => Array ( [0] => 16 ) [del] => Удалить )
чек - это чекбоксы выбранные .
Мне надо удалить те файлы которые выбраны в чекбоксах с сервера и из БД.
не как не могу это реализовать, помогите!

PHP код:

if(isset($_POST['del']))
{
    if(!isset(
$_POST['check']))
    {
        echo 
"Не выбрана не одна книга!";
    }
    else
    {
        
$del "./books/";

        foreach(
$_POST['check'] as $ID)
        {
        
//удаляем записи
            
$result mysql_query("select from `books` where `ID`='$ID'");
             while (
$row mysql_fetch_array($result)) {
             echo 
$row['Path'];
             }

            
unlink($del.$row['Path']);
            
$sql_books_del mysql_query("delete from `books` where `ID`='$ID'");
            echo 
"Книга удалена.";
        }
    } 


dima1981 17-08-2008 23:09 877391

Не знай, что сказать darksmoke, может подскажут знающие, ребята отзовитесь ооогромная просьба.

vadimiron 18-08-2008 00:13 877426

darksmoke,
А в чём проблема то?? Всё выглядет на первый взгляд ОК..... Опишите проблему конкретней: что не получается...какие ошибки PHP показывает??

darksmoke 18-08-2008 00:58 877438

то что в while должно стоять не echo, а unlink и должно удалять ровно столько записией иф айлов сколько выбрано чекбоксов, а оно через while удалят все записи.
Или если оставить так, то тогда $row['Path'] который после while, не знает он его . Нет такой переменной, пустая она. И как результат с базы удаляет, а файл нет.

timon4ik 18-08-2008 09:22 877570

Цитата:

Цитата darksmoke
$row['Path'] который после while, не знает он его . Нет такой переменной, пустая она. »

Правильно, ведь когда функцией mysql_fetch_array($result) достигается конец массива, в $row записывается false.
Цитата:

Цитата darksmoke
то что в while должно стоять не echo, а unlink »

Ну а если так и написать, вместо echo $row['Path'] написать unlink($del.$row['Path']), то что происходит?

darksmoke 18-08-2008 10:37 877629

PHP код:

foreach($_POST['check'] as $ID)
        {
             
$result mysql_query("select from `books` where `ID`='$ID'");
        
//удаляем записи
             
while ($row mysql_fetch_array($result)) { 
             
unlink($del.$row['Path']);
             
$sql_books_del mysql_query("delete from `books` where `ID`='$ID'");
             echo 
"Книга удалена.";
             }
        } 

пишет: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\allbooks\www\books_delete.php on line 28

строка 28: $result = mysql_query("select from `books` where `ID`='$ID'");

vadimiron 18-08-2008 13:47 877771

Цитата:

Цитата darksmoke
select from `books` where `ID`='$ID »

может
Цитата:

select * from `books` where `ID`='$ID »

darksmoke 18-08-2008 15:01 877819

Точно, спасибо большое!!!

vadimiron 18-08-2008 15:58 877866

darksmoke,
А для оптимизации лучше выберайте только те столбцы, которые нужны, то есть
Код:

select ID, Path from `books` where `ID`='$ID

darksmoke 19-08-2008 00:10 878215

еще раз спасибо!
я новичек.. разбираюсь по книги, за любой совет благодарен!


Время: 16:29.

Время: 16:29.
© OSzone.net 2001-