Украинское сообщество программистов

Выжить без JavaScript: выделенные чекбоксы

Александр Скакунов
Опубликовано 2.02.2006 в Статьи

Была у меня такая стандартная задача.

Есть хтмл-форма. В ней таблица, в начале каждой строки есть чекбоксик, выделив который, мы помечаем эту строку на удаление. Затем по нажатию кнопки “Удалить выделенные” помеченные строки удаляются. Значение каждого чекбоксика – уникальное, и однозначно соответствует удаляемой строке.

Решение 1: JavaScript.

В обработчик события onclick кнопки “Удалить выделенные” пишем функцию на JavaScript, которая а) обходит все чекбоксы и собирает инфу об их выделенности, б) делает из значений выделенных чекбоксов список (просто строку с их перечислением через запятую), в) сохраняет эту строку в hidden-поле. Получается примерно так:

<input type="submit" name="delete" value="Удалить выделенные" onclick="document.getElementById('selected').value=checkedValues('FormName'');"/>

<input type=”hidden” name=”selected” id=”selected” value=”" />

Здесь checkedValues() – эта та самая рукотворная функция на JavaScript.

На серверной стороне (а там стоит РНР) преобразуем список в массив:

<?
$selected = explode(",", $selected);
?>

Что мне не нравится в этом решении – нестандартность. Скажем, нет у броузера включённого JavaScript или библиотека с функциями недозагрузилась/пропала/неподключена – и всё, попа, функциональность не работает. Поэтому появилось

решение 2: РНР + HTML.

Матчасть: в результате этого кода будет а) создан переменная типа массив, б) следующему её элементу (в нашем случае первому, так как массив пустой) будет присвоено значение 4.

<?
$arr_example = array();
$arr_example[] = 4;
?>

То бишь “[]” означает “возьми следующий элемент”. Данный простой код часто усложняют таким образом (получается то же, только грязнее):

<?
$arr_example = array();
$arr_example[sizeof($arr_example)] = 4;
?>

Так вот вернёмся к теме. Можно смело удалить обработчик onclick – за него всё сделает РНР и хтмл: будем использовать хитрое наименование переменных. Дело в том, что если назвать все хтмл-чекбоксы так:

<input type="checkbox" name="selected<strong>[]</strong>" value="<?=$id?>"/>

то после субмита формы на стороне сервера появится переменная $selected типа “массив”, проиндексированная последовательно (т.е. можно по ней пройтись циклом FOR, а не FOREACH, что есть быстрее). Более того, любимая explode() тут уже не понадобится. Ура!

Теги: ,

1 звезда2 звезды3 звезды4 звезды5 звезд (2 голосов, средний: 1 из 5)
Загрузка ... Загрузка ...
Распределение голосов

Понравилась статья? Подпишись на обновления по RSS/E-mail

Подписаться, не оставляя комментарий

Все комментарии (2) к “Выжить без JavaScript: выделенные чекбоксы” RSS

  1. KievMan

    Трудно в этом мире придумать что-то действительно новое –
    http://www.php.net/manual/ru/faq.html.php#faq.html.arrays

  2. Skakunov Alexander

    Странно, что я раньше не видел на php.net раздела ЧАВО…
    Суперский мануал! Спасибо за ссылку.

Оставить комментарий

Указать свой сайт могут только зарегистрированные пользователи. Регистрация или вход.

Архив

Добавить статью

Станьте автором нашего сайта!

Какие материалы подходят для публикации? — Такие.

Присылайте статьи на editors@developers.org.ua.

Подробнее.

Популярные теги

Все теги

Комментарии

Последние комментарии

интернет магазин бытовая техника магазин Laptoper