2010-12-13 4 views
0

У меня есть форма, и я повторяю те же поля, потому что я не являюсь пользователем, если у него есть более одного элемента, чтобы отправить первый элемент, и он делает agin и agin, я хочу его от в первый раз, чтобы добавить все элементы, которые у него есть, поэтому я помещал одинаковые поля Обязательные поля более одного раза.Как получить многозначные многозначные поля

<form> 
    <select name="items[]"> 
    <option value="clothes">Clothes</option> 
    <option value="shoes">Shoes</option> 
    </select> 
    <input type="text" name="color[]" /> 

    <select name="items[]"> 
    <option value="clothes">Clothes</option> 
    <option value="shoes">Shoes</option> 
    </select> 
    <input type="text" name="color[]" /> 
</form> 

и я знаю, как получить только одно поле, как это: имя = «цвет []» Я могу получить результат с:

while(list($key,$value) = each($_POST['color'])){ 

if(!empty($value)){ 

echo $_POST['color'][$key]; 
echo "<br />" ; 

}} 

, но теперь я хочу, чтобы получить все значения «выберите пункты и цвет "

Я сделал этот код здесь, и я получил все результаты Но он не связан друг с другом !!!

как это: одежды обуви красного синего

я хочу это так: одежды-красная туфля-голубой

это код, который я сделал Но я не удовлетворен

while(list($key,$value) = each($_POST['input'])){ 

if(!empty($value)){ 

echo $_POST['input'][$key]; 
echo "<br />" ; 

}} 

while(list($key,$value) = each($_POST['items'])){ 

if(!empty($value)){ 

echo $_POST['items'][$key]; 
echo "<br />" ; 

}} 

может кто-нибудь помочь мне, пожалуйста :)

спасибо,

ответ

1

Меняйте выберите и входные имена, чтобы быть как этот

<select name="items[0][type]"> 
<input name="items[0][color]"> 

<select name="items[1][type]"> 
<input name="items[1][color]"> 

Затем вы можете перебирать каждую пару вместе, используя

foreach ($_POST['items'] as $item) { 
    $type = $item['type']; 
    $color = $item['color']; 
} 

Редактировать Забыл добавить индекс к каждая пара группирует их вместе

+0

+1 обходит вопрос, но в целом лучше подход, конечно. :) – deceze

+0

Спасибо за ваше решение, я очень ценю, что – Swell

1

У вас есть два массива:

$items = array(0 => 'clothes', 1 => 'shoes') 
$color = array(0 => 'blue', 1 => 'red') 

Цитирование через оба массива подряд, конечно, даст вам «одежду, обувь, синий, красный». Так как индекс 0 из $items соответствует индексу 0 $color, вам необходимо получить доступ соответствующего индекса в обеих массивах сразу:

for ($i = 0; $i < count($items); $i++) { 
    echo $items[$i] . ' - ' . $color[$i]; 
} 
+0

Просто нужно быть осторожным с этим методом. Текстовые поля прекрасны, но некоторые элементы не будут регистрировать значение столбца, если оставить его пустым (флажки и переключатели). В этом случае вы получите массивы разных размеров – Phil

+0

Спасибо deceze Я не пробовал ваше решение, решение Фила работало спасибо в любом случае – Swell

Смежные вопросы