Обработка POST из формы с большим количеством полей

regi

Новичок
Обработка POST из формы с большим количеством полей

Понадобилось сделать форму с приличным количеством полей, раньше всегда каждое поле называл например title, price и т.п.
Но сейчас полей много очень, каждое нужно обработать, так как данные разные(тексты, числовые данные). Насколько я понимаю, можно обозвать все поля именем массива input name="properties[]", но как определить, какое поле как обработать? Сгруппировать поля по типу данных?
input name="properties['price'][]"
input name="properties['price'][]"
input name="properties['text'][]"
input name="properties['text'][]"
input name="properties['text'][]"
input name="properties['price'][]"
input name="properties['variety'][]"
input name="properties['variety'][]"
??? как потом проще всего это обработать?
 

chisto_tolyan

Враг народа
проходом по массиву $_POST
foreach($_POST['price'] as $key=>$value){
echo $key.'='.$value.'<BR>';
}

foreach($_POST['text'] as $key=>$value){
echo $key.'='.$value.'<BR>';
}
 

regi

Новичок
Это мне понятно было :)
извиняюсь, я не дописал вопроса.
как обработать эти данные и создать sql запрос нужный для вставки(апдейта).
Вот например есть таблица mysql:
id(int, auto_inc), title(text), price(float), price_end(float), brief(text), variety(int), user(text).
И нужно вставить в эту таблицу пост данные.
INSERT INTO table(title, price, price_end, brief, variety, user) VALUES(......).
Как сделать, чтобы данные добавились в те поля, которые предназначены для хранения этих данных? Формировать массив во время обработки POST данных?
PHP:
$prop = $_POST['properties'];
$arr = array();
foreach($prop['text'] as $key => $value){
 $arr['text'][] = function_for_text($value);
};
foreach($prop['price'] as $key => $value){
 $arr['price'][] = function_for_price($value);
};
и т.д.
а как все потом слить в mysql не могу додуматься :)
 

SiMM

Новичок
PHP:
$f = array('title'    =>'function_for_title',
           'price'    =>'function_for_price',
           'price_end'=>'function_for_price_end',
           'brief'    =>'function_for_brief',
           'variety'  =>'function_for_variety',
           'user'     =>'function_for_user',
          );
$d = array();
foreach ($f as $k=>$v)
  if (isset($_POST['properties'][$k])
    $d["`$k`"] = "'".mysql_real_escape_string($v($_POST['properties'][$k]))."'";
$q = 'INSERT INTO table('.implode(',',array_keys($d)).') VALUES('.implode(',',$d).')';
Идея думаю ясна - вторую размерность добавь сам.
 

regi

Новичок
Спасибо большое. Я и не подумал даже так сделать :)
 

zarus

Хитрожопый макак
Добавлю, что лучше не сразу выполнять полученный $q, а сделать длинную строку
PHP:
foreach (...) {
...
$arr_q[] = $q;
}
mysql_query(implode(";",$arr_q));
чтобы не перегружать сервер кучей мелких запросов, а создать один большой пакетник.
Единственное, я не знаю, есть ли ограничения на "длину" передаваемого в mysql_qury запроса
 

SiMM

Новичок
zarus, не морочьте человеку голову
[m]mysql_query[/m] не умеет выполнять несколько команд в один присест.
 

Фанат

oncle terrible
Команда форума
но зато INSERT умеет вставлять несколько строк за раз
 

zarus

Хитрожопый макак
-~{}~ 18.11.05 13:03:

Автор оригинала: SiMM
zarus, не морочьте человеку голову
[m]mysql_query[/m] не умеет выполнять несколько команд в один присест.
Простите, т.е. вы утверждаете, что код MySQL
INSERT .....;
INSERT .....;
...
INSERT .....;
НЕ БУДЕТ исполнен сервером MySQL?
 

SiMM

Новичок
> Простите, т.е. вы утверждаете, что код MySQL
Я утверждаю, что [m]mysql_query[/m] не позволяет выполнять несколько команд MySQL в один присест. Всё остальное - плод вашего богатого воображения.
 

zarus

Хитрожопый макак
Автор оригинала: SiMM
> Простите, т.е. вы утверждаете, что код MySQL
Я утверждаю, что [m]mysql_query[/m] не позволяет выполнять несколько команд MySQL в один присест. Всё остальное - плод вашего богатого воображения.
Простите. Не сталкивался с этой особенностью...

-~{}~ 18.11.05 13:42:

Просто я по большей части работаю с MSSQL и там такого ограничения нет - результаты пакетных запросов можно перебирать.
 

texrdcom

Новичок
Пример:
INSERT INTO `pag` ( `id_pag` , `p` , `a` , `l` , `t` , `k` )
VALUES (
'', 'sd', 'sd', '0', 'sd', '0'
), #А дальше вставляем столько новых строк - значений для вставки сколько надо через любой цикл
(
'', 'sd', 'sd', '0', 'sd', '0'
),
(
'', 'sd', 'sd', '0', 'sd', '0'
) # И так дальше только не забуть убрать запятую в после последней вставки :)
 

SiMM

Новичок
texrdcom, и что же, вы таки утверждаете, что в вашем примере - несколько MySQL-команд? Иначе к чему ваш пост после поста Фаната?
PS: неужели я настолько неясно выразился?
 

Фанат

oncle terrible
Команда форума
ничего он не утверждает.
это пример к посту Фаната.
 
Сверху