Помощник
|
Checkbox и PHP, проверка и вывод |
Banderas
|
Сообщение
#1
|
||
|
|
||
|
|||
sc2r2bey |
12.2.2011, 2:37;
Ответить: sc2r2bey
Сообщение
#2
|
|
потому что читать книжки надо и изучить материал про массивы
name='checkbox[]' Поблагодарили: (0) |
|
|
Banderas
|
Сообщение
#3
|
|
Спасибо, я перечитал несколько статей по чекбоксу, но нигде не написано зачем [], хотя я скобки видел, думал что у меня неотобразился символ)))
значит сейчас форма [php] $articles = mysql_query("SELECT id, title FROM articles", $db); $myrow = mysql_fetch_array($articles); echo "<form action='hendler_mdf_articles.php' method='post'>"; do { printf ("<input type='checkbox' name='checkbox[]' value='%s' /> %s </br>", $myrow['id'], $myrow['title']); } while ($myrow = mysql_fetch_array($articles)); echo "</br><input type='submit' value='Удалить выбранные статьи' /></form>";[/php] обработчик [php] <?php $articles = mysql_query("SELECT id, title FROM articles", $db); $myrow = mysql_fetch_array($articles); isset($_POST['checkbox']) ? $id=$_POST['checkbox'] : ''; foreach ($id as $value) { $value = intval($value); do { if ($value=$myrow['id']) { mysql_query("DELETE FROM articles WHERE id='$value'", $db); echo "</br>Запись удалена!"; } } while ($myrow = mysql_fetch_array($articles)); } ?>[/php] Но почему удаляет все статьи, а не выбранные? |
|
|
sc2r2bey |
12.2.2011, 3:02;
Ответить: sc2r2bey
Сообщение
#4
|
|
патаму что я тебе сказал что читать?
сделай print_r($_POST['checkbox']) и print_r($id) что там? |
|
|
Banderas
|
Сообщение
#5
|
|
Идентичны!
Array ( [0] => 18 [1] => 15 ) --------------- Array ( [0] => 18 [1] => 15 ) Код [php] isset($_POST['checkbox']) ? $id=$_POST['checkbox'] : ''; print_r ($_POST['checkbox']); echo '</br>---------------</br>'; print_r ($id);[/php] |
|
|
sc2r2bey |
12.2.2011, 3:33;
Ответить: sc2r2bey
Сообщение
#6
|
|
что так не догадался?
а отлаживать так и научился? зачем тебе вложенные циклы? [php] foreach ($id as $value) { $value = intval($value); mysql_query("DELETE FROM articles WHERE id='$value'", $db); echo "</br>Запись удалена!"; }[/php] -------------------- программирую web и для we Поблагодарили: (0) |
|
|
Banderas
|
Сообщение
#7
|
|
Я уже понял о чем ты...
Сделал вложенный цикл, потому что массив $id может быть $id=[3][5][8], а массив $myrow[id]=[3][5][6][8][12][17]; Работаем по циклу.... 3 -> 3 - удалили 5 -> 5 - удалили 8 -> 6 - не удалили Массив $id закончился, выходим из цикла. Если сделать вложенный цикл, то каждый элемент массива $id будет сравниваться с каждым элементом массива $myrow['id'] пс. усе, понял о чем ты, все правильно. Мы вывели id из базы, потом передали их обработчику, который удаляет id, что нам передал чекбокс. Проверка не требуется, id для удаления переданы четко и ясно. Нужно просто их подставить в функцию mysql_query |
|
|
sc2r2bey |
12.2.2011, 11:16;
Ответить: sc2r2bey
Сообщение
#8
|
|
ну и ладушки, рад что ты понял, после формы тв получил готовый, просто надо удалить записи с id равными значениям элементов массива
-------------------- программирую web и для we |
|
|
ZiTosS |
13.2.2011, 13:59;
Ответить: ZiTosS
Сообщение
#9
|
|
Banderas, Жесть ну и кодик
Во-первых, какие вложенные массива типа $id=[3][5][8], покажу на примере: 1) Массив с данными (тот что получается у нас при передаче формы) Array ( 0 => 3, 1 => 5, 2 => 8, ..... N => [id] ); 2) Вложенные массивы, это массив в массиве, например Array ( 0 => Array (...), 1 => 5, 2 => Array (...), ..... N => [id] ); Во-вторых, с форматом checkbox[] можно провести ассоциацию с PHP-кодом: [php]$checkbox = array(); // определяем массив $checkbox[] = 3; // добавляем значение 3 в конец массива $checkbox $checkbox[] = 5; // добавляем значение 5 в конец массива $checkbox $checkbox[] = 8; // добавляем значение 8 в конец массива $checkbox[/php] На выходе получим массив представленный в первом примере выше. В-третьих, зачем такие сложности с перебором присланных ID. Вообщем если мы организуем управление скриптом, явно в эту часть скрипта будет допущен пользователь, который не собирается ломать скрипт, поэтому входящие данные можно не проверять, ну конечно на всякий случай можно и обезопаситься и просто прогнать присланные $checkbox через intval(); Мы удаляем данные, а не перебираем все существующие это не нужно. Нам нужно просто взять и удалить из базы те данные, id которых нам передали. Не нужно даже заботиться о проверке наличия этих данных в таблице, если их нет, ничего страшного не произойдет. [php]<?php $ids = $_POST['checkbox']; // перебираем присланные id и делаем их безопасными foreach($ids as $index => $id) $ids[$index] = intval($id); $ids = implode(",", $ids); // объединяем все id в массиве в строку формата "3,5,8,...,N" $mysql_query("DELETE FROM table WHERE id IN ({$ids})"); // удаляем записи из таблицы table, id которых перечислены в скобках ?>[/php] |
|
|
Tixiy |
2.5.2011, 16:30;
Ответить: Tixiy
Сообщение
#10
|
|
Всем здрасьте. Подскажите, пожалуйста, как сделать такую вещь: Имеется три файла с содержинием песен для каждого диска соответственно. Очень хочется сделать на сайте, чтобы люди выбрав один диск, видели содержимое его, если снимут галочку, то содержимое становится невидимым, чтобы не мешаться. И так на одной страничке совместить три диска, чтоб страничка динамически изменялась в соответствии с выбором пользователя. Возможно это ерундовая задача, но я еще полный ноль в этом деле, только учусь. Помогите, плиз.
|
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое | 5 | CULA | 3415 | 19.12.2023, 18:55 автор: CULA |
|
Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery Разработка сайтов и сервисов под-ключ |
0 | alexey | 1243 | 24.11.2023, 14:46 автор: alexey |
|
Веб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP) | 56 | qpPeW | 44916 | 19.7.2023, 10:03 автор: qpPeW |
|
Есть спецы по php/laravel? | 3 | Mixatraider | 1890 | 26.5.2023, 20:48 автор: Mixatraider |
|
Опытный PHP\Python разработчик в поиске интересных задач | 6 | daikzlex | 3403 | 25.5.2023, 13:55 автор: daikzlex |
Текстовая версия | Сейчас: 23.4.2024, 14:09 |