Работа с чекбоксами и удаление

Modano_88

Guest
Чекбоксы

Ребят.Вообщем вопрос.Я сделал файл-центр.В админ панели хочу сделать массовое удаление файлов.Я возле каждого файла вывожу чекбокс
Код:
printf("<input type=checkbox name=delete[] value=$f_id>");
где $f_id-идентификатор файла.
Как сделать ,когда я выбираю несколько чекбоксов ,файлы удалялились?
И ещё вопрос кто -нить знает как можно сделть счётчик скачиваний файла.?
 

Кром

Новичок
>Как сделать ,когда я выбираю несколько чекбоксов ,файлы удалялились?

Написать скрипт удаления файлов. Где конкретно непонятно? Или ты предлагаешь написать скрипт за тебя?

>И ещё вопрос кто -нить знает как можно сделть счётчик скачиваний файла.?

В поиск по форуму.
 

Modano_88

Guest
Непонятно как определить какие чекбоксы выделены,а какие нет.И если выделены ,то удалить
 

Just4Fun

Guest
>Как сделать ,когда я выбираю несколько чекбоксов ,файлы удалялились?

пишешь на яве скрипт удаления файла.. и вставляешь
<input type=checkbox name=delete[] oncheck="delfile($filepath);" value=$f_id> или там onclick.. уже не помню..

>И ещё вопрос кто -нить знает как можно сделть счётчик скачиваний файла.?

просто делай ссылку типа: http://123.com/file.php?id=1&op=get
в корневом файле создаш файл file.php, а в нем создаш функцию function get($id) со свичем $op.. вроде .. все

function get($id) {
global $db,$prefix;
sql_query("SELECT url FROM ".$prefix."_downloads where id='$id'",$db);
list($url)=sql_fetch_row...
Header ("location: $url")
}
но это лишь для mysql настроена по-моему ($db)..
 

hussar

In code we trust!
Выделеные тобой чеквоксы создают массив.Не выделеные чекбоксы в это массив не входят. Перебираешь этот массив в цикле и для каждого файла делаешь unlink. :)
 

SiMM

Новичок
Автор оригинала: Modano_88
Непонятно как определить какие чекбоксы выделены,а какие нет.И если выделены ,то удалить
Распечатай значение массивов $_POST/$_GET (в зависимости от метода передачи данных скрипту, указанного в форме), к примеру, при помощи [m]print_r[/m] - думаю этого тебе будет достаточно, чтобы понять, откуда брать выбранные чекбоксы (я бы правда предпочёл писать <input type=checkbox name=delete[$f_id]>)
 

Кром

Новичок
Just4Fun
Большая просьба. Не надо больше писать таких глупостей.
 

Modano_88

Guest
>Выделеные тобой чеквоксы создают массив.Не выделеные чекбоксы в это массив не входят. Перебираешь этот массив в цикле и для каждого файла делаешь unlink.

А поподробней?Плиз...
 

SiMM

Новичок
Modano_88, куда подробнее? Если ты о циклах, то [m]foreach[/m], если о том, что и как приходит - да посмотри же ты наконец что тебе пришло, распечатай данные, пришедшие в $_POST'е/$_GET'е. Как - я уже писал.
 

hussar

In code we trust!
<input type=checkbox name=delete[] value=$f_id>

В массив delete[] передадуться только те $f_id которые находятся в отмеченных чекбоксах. Те чекбоксы которые ты не отметил в массив не попадут. Далее у ты берешь этот массив и перебираешь его в цикле (foreach) и в каждом проходе цикла с помощью функции unlink удаляешь файл которому соответствует id. Как пользоваться функциями читай в мане.
 

Modano_88

Guest
Ребят,я по-моему забыл сказать,что мне конкретно из дериктоии файл удалять не надо.Мне его надо из БД удалить(ну там где описани ит.д и т.п.)Сам файл можно ручками удалить через ФТП.Главное чтоб он больше не выводился.
 

hussar

In code we trust!
Без разницы откуда удалять. Вместо unlink используй UPDATE в SQL запросе, и вычищай то поле где хранится путь к файлу, а все остальное я уже выше сказал.
 

Modano_88

Guest
hussar
Ты меня извини конечно.Но этот форум эе для новичков.Вообщем попорядку.Есть файл edit.php
в нём выводится список файлов ,содержащихся в базе.Выводится название файла,а рядом чекбокс.Я выбираю чекбоксы ну например 2-3 и мне нужно нажать ссылку/кнопку чтобы удалить файлы .Объясни поподробней про циклы и т.д.Плизз
 

