[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Переменное число параметров в $_POST
seregarem
Есть форма, в которой input'ы создаются динамически (пользователь сам добавляет необходимое кол-во) и которых может быть разное кол-во. На submit выполняется скрипт, который должен вытащить все параметры из передаваемые формой. Как можно перебрать все параметры, если заранее неизвестно кол-во параметров и их имена?



Спустя 5 минут, 42 секунды (5.10.2011 - 18:06) imbalance_hero написал(а):
foreach($_POST)

Спустя 15 минут, 34 секунды (5.10.2011 - 18:21) KonstantinK написал(а):
создавайте все input к примеру с таким именем вот так
<input type="text" name="form[array][]" />


а потом перебирайте
foreach($_POST['array'])

Спустя 4 часа, 47 минут, 42 секунды (5.10.2011 - 23:09) seregarem написал(а):
Спасиба! Еще вопрос. Вызываю переменные так:
foreach ($_POST as $key => $value) {
$$key = $value;
echo $$key;
}

Но выводятся только те значения input'в, которые созданы статически, а которые добавляются динамически, не выводятся.
Вот код самого динамического добавления:
function _getDate(tp) {
var d = new Date();
if(tp=='d'){ return d.getDate();}
if(tp=='m'){ return d.getMonth();}
if(tp=='y'){ return d.getFullYear();}
}


function makeDT(when, cur, Form){
var month = ['', 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'];
var Inner = document.createElement('select');
Inner.id = when+cur+'_day';
Form.appendChild(Inner);
var objSel = document.getElementById(when+cur+"_day");
for (var i = 1; i <= 31; i++) {
objSel.options[i] = new Option(i, i);
}
objSel.selectedIndex = _getDate('d');

var Inner = document.createElement('select');
Inner.id = when+cur+'_month';
Form.appendChild(Inner);
var objSel = document.getElementById(when+cur+"_month");
for (var i = 1; i <= 12; i++) {
objSel.options[i] = new Option(month[i], month[i]);
}
objSel.selectedIndex = _getDate('m')+1;

var Inner = document.createElement('select');
Inner.id = when+cur+'_year';
Form.appendChild(Inner);
var d = new Date();
var objSel = document.getElementById(when+cur+"_year");
for (var i = d.getFullYear(); i <= d.getFullYear()+2; i++) {
objSel.options[i-d.getFullYear()+1] = new Option(i, i);
}
objSel.selectedIndex = 1;
}

function CreateAnimal(){
var Form = document.getElementById('animals');
var cur = Form.elements.length;

var Inner = document.createElement('select');
Inner.id = 'animal'+cur;
// Form.insertBefore(Inner, button);
Form.appendChild(Inner);

var objSel = document.getElementById("animal"+cur);
getDeclaration("animal"+cur);

var Inner = document.createElement('label');
Inner.textContent = 'количество';
Form.appendChild(Inner);

var Inner = document.createElement('input');
Inner.type = 'text';
Inner.value = '';
Inner.id = 'num'+cur;
Inner.size = 5;
Form.appendChild(Inner);

var Inner = document.createElement('label');
Inner.textContent = 'с';
Form.appendChild(Inner);

makeDT('begin', cur, Form);

var Inner = document.createElement('label');
Inner.textContent = 'по';
Form.appendChild(Inner);

makeDT('end', cur, Form);

var Br = document.createElement('br');
Form.appendChild(Br);
}

function makeDT_sign(){
var month = ['', 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'];
var d = new Date();
var objSel = document.getElementById("_day");
for (var i = 1; i <= 31; i++) {
objSel.options[i] = new Option(i, i);
}
objSel.selectedIndex = _getDate('d');

var objSel = document.getElementById("_month");
for (var i = 1; i <= 12; i++) {
objSel.options[i] = new Option(month[i], month[i]);
}
objSel.selectedIndex = _getDate('m')+1;

var objSel = document.getElementById("_year");
for (var i = d.getFullYear(); i <= d.getFullYear()+2; i++) {
objSel.options[i-d.getFullYear()+1] = new Option(i, i);
}
objSel.selectedIndex = 1;
}


Код кнопки добавления:
<input type="button" value="добавить вид животного" onClick="CreateAnimal();" id="btn">


добавляется 7 select и 1 input.

Спустя 9 часов, 7 минут, 46 секунд (6.10.2011 - 08:17) KonstantinK написал(а):
Я чет не вижу какие вы имена присваиваете динамически создаваемым input , id создаете, а вот name я не вижу. Посмотрите через Firebug что у вас создается при добавлении input

Спустя 1 час, 39 минут, 47 секунд (6.10.2011 - 09:57) seregarem написал(а):
А разве используется name, а id для обращения к контролу?

Спустя 43 минуты, 10 секунд (6.10.2011 - 10:40) seregarem написал(а):
Спасиба, помогло :-)
Еще вопрос. Как вывести не значение контрола, а его имя?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.