За последние 24 часа нас посетили 64888 программистов и 1741 робот. Сейчас ищут 907 программистов ...

Кнопка удаления картинок

Тема в разделе "PHP для новичков", создана пользователем PickUp, 26 дек 2013.

  1. PickUp

    PickUp Новичок

    С нами с:
    12 ноя 2013
    Сообщения:
    21
    Симпатии:
    0
    Здравствуйте. Я совсем ещё зелёный в php, по этому не судите строго)
    Подскажите, как сделать кнопку удаления картинок из папки?
    Есть код:

    файл index.php
    Код (Text):
    1. <?php
    2.                     $dir = 'uploads/'; // Папка с изображениями
    3.                     $cols = 3; // Количество столбцов в будущей таблице с картинками
    4.                     $files = scandir($dir); // Берём всё содержимое директории
    5.                     $k = 0; // Вспомогательный счётчик для перехода на новые строки
    6.                         for ($i = 0; $i < count($files); $i++) { // Перебираем все файлы
    7.                         if (($files[$i] != ".") && ($files[$i] != "..")) { // Текущий каталог и родительский пропускаем
    8.                         if ($k % $cols == 0) echo "<tr>"; // Добавляем новую строку
    9.                         echo "<li class=\"image\">"; // Начинаем столбец
    10.                     $path = $dir.$files[$i]; // Получаем путь к картинке
    11.                         echo "<a rel=\"lightbox-mygallery\" href='$path'>"; // Делаем ссылку на картинку
    12.                         echo "<img src='$path' alt='' width='100' />"; // Вывод превью картинки
    13.                         echo "</a>"; // Закрываем ссылку
    14.                         echo "<form action=\"delite.php\" method=\"post\">";
    15.                         echo "<input type=\"image\" src=\"imgbutton.gif\" name=\"delite\" />";
    16.                         echo "</form>";
    17.                         echo "</li>"; // Закрываем столбец
    18.                         /* Закрываем строку, если необходимое количество было выведено, либо данная итерация последняя */
    19.                         if ((($k + 1) % $cols == 0) || (($i + 1) == count($files)))
    20.                         echo "</tr>";
    21.                     $k++; // Увеличиваем вспомогательный счётчик
    22.                     }
    23.                     }
    24. ?>                 
    файл delite.php
    Код (Text):
    1. <?php
    2. if( isset( $_POST[ 'delite' ] ) ) {
    3.  unlink('$path');
    4. }
    5. ?>
    Первый ищет картинки по папке и отображает их в окне. Так же выводит под картинкой форму-кнопку, которая переадресовывает всё файл, который должен удалять текущую картинку. Только чёт не удаляется)
    Подскажите, в чём ошибка?
     
  2. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    говнокод полнейший, ну бог с ним

    Код (PHP):
    1. <?php
    2. if( isset( $_POST[ 'delite' ] ) ) {
    3.  unlink('$path');
    4. }
    5. ?>
    $path = что в ней и откуда?
     
  3. semnt

    semnt Новичок

    С нами с:
    25 дек 2013
    Сообщения:
    93
    Симпатии:
    0
    В коде PHP если строка обрамляется апострофами, то в ней не происходит замена имён $переменных на их значения.
    Код (PHP):
    1. echo '$path'; 
    Выведет
    Код (Text):
    1. $path
    без замены.

    А вот
    Код (PHP):
    1. echo "$path"; 
    уже выведет то что нужно - значение переменной $path.

    Это я к тому что апострофы в unlink не просто бесполезны, а это ошибка. Ну одна из ошибок)
     
  4. PickUp

    PickUp Новичок

    С нами с:
    12 ноя 2013
    Сообщения:
    21
    Симпатии:
    0
    В ней путь к картинке.

    Добавлено спустя 1 минуту 10 секунд:
    Заменил, но всё равно не пашет)
     
  5. semnt

    semnt Новичок

    С нами с:
    25 дек 2013
    Сообщения:
    93
    Симпатии:
    0
    Начните скрипт delite.php с установки вывода ошибок и предупреждений:
    Код (PHP):
    1. error_reporting( E_ALL ); 
    2. ini_set( "display_errors", 1 ); 
    И посмотрите какие ошибки или предупреждения Вам выдаёт этот скрипт при запуске.
    Попытайтесь исправить ошибки самостоятельно или скопируйте вывод о них сюда - Вам подскажут что это и как бороться.
     
  6. PickUp

    PickUp Новичок

    С нами с:
    12 ноя 2013
    Сообщения:
    21
    Симпатии:
    0
    Поставил в начало скрипта:
    Код (Text):
    1. <?php
    2. error_reporting( E_ALL );
    3. ini_set( "display_errors", 1 );
    4. if( isset( $_POST[ 'delite' ] ) ) {
    5.  unlink("$path");
    6. }
    7. ?>
    Не работает и ошибки не показывает, по ходу код кривой)
    но вроде бы всё правильно - анлинк удаляет файл, путь к файлу в переменной.
    Фигня какая-то.
     
  7. semnt

    semnt Новичок

    С нами с:
    25 дек 2013
    Сообщения:
    93
    Симпатии:
    0
    Вы уверенны, что условие выполняется?
    Код (PHP):
    1. isset( $_POST[ 'delite' ] ) 
    Попробуйте уберите это условие, изменится что нибудь?)
     
  8. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    да при чем тут то что пришло в $_POST[ 'delite' ]?????????

    в нем ничего не пришло!!!

    ибо тут
    <input type=\"image\" src=\"imgbutton.gif\" name=\"delite\" />

    нифига нету!!!!!

    unlink("$path"); - это что за бред блеать?
     
  9. PickUp

    PickUp Новичок

    С нами с:
    12 ноя 2013
    Сообщения:
    21
    Симпатии:
    0
    Ну типо в переменную $path вгружается путь к изображению, которое нужно удалить.
    Но оно не удаляетю
    Оставил такую запись.
    Код (Text):
    1. <?php
    2.  unlink("$path");
    3. echo $path;
    4. ?>
    Выдаёт ошибку: Warning: unlink() [function.unlink]: Invalid argument in W:\home\localhost\www\jquery-lightbox\delite.php on line 2
     
  10. semnt

    semnt Новичок

    С нами с:
    25 дек 2013
    Сообщения:
    93
    Симпатии:
    0
    Всё верно. В переменной $path нет значения (точнее самой переменной нету, а Вы к ней обращаетесь). Вам это уже написали выше.
     
  11. PickUp

    PickUp Новичок

    С нами с:
    12 ноя 2013
    Сообщения:
    21
    Симпатии:
    0
    А как её перекинуть из файла index.php в новый?
     
  12. semnt

    semnt Новичок

    С нами с:
    25 дек 2013
    Сообщения:
    93
    Симпатии:
    0
    Ну у Вас нету базовых знаний по формам в PHP. Тут Вам мало чем смогут помочь, наверно.
    Погуглите "Работа с формами в PHP" и разбирайте примеры. Что такое формы, какие они бывают, как они транслируются в $_GET и $_POST в скриптах.
    Я вот что первое нашёл: http://www.eltisbook.ru/php/obrabotka-form.php
    Таких статей в сети миллионы. Ищите и найдёте. Учитесь на примерах.

    Добавлено спустя 3 минуты 55 секунд:
    Да тут по сути и форма то не нужна.
    Просто сформируйте ссылку на файл delite.php типа такой:
    Код (Text):
    1.  
    2. delite.php?path={path}
    вместо {path} подставляйте путь к вашему файлу.
    А в принимающем скрипте ловите элемент массива $_GET['path'] - в нём будет значение для удаления.
     
  13. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    алилуя блеать ))) я написал об этом в первом посте ))))

    Добавлено спустя 4 минуты 41 секунду:
    да да да, так и делай! Тока ссылку сюда кидай на свой проект, кому в 5 утра нечем будет заняться, он будет твою форму самбитить и ржать в голос, пока жена ему по башу не настучит, что он спать мешает