hussar

In code we trust!
Если я тебе сейчас расскажу как это сделать ты сделаешь и потом либо забудешь либо начнешь так делать постоянно. Тебе нужно почитат мануал по ПХП, он есть русский в формате chm - очень удобная штука!

Общий же смысл того что ты можешь сделать -
у тебя есть страница на которой есть колонка чекбоксов каждому из которых соответствует название файла, под всем этим хозяйством должна быть кнопочка удаления файлов.

Пользователь выбирает нужные для удаления файлы и жмет на кнопку Удалить. В проге должно происходить следующее:
- как только пользователь нажал кнопку программе становится доступен массив $delete, который содержит id техз файлов которые нужно удалить.
- затем ты в цикле начинаешь обрабатывать массив

PHP:
foreach ($delete as $v)
{

... здесь ты удаляешь файл.
}
- удалять ты одновременно можешь файл как физически так и из базы. Для удаления файла физически тебе нужна функция unlink. Для удаления записи о файле из базы используй sql запросы DELETE или UPDATE (это зависит от ттго как у тебя база устроена.
Что еще не понятно?
 

Modano_88

Guest
Спасибо вроде понятно.А вот ссылочку на мануал chm можешь подкинуть ?Щас попоробую ...
>Если я тебе сейчас расскажу как это сделать ты сделаешь и потом либо забудешь либо начнешь так делать постоянно
Мож всё-таки покажешь..Мне зато понятно будет.

-~{}~ 25.04.04 07:59:

Вообщем чё-то не получается.Вот кусок кода
Код:
$result = mysql_query("SELECT * FROM file",$db);
while ($myrow = mysql_fetch_array($result)) {?>
<form method="post" action="del.php"><?php
printf("<input type=checkbox name=delete[] value=$f_id>");
printf("<a href=\"%s?f_id=%s\">%s</a> \n", $PHP_SELF, $myrow["f_id"],$myrow["f_sdesc"],$myrow["cat_id"]);
printf("<a href=\"%s?f_id=%s&delete=yes\">(Удалить)</a><br>", $PHP_SELF, $myrow["f_id"]);
}
}
print("<a href=$PHP_SELF?f_id=$f_id&delete=yes>Удалить</a>");
?>
<input type=hidden name="delete" value="<?php echo $f_id ?>">
<input type="Submit" name="submit" value="Удалить">
</form>
Здесь выводятся файлы и рисуются чекбоксы ,а затем отправляются.
Код:
<?php
include("config.php");
foreach ($delete as $v) 
{ 
$sql = "DELETE FROM file WHERE f_id=$v";

}

?>
Этот файл обрабатывает.
Мож чё-гить не так.
 

Modano_88

Guest
Блин.Не работает:(
Сделал так как ты сказал
Код:
<?php
include("config.php");
foreach ($_POST['delete'] as $v) { 
$sql = 'DELETE FROM file WHERE f_id = ' . intval($v) ;

}

?>
А насчёт тэга формы.Он же между пхп кодом.Или я не дорубаюсь.
 

lucas

Guest
Не удаляет из БД?
А где подключение к ней, выполнение запросов?
А насчёт тэга формы.Он же между пхп кодом.Или я не дорубаюсь.
Последнее.
Смотри -- ты пишешь while (...) { -- начинается тело цикла и ты выводишь код тега form.
Вынеси код тега form из цикла.
 

korvin0

моська
насчёт тэга формы.Он же между пхп кодом.Или я не дорубаюсь.
То, что тег вне php кода еще ничего не значит. Когда ты грузишь страницу, которую в настройках apache указано, что надо обрабатывать как скрипт php (обычно *.php и т.п.), первым делом эту самую страничку парсит php-парсер, т.е. файл *.php - это прежде всего код php, а уже потом все остальное. Вот именно поэтому тег форм в твоем примере входит в цикл и выводится много раз. Строго говоря, все равно как написать:
PHP:
<?php for ($i=1;$<10;$i++) {?>текст<?php }?>
или
PHP:
<?php for ($i=1;$<10;$i++) { echo "текст"; }?>
- php будет воспринимать и обрабатывать эти 2 кода одинаково.
 
Сверху