Как в PHP получить значение checkbox


Мультичекбокс в PHP. Массив чекбоксов

Чекбокс — элемент формы, который позволяет отмечать галочкой интересующий пункт пользователя. Разберем способы взаимодействия чекбоксов с формой (выгрузка с отмеченными галочками) + массив чекбоксов в PHP при отправке формы.

Немного теории чекбоксов

  • Обычный чекбокс задается так: Подписка
  • Чтобы чекбокс был нажатым, достаточно поставить атрибут checked=»checked» .
  • Чтобы понять, что чекбокс передается при POST отправке формы достаточно сделать так: if (isset($_POST[‘news’])) < echo $_POST['news']; >В этом случае, если галочка отмечена, выведется значение Да.

Теперь представим, что у нас много чекбоксов, для универсальности работы, добавим в них одно имя в виде массива news_add[]:

Теперь имя чекбоксов в массиве и если мы передадим их значения с формы, то нужно как-то узнать, значение какого чекбокса было нажато, для этого используем for цикл:

Таким образом, за счет этого обработчика мы легко можем определить через цикл нажатые галочки. В том же цикле можно сразу произвести нужные действия с выбранными чекбоксами.

Также вы заметили функцию ac_checbox() , она поможет определить при каждой POST отправке нажатый чекбокс (опять же через цикл) и выделить его галочкой:

В функцию передаются 2 параметра: POST массива чекбоксов и значение (value), которое надо проверить на «выбранность» пользователем.

Что возвращает input типов checkbox и radio

Элемент типа checkbox имеет несколько вариантов обработки браузером:

1. браузер отправит значение on (не укажем атрибут value ):

2. браузер отправит значение hello

value=» hello «>
value=» hello » checked>

3. браузер не отправит значение поля:

value=» «>
value=»0 «>

Элемент input типа radio делает тоже самое если он присутствует в единственном экземпляре с определенным именем , например name=» formradio «, а если этот элемент будет в нескольких экземплярах, например:

formradio » value = aaa >
formradio » value = bbb >

то в данном случае радиобутон может возвращать разные значения, в зависимости от того какой элемент будет выбран.

Как в PHP получить значение checkbox

к примеру строка

означает:
checked — значит галочка уже предустановлена (то есть пользователь видит на форме установленной)

если галочку снять то НЕ будет передано &edit_available=1
а если голочка стоит то БУДЕТ передано &edit_available=1

то есть в PHP обработчике формы смотришь
if( $_GET( edit_available ) ) == «1») «галочка стоит» else «галочка НЕ стоит»

5. Alexzzy , 21.11.2007 18:23
dozen
Что именно не получается похоже мы тут не узнаем.

aannddrreeww
С PHP и MySQL не знаком, но вот это для меня выглядит как нонсенс:
INSERT INTO `site`.`razdels`(`ID` ,`name`)VALUES (NULL , ‘$name’)

6. aannddrreeww , 21.11.2007 18:36
Alexzzy
Я у себя в подписи не писл что я мега гуру php, да мя тока начинаю изучать просто непонятна обработка чекбоксов, в книжках об этом не написано в инете вся информация расплывчата. А хамить и унижать может каждый сидя перед монитором, вот интересно в глаза тебе слабо сделать ??

Добавление от 21.11.2007 18:41:

Данные из чекбоска не заносятся в базу данных.

7. Alexzzy , 21.11.2007 18:48
aannddrreeww
Это шутка была. Если мне не хамят, то и я никогда. Да даже когда мне хамаят — стараюсь не поддаваться на провокации. Так что извиняюсь. Вы бы хоть написали, что нет никакой дополнительной информации о проблеме. Это кстати относится к первой части поста. Или вторая часть тоже как хамство и унижение рассматривается?
8. aannddrreeww , 21.11.2007 19:02
Alexzzy
лан проехали)) я здесь не отношение выясняю, а проблемы решаю))
9. Alexzzy , 21.11.2007 19:21
aannddrreeww
Ну проехали так проехали. Пойду дальше. Увиденные мною «непонятки» я тут озвучил.
10. megajohn , 21.11.2007 20:46
if (isset( $_POST[‘checkboxes’][$name] ) )

вот так должно быть


Добавление от 21.11.2007 20:48:

а строчку echo » $name»;

замените на
if( $value != 0 )
echo » $name»;
else
echo » $name»;

Добавление от 21.11.2007 20:56:

почему то всем именам чекбоксов присваиваете $row[‘name’] ( про которые кстати мы не знаем )
а по приему только в один if( $_GET( $name ) ) == «1»)
и не понятно чему был присвоен $name
Запомните что у чекбокса два значения true/false, а откуда это брать в вашей таблице тоже не понятно

Добавление от 21.11.2007 23:16:

mysql_select_db(‘site’,$connector) or die(‘No connection: ‘.mysql_error());
$result =»SELECT `name` FROM `site`.`blogs`»;
$res= mysql_query ($result,$connector );
while($row = mysql_fetch_assoc($res))<
echo »
[‘name’]»;
;

