[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как посчитать количество выбранных чекбоксов
zagiziga
Есть html файл с формой вида
<form action="asd.php" method="post" name="form_1">
<input type="checkbox" name="asd" value="id1" /> А<br>
<input type="checkbox" name="asd" value="id2" /> Б<br>
<input type="checkbox" name="asd" value="id3" /> В <br>
<input type="checkbox" name="asd" value="id4" /> Г <br>
<input type="submit"/>
</form>

Надо посчитать сколько чекбоксов выбрано юзером, и занести это количество в переменную, в файле asd.php. Причем это не должно навредить чему-либо, так как подсчет кол-ва выбранных чекбоксов — не единственная задача, мне так же важно какие именно.
Как это сделать?



Спустя 14 минут, 6 секунд (29.05.2011 - 23:10) Lightt написал(а):
<form action="asd.php" method="POST" >
<input
type="checkbox" name="asd1" value="1" /> А<br>
<input
type="checkbox" name="asd2" value="1" /> Б<br>
<input
type="checkbox" name="asd3" value="1" /> В <br>
<input
type="checkbox" name="asd4" value="1" /> Г <br>
<input
type="submit"/>
</form>



<?php
$col = $_POST['asd1'] + $_POST['asd2']+ $_POST['asd3']+ $_POST['asd4'];
echo $col;
?>


Так, если правильно понял.

Спустя 8 минут, 20 секунд (29.05.2011 - 23:19) zagiziga написал(а):
Lightt, работает, но не рационально получается. Ведь у меня только в примере 4 чекбокса, а в реале будут десятки, а то и сотни, и прописывать каждый. Как бы это автоматизировать?

Спустя 4 минуты (29.05.2011 - 23:23) zagiziga написал(а):
а можно по-подробнее, с исходниками, а то я просто совсем-совсем новичок.

Спустя 44 секунды (29.05.2011 - 23:23) sharki написал(а):
zagiziga
Бери вариант
<form action="asd.php" method="post" name="form_1">
<input
type="checkbox" name="asd[]" value="1" /> А<br>
<input
type="checkbox" name="asd[]" value="1" /> Б<br>
<input
type="checkbox" name="asd[]" value="1" /> В <br>
<input
type="checkbox" name="asd[]" value="1" /> Г <br>
<input
type="submit"/>
</form>


и в обработчике делаешь

$sum = "";
foreach($_POST['asd'] as $value) {
$sum += $value;
}


Вроде что-то должно получится..вообщем идею тебе тут кучу подкинули, додумывай.

Спустя 3 минуты, 10 секунд (29.05.2011 - 23:26) zagiziga написал(а):
sharki, спасибо большое. Работает.
Lightt, вам тоже спасибо.

Спустя 34 минуты, 36 секунд (30.05.2011 - 00:01) killer8080 написал(а):
можно и проще
<form action="asd" method="post" name="form_1">
<input
type="checkbox" name="asd[]" value="id1" /> А<br>
<input
type="checkbox" name="asd[]" value="id2" /> Б<br>
<input
type="checkbox" name="asd[]" value="id3" /> В <br>
<input
type="checkbox" name="asd[]" value="id4" /> Г <br>
<input
type="submit"/>
</form>

$count = !empty($_POST['asd']) && is_array($_POST['asd']) ? count($_POST['asd']) : 0;
echo "count: ".$count."<br />";

Спустя 1 час, 51 минута, 35 секунд (30.05.2011 - 01:53) inpost написал(а):

нет, он его попросту не передаст.

Спустя 6 часов, 27 минут, 42 секунды (30.05.2011 - 08:20) linker написал(а):

Даже если и передастся пустой массив, то count() от пустого массива даст 0, т.е. ничего не выбрано.

Спустя 1 час, 3 минуты, 7 секунд (30.05.2011 - 09:23) linker написал(а):
Откуда в массиве появится пустой элемент? Если ни один из чекбоксов не выделен, то ничего и не будет передаваться, если значение у чекбокса есть пусто и он передался через форму, то это значит, что у чекбокса была установлена галка, а нам важны те чекбоксы, который были выбраны, а какие там значения у них - пофигу.

Спустя 15 минут, 43 секунды (30.05.2011 - 09:39) killer8080 написал(а):

зачем спорить? Просто скопируй код и попробуй, он однозначно будет работать wink.gif

Спустя 10 месяцев, 1 день, 15 часов, 14 минут, 9 секунд (1.04.2012 - 00:53) Mitrofanushka написал(а):
У меня в форме много чекбоксов с одним именем. Как сделать, чтобы отвечающий выбрал, например, строго 5 из этого множества? А если меньше или больше - чтобы данные не отсылались и выдавалось окно ошибки?

Спустя 10 часов, 13 минут, 9 секунд (1.04.2012 - 11:06) killer8080 написал(а):

На onclcik вешается обработчик, который считает количество выделенных чекбоксов, если равно 5, возвращает false.
Цитата (Mitrofanushka @ 1.04.2012 - 00:53)
А если меньше или больше - чтобы данные не отсылались и выдавалось окно ошибки?

А здесь нужно использовать событие onsubmit, только если равно 5 возвращать true.

Спустя 7 дней, 16 часов, 30 секунд (9.04.2012 - 03:07) Corvus-V написал(а):
Здравствуйте! В теле HTML имеется следующий код:

<?
for($i=0; $i<count($obj->str); $i++) {
echo "<tr>";
for($j=0; $j<6; $j++) {
echo "<th>".$obj->str[$i][$j]."</th>";
}
echo '<th><input type=checkbox name=check' .$i. 'value='.$obj->str[$i][1]' /></th>';
echo "</tr>";
}
?>


Цель - получить из $_POST значения $obj->str[$i][1] выбранных чекбоксов. Приведённый код выводит в браузере check0value=1 Сheck2value=52. Экспериментировал с кавычками, но только в таком случае удалось увидеть заветные значения $obj->str[$i][1] - 1 и 52. Как правильно сделать, чтобы выводился порядковый номер чекбокса и соответствующие ему значение?

Спустя 10 часов, 7 минут, 47 секунд (9.04.2012 - 13:15) killer8080 написал(а):
	echo '<th><input type="checkbox" name="check[' .$i. ']" value="'.$obj->str[$i][1].'" /></th>';

Получишь массив $_POST['check'], где индекс массива будет соответствовать $i, а значение $obj->str[$i][1]

Спустя 1 час, 21 минута, 59 секунд (9.04.2012 - 14:37) ADiel написал(а):
<form action="asd.php" method="post" name="form_1">
<input
type="checkbox" name="asd[1]" value="А" /> А<br>
<input
type="checkbox" name="asd[2]" value="Б" /> Б<br>
<input
type="checkbox" name="asd[3]" value="В" /> В <br>
<input
type="checkbox" name="asd[4]" value="Г" /> Г <br>
<input
type="submit"/>
</form>

Представим, что выбран первый и последний чекбокс

$_POST['asd'] = array(
1 => "А",
4 => "Б",
)



Так же проверка на количество выбранных элементов


echo count($_POST['asd']); // В нашем случае = 2


Добавлено:
killer8080, как то сразу не вник в твой вариант с первого раза :) Одно и то же
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.