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

Форум PHP

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

 

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

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

тема: Как вывести массив из формы : INPUT CHECKBOX
 
 автор: dimonich2004   (26.03.2012 в 17:02)   письмо автору
 
 


<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>


Как можно обработать эту форму с произвольным количеством элементов в массиве?
(... если пользователь выберет не одно поле а несколько)

  Ответить  
 
 автор: task   (26.03.2012 в 17:12)   письмо автору
 
   для: dimonich2004   (26.03.2012 в 17:02)
 

Зачем color[$ii]?
Что значит обработать?

  Ответить  
 
 автор: dimonich2004   (26.03.2012 в 17:15)   письмо автору
 
   для: task   (26.03.2012 в 17:12)
 

как получать из POST массив?
ii = Это сколько значенй (в масив идут ID полей из базы)

  Ответить  
 
 автор: task   (26.03.2012 в 17:23)   письмо автору
 
   для: dimonich2004   (26.03.2012 в 17:15)
 

Все что возвращается формой, это уже и есть массив.
Эти "сколько значений" совсем не нужны, ибо это не id, а просто значение установленного счетчика.

  Ответить  
 
 автор: dimonich2004   (26.03.2012 в 17:31)   письмо автору
 
   для: 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

Подскажите плз....

  Ответить  
 
 автор: Lotanaen   (26.03.2012 в 17:37)   письмо автору
 
   для: dimonich2004   (26.03.2012 в 17:31)
 

$color у вас массив, используйте foreach

  Ответить  
 
 автор: task   (26.03.2012 в 17:40)   письмо автору
 
   для: 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().

  Ответить  
 
 автор: dimonich2004   (26.03.2012 в 17:46)   письмо автору
 
   для: task   (26.03.2012 в 17:40)
 

Так как надо записать CHECKBOX и $_POST

- я этого не пойму ...
Подскажите плз... или напишите а я попробую разобрать.

мне надо передать значения ID (из таблицы цветов)

и в принципе : передаётся только то что отметил пользователь?

  Ответить  
 
 автор: task   (26.03.2012 в 17:57)   письмо автору
 
   для: dimonich2004   (26.03.2012 в 17:46)
 

И где ваши id? Я понимаю, если id, это столбец в таблице, тогда при выводе формы:
<input type="checkbox" name="color[здесь id]" value="" />

Тогда $_POST['color'] - это массив отмеченных клиентом чекбоксов, ключи которого, это id записей в таблице, с соответсвующими значениями. А что у вас - $ii++?

  Ответить  
 
 автор: dimonich2004   (26.03.2012 в 18:00)   письмо автору
 
   для: task   (26.03.2012 в 17:57)
 

ну я пытался подсчитать кол во элементов потом)))

  Ответить  
 
 автор: dimonich2004   (26.03.2012 в 18:01)   письмо автору
 
   для: task   (26.03.2012 в 17:57)
 

Спасибо за короткий и понятный обзор)))

  Ответить  
 
 автор: dimonich2004   (26.03.2012 в 18:02)   письмо автору
 
   для: task   (26.03.2012 в 17:57)
 

А если валуе заполнить то какмне записать $_POST? и в нём можно передать Название цвета?

  Ответить  
 
 автор: task   (26.03.2012 в 18:16)   письмо автору
 
   для: dimonich2004   (26.03.2012 в 18:02)
 

Куда записать, в базу? Тогда mysql_real_escape_string не нужно, это при подстановках в запрос требуется.
Если речь о записи, то многострочный INSERT-запрос, если обновление, то UPDATE. Вообще, отвечая на такое, лучше бы знать, что за структуру имеет таблица, и еще лучше в раздел MySQL с этим вопросом.
Атрибут value может содержать что угодно, а что это "угодно" означает, решаете вы.

  Ответить  
Rambler's Top100
вверх

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