Так тоже не работает. А вот так нормально все:
mysql_select_db(‘site’,$connector) or die(‘No connection: ‘.mysql_error());
$result =»SELECT `name` FROM `site`.`blogs`»;
$res= mysql_query ($result,$connector );
while($row = mysql_fetch_assoc($res))<
echo »
name»;
;

>
?>

Что не так в первом коде??

11. aannddrreeww , 21.11.2007 21:44
12. megajohn , 22.11.2007 01:15
в вашем хреново разбираться — много лишнего

сначала запускать checkbox_init а потом уже и checkbox
не забыть в обоих файлах поменять настройки для своего MySQL

Сделал впопыхах, но работает.
Если голова есть разберетесь

Как получить значение непроверенного флажка в CheckBox элементах, когда форма размещена?

У меня есть форма, как показано ниже:

Когда я проверять все флажки и отправить форму, результат выглядит так:

Тогда я снимите второй флажок и отправить форму, результат выглядит так:

Можно ли сделать результат, как это ниже, когда я снимите второй флажок:

Есть идеи, чтобы сделать это?

Спасибо за вашу помощь.

Первый способ — скрытые поля (недостаток: пользователь может управлять значением поля (но можно манипулировать значение флажка тоже, так что это не проблема, если вы только ожидать, 1 или 0))

Второй способ — назначить значение по умолчанию для не заданных показателей:

Я думаю, что добавление скрытых полей, как это будет работать

Попробуй это. Если флажок не установлен, то скрытое поле с тем же именем будет передано вместо этого.

Я считаю, что это невозможно, чтобы получить массив как то, что вы хотите от HTML форм. Но это некоторые приемы могут быть использованы:

вопрос может быть уже ответил, но я просто хотел, чтобы принять удар на него . на стороне сервера только решение:

Спасибо всем. Благодаря @RoyalBg дать мне решение. Как это :

Это работает отлично .. 🙂

Предположим, что мы используем флажки с нулями или единицами .

Используя скрытый переключатель с нулевым значением только обходным. Другая работа вокруг была бы добавить 0 к значению при получении поста или получить.

$ Chkbx1 = $ _POST [ ‘chckbx1’]; $ Chkbx1 + = 0;

Это имеет значение NULL превращает его в ноль, но если значение равно единице, так как в его проверили, то значение остается неизменным.

Реальная проблема здесь не изобретает работу вокруг. Его понимание, почему это происходит. Более старые версии MySQL принимает нулевые значения и преобразует их в ноль. В более новых версиях, вы должны отключить строгий режим, а затем обходным не требуется.

Передача значений checkbox


Тема в разделе «PHP для новичков», создана пользователем LAlexS, 21 июл 2014 .

Так я же дал реальный пример. Вот, выполните этот скрипт, и поиграйтесь с чекбоксом. Я бы обошёлся и isset-ом, но этот приём подсмотрен в таком серьёзном проекте, как Zend Framework, так что наверное имеет право на существование: http://phpf >

А подумать, почему добавляются лишние нули? А почитать, как работают пустые []? Вот вам пример с массивом:
http://phpf >

Сравните мой код и ваш. Я же не использовал в html пустые квадратные скобки! Я дублировал индекс

Осталось выяснить для чего автору обязательно передавать 0/1 из формы?

Когда вы делаете [], то система автоматом назначает индексы по возрастанию. Т.е. у хайдена получался индекс 1, к примеру, а у следующего за ним чекбокса — уже 2. Неотмеченные чекбоксы не посылаются на сервер браузерами в соответствии со спецификациями html и пр.

Для того, чтобы обновить данные в бд, если чекбоксы были одновременно и отмечены и сняты отметки с изначально отмеченных, соответственно где был 1 изменить на 0 и наоборот

Добавлено спустя 8 минут 31 секунду:
А хидден всегда перекрывает значения чекбокса, если name[индекс] одинаковы?

порядок полей имеет значение

Чтоб isset не делать. Мало ли. Вон в зенде они тоже предпочитают, чтоб им хоть что-то по поводу чекбокса пришло

1. не надо кивать на других. Придёт ли от твоего чекбокса 1/0, on/off или вообще пушкин/толстой не имеет значения. Так удобно авторам движка и только им. Но, раз уж мы говорим про других, тот же ZF и приложения на нём проверяют входящие данные, а не доверяются скрытому полю

2. Вытекающее из первого: серверную валидацию никто не отменял.

3. Где ты в моём примере isset() увидал?

Убрал я эти хиддены и сделал все на isset. Он у меня не работал, пока принудительных индексов не было, вот и работал некорректно. Сейчас все работает отлично!
Еще раз спасибо всем.

а хиддены убрал зачем? Они мешали?

Как в PHP получить значение checkbox

Пример 1. Форма из одного флажка

