Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: <input type=checkbox>
 
 автор: P@Sol   (30.08.2005 в 15:13)   письмо автору
 
 


checkbox – создает поле ввода для атрибутов типа Boolean ("да"/"нет") или для атрибутов, которые могут одновременно принимать несколько значений. Эти атрибуты представляют собой несколько полей checkbox, которые могут иметь одинаковые имена. Каждое выбранное поле chackbox создает отдельную пару name/value в информации, посылаемой на сервер, даже если результатом будут дублирующиеся имена.


все время использовал уникальные имена...тут сказаны что для разных checkbox имена могут быть одинаковы...это как???

   
 
 автор: codexomega   (30.08.2005 в 21:28)   письмо автору
 
   для: P@Sol   (30.08.2005 в 15:13)
 

Если официально группы могут составляться только из радио-кнопок, то чекбоксы тоже можно под это приспособить. Часто можно встретить формуляры с несколькими такими группами. Одна группа, это например цвет, вторая, марка машины, итд.
У каждого чекбокса есть свои: name,id и value.
Имя может быть одинаковым для всей группы. Тогда как если надо, можно расставить разный id для всех, и разный value.
Проверить функциональность чекбоксов с одинаковым именем, можно здесь:

http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=6855&page=1

Если я в чём либо ошибаюсь, прошу поправить.

   
 
 автор: Crux   (30.08.2005 в 21:36)   письмо автору
 
   для: P@Sol   (30.08.2005 в 15:13)
 


Элемент checkbox (флажок) имеет очень специфическую задачу при разработке современного пользовательского интерфейса: он является переключателем между состояниями "включено" и "выклюсено". Как и флажок на стандартной анкете, галочка в квадратике указывает на то, что данный параметр верен или его следует включить для данного конкретного случая. Если флажок не установлен или квадратик пуст, соответсвующий параметр не верен или этот параметр следует исключить. Если груперруются два или более флажков, они не должны взаимодействовать: то есть каждый из них задаётся независемо друг от друга.

   
 
 автор: Crux   (30.08.2005 в 21:51)   письмо автору
 
   для: Crux   (30.08.2005 в 21:36)
 

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

   
 
 автор: cheops   (01.09.2005 в 19:20)   письмо автору
 
   для: P@Sol   (30.08.2005 в 15:13)
 

Ну да, это распространнённая практика, когда их 100 штук на страницы, на них имён не напасёшся поэтому их оформляют в виде массива
<form action=handler.php method=post> 
  <input type='checkbox' name='type[]' value='1'>Первый флажок<br>   
  <input type='checkbox' name='type[]' value='2'>Второй флажок<br>   
  <input type='checkbox' name='type[]' value='3'>Третий флажок<br>   
  <input type='checkbox' name='type[]' value='4'>Четвёртый флажок<br>   
  <input type='checkbox' name='type[]' value='5'>Пятый флажок<br>   
  <input type='checkbox' name='type[]' value='6'>Шестой флажок<br>   
  <input type='checkbox' name='type[]' value='7'>Седьмой флажок<br>   
  <input type=submit> 
</form>

Пример обработчика, приводится в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=427

   
 
 автор: Crux   (01.09.2005 в 20:22)   письмо автору
 
   для: cheops   (01.09.2005 в 19:20)
 

нет...
когда имя задаётся как массив с этим всё понятно.
а вот когда у чекбоксов просто одинаковые имена, как в примере от codexomega http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=6855&page=1,
что с этим то делать?

   
 
 автор: cheops   (01.09.2005 в 20:58)   письмо автору
 
   для: Crux   (01.09.2005 в 20:22)
 

Чего-то не знай... а больше никаких телодвижений по группировке делать не нужно? Я попробовал вывести дамп $_POST в PHP-обработчике, он выводит только значение последнего отмеченного флажка
Array
(
    [check_all] => check_all
    [list] => 4
    [send] => Удалить
)

Для получения POST-содержимого использовался код
<?php
  print_r
($_POST);
?>

   
 
 автор: Crux   (01.09.2005 в 21:07)   письмо автору
 
   для: cheops   (01.09.2005 в 20:58)
 

вот и я о том же...

Вывод:
Ипользовать одинаковые имена для чекбоксов можно и JavaScript даже что то там с ними может далать, но вот использовать такие чекбосы для передачи инфы используя методы GET или POST уже становится неудобным и даже можно сказать невозможным.

   
 
 автор: codexomega   (02.09.2005 в 03:05)   письмо автору
 
   для: Crux   (01.09.2005 в 21:07)
 

О том , как была использована функция checkAll() в моем приложении:

Скрипт PHP для удаления данных из БД отмечнных чекбоксами:


<?php
// connect to DB
$link makeConnection("xxxx","xxxx","xxxx","xxxx");// host,user,password,database
// delete records
if(isset($_POST['deletelist']))
    
$deletelist $_POST['deletelist'];
if(!empty(
$deletelist)){
    
$deletestr implode(",",$deletelist);
    
mysql_query("DELETE FROM bookmarks WHERE Bookmark_ID IN ($deletestr)");
    
// close connection
    
mysql_close();
    
//refresh page
    
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=bookmarks.php'></HEAD></HTML>"
}
 
?>


Сами поля в форме:


...
<td align="center"  class="<?php print($bgc);?>" width="10%"><input type="checkbox" name="deletelist[<?php echo $list['Bookmark_ID']; ?>]" id="deletelist" value="<?php echo $list['Bookmark_ID']; ?>" /></td>
...


И функция JavaScript:



function checkAll(field){ 
    nb_checked=0; 
    for(n=0;n<field.length;n++){ 
        if(field[n].checked==true) 
            nb_checked++;                 
    } 
    if(nb_checked == field.length){ 
        for (j = 0; j < field.length; j++) 
            field[j].checked = (field[j].checked===true?false:true); 
    } 
    else{ 
        for (j = 0; j < field.length; j++){ 
            field[j].checked = true; 
            document.frm_bookmarks.check_all.checked=true; 
        } 
    } 


function deleteRecord(button){
  // show confirmation message
  var msg = confirm("Are you sure you want to delete selected record(s)?");
  // if users accepts, delete selected records
  if(msg == true){
    button.disabled = true;
    document.forms.frm_bookmarks.submit();
  }
}



Вызов функции:

th width="10%" bgcolor="#000066" ><input type="checkbox" name="check_all" value="check_all" onclick="checkAll(document.frm_bookmarks.deletelist)"/></th>


Заметьте что я вместо одинаковых имён, теперь использую одинаковый ID.
Всё работает просто замечательно.

А что, мне нравится своё творение.
Может его увековечить? :-)

   
 
 автор: Crux   (02.09.2005 в 10:53)   письмо автору
 
   для: codexomega   (02.09.2005 в 03:05)
 

Весь этот пример подтверждает мой вывод.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования