|
|
|
|
<form name='forma' metod='post'>
$qf=mysql_query("SELECT * FROM db_color WHERE color_fabr='$fabr'");
$fq=mysql_fetch_array($qf);
$ii=0;
do
{
if(!empty($fq['color_name']))
{
$ii++;
<input type='checkbox' name='color[$ii]' value='".$fq['color_id']."'>".$fq['color_name']."<br/><br/></p>";
}
}while($fq=mysql_fetch_array($qf));
<input type='submit' value='submit'>
</form>
|
Как можно обработать эту форму с произвольным количеством элементов в массиве?
(... если пользователь выберет не одно поле а несколько) | |
|
|
|
|
|
|
|
для: dimonich2004
(26.03.2012 в 17:02)
| | Зачем color[$ii]?
Что значит обработать? | |
|
|
|
|
|
|
|
для: task
(26.03.2012 в 17:12)
| | как получать из POST массив?
ii = Это сколько значенй (в масив идут ID полей из базы) | |
|
|
|
|
|
|
|
для: dimonich2004
(26.03.2012 в 17:15)
| | Все что возвращается формой, это уже и есть массив.
Эти "сколько значений" совсем не нужны, ибо это не id, а просто значение установленного счетчика. | |
|
|
|
|
|
|
|
для: task
(26.03.2012 в 17:23)
| | вот я и не пойму как выцарпать
if(isset($_POST['color[]']))
{
$color=trim(htmlspecialchars(mysql_escape_string($_POST['color[]'])));
if($color==""){unset($color);unset($_POST['color[]']);}
}
printf ($color[]);
|
так не пашет (((
Fatal error: Cannot use [] for reading in K:\home\localhost\www\db\Tools\Blocks\DialogAddPosition.php on line 230
Подскажите плз.... | |
|
|
|
|
|
|
|
для: dimonich2004
(26.03.2012 в 17:31)
| | $color у вас массив, используйте foreach | |
|
|
|
|
|
|
|
для: dimonich2004
(26.03.2012 в 17:31)
| | Вы сперва разберитесь с тем, что такое у вас id, так как под этим зачастую подразумевается уникальность, чего у вас совсем не наблюдается. Если вы думаете, что сможете привязать записи в базе посредством устновленного счетчика, то глубоко заблуждаетесь - записи в базе лежат внавал, это уже ни какой гарантии в вашем случае.
Для того, чтобы обработать каждый элемент массива, служит функция array_map().
htmlspecialchars - выбросить.
Логичнее сперва trim, а потом mysql_escape_string, но лучше mysql_real_escape_string().
unset($_POST['color[]']) - это вообще глупость.
do while выбросить, и использовать while.
Если вы работаете с ассоциативным массивом, то используйте mysql_fetch_assoc(), а не получайте еще попутно индексный массив, используя mysql_fetch_array(). | |
|
|
|
|
|
|
|
для: task
(26.03.2012 в 17:40)
| | Так как надо записать CHECKBOX и $_POST
- я этого не пойму ...
Подскажите плз... или напишите а я попробую разобрать.
мне надо передать значения ID (из таблицы цветов)
и в принципе : передаётся только то что отметил пользователь? | |
|
|
|
|
|
|
|
для: dimonich2004
(26.03.2012 в 17:46)
| | И где ваши id? Я понимаю, если id, это столбец в таблице, тогда при выводе формы:
<input type="checkbox" name="color[здесь id]" value="" />
|
Тогда $_POST['color'] - это массив отмеченных клиентом чекбоксов, ключи которого, это id записей в таблице, с соответсвующими значениями. А что у вас - $ii++? | |
|
|
|
|
|
|
|
для: task
(26.03.2012 в 17:57)
| | ну я пытался подсчитать кол во элементов потом))) | |
|
|
|
|
|
|
|
для: task
(26.03.2012 в 17:57)
| | Спасибо за короткий и понятный обзор))) | |
|
|
|
|
|
|
|
для: task
(26.03.2012 в 17:57)
| | А если валуе заполнить то какмне записать $_POST? и в нём можно передать Название цвета? | |
|
|
|
|
|
|
|
для: dimonich2004
(26.03.2012 в 18:02)
| | Куда записать, в базу? Тогда mysql_real_escape_string не нужно, это при подстановках в запрос требуется.
Если речь о записи, то многострочный INSERT-запрос, если обновление, то UPDATE. Вообще, отвечая на такое, лучше бы знать, что за структуру имеет таблица, и еще лучше в раздел MySQL с этим вопросом.
Атрибут value может содержать что угодно, а что это "угодно" означает, решаете вы. | |
|
|
|