Давайте создадим простою форму с одним флажком (checkbox).

В PHP скрипте (файл checkbox-form.php) возможно прочитать значение поля посредством массива $_POST. Если $_POST[‘formWheelchair’] присвоено значение YES, то флажок в был выбран. Если флажок не выбран, то переменная $_POST[‘formWheelchair’] не установлена.

Вот пример обработки формы на PHP:

echo «Требуется доступ.»;

echo «Доступ не нужен.»;

Переменной $_POST[‘formWheelchair’] присвоено значение » YES» , так как значение атрибута value тега input равно » YES» .

Пожалуйста отметьте, что все флажки имеют одно имя ( formDoor[] ). Одно имя говорит о том, что все флажки связаны между собой. Квадратные скобки указывают на то, что все значения будут доступны из одного массива. То есть $_POST[‘formDoor’] не вернет строку, как в примере выше, вместо нее возвратится массив, содержащий значения флажков, которые были выбраны пользователем.

Например, если я отмечу все флажки, $_POST[‘formDoor’] вернет массив из <"A","B","C","D","E">. В примере ниже мы получаем и отображаем все значения массива.

echo(«Вы ничего не выбрали.»);

echo(«Вы выбрали $N здание(й): «);

Функция empty пригодится на тот случай, если пользователь ничего не выбрал. Если же массив не пустой, подсчитываем количество выбранных флажков при помощи функции count и выводим все значения при помощи цикла for .

Если выбран флажок ‘Acorn Building’ , то массив будет содержать значение ‘A’ .

Проверяем, выбран ли конкретный флажок

Часто требуется проверить: выбран ли конкретный флажок. Для этого можно использовать следующую функцию:

foreach($_POST[$chkname] as $chkval)

Теперь достаточно просто вызвать функцию IsChecked (chkboxname,значение) . Например:

Форум PHP программистов ► Клиентская сторона ► jQuery


Пейджер выключен!

Сообщений: 827
Пользователь №: 37078
На форуме:
Карма: 13

Сообщений: 9472
Пользователь №: 26630
На форуме:
Карма: 644

Сообщений: 827
Пользователь №: 37078
На форуме:
Карма: 13

Подписаться на тему
Уведомление на e-mail об ответах в тему, во время Вашего отсутствия на форуме.

Подписка на этот форум
Уведомление на e-mail о новых темах на форуме, во время Вашего отсутствия на форуме.

Скачать/Распечатать тему
Скачивание темы в различных форматах или просмотр версии для печати этой темы.

Как в PHP получить значение checkbox

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

Секрет
Теперь, когда вы уже наверняка второпях отправили свой запрос,
я расскажу вам простой секрет, который сэкономит вам уйму ожиданий,
даже если первый ответ по теме последуем сразу же.

Само собой я знаю что ответят мне тут же, и если я посмотрю
на сообщения на форуме, то пойму что в общем то я и не ошибаюсь.
Но еще я точно замечу, что очень мало тем, в которых всего два ответа :
вопрос автора и еще два сообщение вида Ответ + Спасибо

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

Уверен что если бы я им сказал что у меня есть
фиолетовый квадрат, и нужно превратить его в синий треугольник
и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
но почему то кисточка не принимала цвет краски в банке,
то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
предложив её открыть, а не тратить еще стольник на жестянку.

Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
Что есть
Что нужно получить
Как я пытался
Почему или что у меня не получилось.

На последок как оно происходит на форумах

Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно.

Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12

Получить значение Checkbox для PHP редактирования данных

Как я могу получить значение флажка для использования на другой странице PHP как edit.php ? >? Мои результаты могут отличаться от значения CheckBox я выбираю.

Я не уверен, я понимаю ваш вопрос ясно, но от того, что я понял, я надеюсь, что этот пример помогает

Здесь у вас есть $_GET параметр , который вызывается name и его значение является foton .

Вы sebd значения вашего флажка в $_POST параметре называется foton .

Вам не нужно задать строку запроса в ваших $.ajax URL при указании данных (вместо того , чтобы вы хотите перенаправить на страницу , которая будет обрабатывать ваши $_GET параметры части).

checked() WP 1.0.1

Используется в checkbox и radio полях формы. Сделана для удобства, проверяет два значения и если они совпадают выводит атрибут checked=’checked’ для текущего поля формы.

Это одна из 4 функций помощников для форм: checked(), disabled(), selected(), readonly().

Обратите внимание, что перед выводимым атрибутом ставится пробел: » checked=’checked'» .

Возвращает

Выводит на экран атрибут checked=’checked’ , если переданные значения равны между собой или пустую строку. Если третий параметр ($echo) установлен в false, то функция вернет строку.

Использование

Примеры

#1 Демонстрация использования

Смотрите что выводит функция в зависимости от ввода разных параметров.

Топ-пост этого месяца:  Фреймворк Slim. Закрытый раздел CMS
Добавить комментарий