доброго времени суток. короче.... такая трабла, в коде должно быть несколько значений чекбосов...(в моей ситуации это категории)...так вот, названия категорий берутся через while...собственно вот код: Код (Text): $result = mysql_query("SELECT id,namecat FROM cat ORDER BY id ASC"); $myrow = mysql_fetch_array($result); do { printf("<input type='checkbox' name='%d' value='0' />%s<br>",$myrow['id'],$myrow['namecat']); } while($myrow = mysql_fetch_array($result)); в общем видно что имя чекбокса это ID категории, так вот, как мне возможно ложить в переменную выбранный чекбокс? имеется ввиду что мне нужно знать айди выбранной категории
printf("<input type='checkbox' name='%d' value='$myrow['id']' />%s<br>",$myrow['id'],$myrow['namecat']); тогда обработчику можно передавать переменную с именем, указанном в name, которая будет иметь значение value. Или я че-то не так понял...?
Он передает значение только одной категории а нужно несколько, категорий более 200.. или как брать значение из value?
нужно: 1) атрибут name сделать как category[] 2) атрибут value приравнять id ктегории Код (Text): $result = mysql_query("SELECT id,namecat FROM cat ORDER BY id ASC"); $myrow = mysql_fetch_array($result); do { printf("<input type='checkbox' name='category[]' value='%d' />%s<br>",$myrow['id'],$myrow['namecat']); }while($myrow = mysql_fetch_array($result)); Тогда при обработке формы в массиве $_POST['category'] будут значения выбранных категорий. Если же ничего не выбрано, тогда $_POST['category'] не будет установлен
При таком названии Код (Text): name='category[]' там массив. И работать с ним надо как с массивом, а не как со строкой.
Ну... А что не понятно-то? И что нужно..? Просто после того, как чекбокс(-ы) отмечен(-ы), значения приходят в переменную $_POST['categories'] в виде нумерованного массива данных. Например, если выбрано 3 чекбокса, то у тебя будет массив из трёх элементов, начинающихся с нуля. Обратиться к ним можно, указав в квадратных скобках индекс элемента (в данном случае - это его номер, хотя индексы могут быть и произвольными числами и строками текста): Код (PHP): <?php // Первый элемент echo('Первый: ' . $_POST['category'][0]); // Второй элемент echo(', Второй: ' . $_POST['category'][1]); // ... ?> Узнать кол-во элементов в массиве можно с помощью функции count(): Код (PHP): <?php // Определям кол-во элементов $cnt = count($_POST['category']); ?> Объединить массив в строку, используя указанный разделитель можно с помощью функции implode(): Код (PHP): <?php // Объединяем в строку через запятую: $str = implode(',', $_POST['category']); ?>
Отлично! Большое Вам спасибо, всё работает на ура! Дай Бог Вам хорошую работу в области веба. Код (Text): printf("<input type='checkbox' name='category[]' value='%d' />%s<br>",$myrow['id'],$myrow['namecat']); Код (Text): $massiv = $_POST['category'][0]; $cnt = count($_POST['category']); $str = implode(',', $_POST['category']); echo "$massiv";
" " лучше так пишите в html, а в php ' ' когда нет табуляций... И если есть табуляция " ", дело в том, что php язык не строго типизированный объекты без вынесения их за комментарий могут даже писаться в " ", а также тип нужно приводить самим, php не знает за ранее какое будет выражения или тип данных. Вообще использование кавычек и скобочек желательно не писать всеми подрят =) Почему, не знаю но говорили даже, что еще понижает скорость... Конечно не значительный не будет заметно, если это конечно не постоянно, вот взять все не значения и увидеть значения =))) Идеально конечно, тоже доработать не реально... Это можно делать бесконечно, подделывать постоянно для удобства =)))