Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Работа с checkbox


Автор: InfMag 28.1.2005, 18:14
Я проверяю цыклом на наличие value из checkbox, но он находит тока один из них.
Код

<?php
if (isset($_POST['del']) && isset($_POST['dels'])) {
$fp = fopen("../data/users.dat","w+");
 for ($i=0; $i<sizeof($file_users_counter); $i++) {
  if ($_POST['dels']==$i) {
   $file_users_counter[$i] = "";
  }
 }
 for ($i=0; $i<sizeof($file_users_counter); $i++) {
  fwrite($fp,$file_users_counter[$i]);
 }
fclose($fp);
}
?>

Тока не нада мне рассказывать как проще написать, а помогите ответить на заданый вопрос.

Автор: Mal Hack 28.1.2005, 18:19
В скрипте будут доступны только выбранные чекбоксы.

Автор: InfMag 28.1.2005, 18:26
Цитата(Mal @ 28.1.2005, 21:19)
В скрипте будут доступны только выбранные чекбоксы.

Всмысле? Не понял... Это как? Яж говорю, что он находит тока один... Я пишу:
Код

<input type=checkbox name="dels" value="0" class=checks>
<input type=checkbox name="dels" value="1" class=checks>
<input type=checkbox name="dels" value="2" class=checks>
<input type=checkbox name="dels" value="3" class=checks>
<input type=checkbox name="dels" value="4" class=checks>
<input type=checkbox name="dels" value="5" class=checks>

Выделяю допустим 2, 4 и 5, а он выполнит действие тока на 2-ой.

Автор: InfMag 28.1.2005, 18:54
Ну что-же никто не решал такую проблему.

Автор: penizillin 28.1.2005, 19:09
если вы всем checkbox'ам даете одно и тоже имя, что же вы ожидаете?
а вообще, mal hack ответил на ваш вопрос.

Автор: InfMag 28.1.2005, 19:24
Интересно, но как мне делать это цыклом? Я имею виду имена... Я ведь не знаю количество их точно, их может быть 10, а может и стольник. smile

Автор: penizillin 28.1.2005, 19:26
name="dels[]"

Автор: InfMag 28.1.2005, 19:28
Чувак! Ты меня спас... Как я сам не вспомнил...
Добавлено @ 19:29
А value оставлять как были или они не нужны?

Автор: penizillin 28.1.2005, 19:31
зависит от того, что вам нужно.

Автор: InfMag 28.1.2005, 19:32
Блин, я вот че-то попробовал, но не работает вобще... Можно пример? smile
Добавлено @ 19:38
Мне нада просто проверить нажат ли один или несколько определенных чекбоксов.

Автор: InfMag 28.1.2005, 20:14
Млять, у меня уже башка болит ждать тут ответа. Раньше так бурно их получал, а щас хоть час сиди.

Автор: Mal Hack 28.1.2005, 20:28
Цитата(InfMag @ 28.1.2005, 19:32)
или несколько определенных чекбоксов.

В таком случае либо даем чекбоксам разныен имена, либо жестко прописываем ch[1] , ch[2], ch[3] и т.д.

InfMag
Без мата, пожалуйста.

Автор: InfMag 28.1.2005, 20:36
smile
Как я могу писать строго? Как мне потом проверять пост имена?

Автор: Irokez 28.1.2005, 20:37
по моему легче назвать чекбоксы по-другому:
Код

<input type=checkbox name="dels_0" class=checks>
<input type=checkbox name="dels_1" class=checks>
<input type=checkbox name="dels_2" class=checks>
<input type=checkbox name="dels_3" class=checks>
<input type=checkbox name="dels_4" class=checks>
<input type=checkbox name="dels_5" class=checks>

Автор: InfMag 28.1.2005, 20:58
Irokez, да не... Это то я усвоил, а вот имена будут нормано проверяться, если писать так?:
Код

if ($_POST['dels_'.$i]) {echo "ok...";}

Автор: Irokez 28.1.2005, 21:01
да будут проверяться нормально, даже лучше так:
Код

if (isset($_POST['dels_'.$i])) {echo "ok...";}

Автор: Mal Hack 28.1.2005, 22:30
Лучше так:
Код

<input type=checkbox name="dels[0]" class=checks>
<input type=checkbox name="dels[1]" class=checks>
<input type=checkbox name="dels[2]" class=checks>
<input type=checkbox name="dels[3]" class=checks>
<input type=checkbox name="dels[4]" class=checks>
<input type=checkbox name="dels[5]" class=checks>

Если что легче править будет.

Автор: Irokez 28.1.2005, 22:45
только если будет ява скрипт, будут траблы ...

Автор: Mal Hack 28.1.2005, 22:50
Цитата(Irokez @ 28.1.2005, 22:45)
только если будет ява скрипт, будут траблы ...

При чем жу тут JavaScript?
ИМХО, но вроде как JavaScript должна их тоже как массив воспринять? Или я ошибаюсь?

Автор: Irokez 28.1.2005, 23:03
попробуй:
Код

<form name=test>
<input type=checkbox name="dels[0]" class=checks value='hello'>
<input type=checkbox name="dels[1]" class=checks>
<input type=checkbox name="dels[2]" class=checks>
<input type=checkbox name="dels[3]" class=checks>
<input type=checkbox name="dels[4]" class=checks>
<input type=checkbox name="dels[5]" class=checks>
</form>
<input type=button onClick="alert(document.test.dels[0].value)">

Автор: Ринат 6.4.2005, 15:20
просто в форме ставишь
<input name="del[]" type="checkbox" value="1">
<input name="del[]" type="checkbox" value="2">
<input name="del[]" type="checkbox" value="3">
то есть нужен массив просто, что неясно пиши

Автор: Хрипа 15.4.2007, 17:09
Код

<input type=checkbox name="dels[]" value="0"  class=checks>
<input type=checkbox name="dels[]" value="1"  class=checks>
<input type=checkbox name="dels[]" value="2"  class=checks>
<input type=checkbox name="dels[]" value="3"  class=checks>
<input type=checkbox name="dels[]" value="4"  class=checks>
<input type=checkbox name="dels[]" value="5" class=checks>
$x = $_POST["dels"];
$x[0] будет содержать ноль если чекбокс отмечен.

Автор: CyClon 15.4.2007, 19:32
Цитата
<input type=checkbox name="dels" value="5" class=checks>


Если чекбокс отмечен, то в скрипту будет доступна переменная dels со значением 5.
Если чекбокс не отмечен, переменная dels существовать не будет.

Многие думаю, что если чекбокс не отмечен, то переменная dels будет иметь значение 0. Это не так, ее вообще не будет.

Добавлено через 1 минуту и 23 секунды
Код
<input type=checkbox name="dels[]" value="0"  class=checks>
<input type=checkbox name="dels[]" value="1"  class=checks>
<input type=checkbox name="dels[]" value="2"  class=checks>
<input type=checkbox name="dels[]" value="3"  class=checks>
<input type=checkbox name="dels[]" value="4"  class=checks>
<input type=checkbox name="dels[]" value="5" class=checks>


В скрипте можно вывести количество отмеченных чекбоксов:

Код
echo count($_POST['dels']);


Добавлено через 4 минуты и 15 секунд
Проверка на отмеченность чекбокса:

Код
<input type="checkbox" name="checkbox1" value="ON">


Код
echo (isset($_POST['checkbox1']) && $_POST['checkbox1'] == 'ON') ? 'Отмечен' : 'Не отмечен';

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)