2015-05-04 3 views
1

У меня есть форма, которая имеет одинаковые продукты, но с разными атрибутами. форма выглядит что-то похожее на это:Удаление элемента массива формы

<form> 
<table> 
    <tr> 
     <td> Line-1 </td> 
     <td> <input type='text' name='ítem[1][Size]'</td> 
     <td> <input type='text' name='ítem[1][Color]'</td> 
     <td> <input type='text' name='ítem[1][Price]'</td> 
    </tr> 
    <tr> 
     <td> Line-2 </td> 
     <td> <input type='text' name='ítem[2][Size]'</td> 
     <td> <input type='text' name='ítem[2][Color]'</td> 
     <td> <input type='text' name='ítem[2][Price]'</td> 
    </tr> 
    <tr> 
     <td> Line-3 </td> 
     <td> <input type='text' name='ítem[3][Size]'</td> 
     <td> <input type='text' name='ítem[3][Color]'</td> 
     <td> <input type='text' name='ítem[3][Price]'</td> 
    </tr> 
    <tr> 
     <td> Line-4 </td> 
     <td> <input type='text' name='ítem[4][Size]'</td> 
     <td> <input type='text' name='ítem[4][Color]'</td> 
     <td> <input type='text' name='ítem[4][Price]'</td> 
    </tr> 
    </table> 
</form> 

PHP Пример кода:

for($i = 0;$i < count($_POST);$i++){ 
    var_dump($_POST[$i]); 
} 

Ошибка:

Notice: Undefined offset: 0 in C:\xampp\htdocs\test\testing.php on line 5 

Если бы я должен был удалить элемент [2] динамически с помощью JS, на submit php выдает ошибку, потому что не может найти номер 2. Как это можно сделать?

Возможно, я не делаю это правильно?

+0

Можете ли вы показать нам, что вы здесь делаете? Трудно сказать что-либо без кода –

+0

Нам нужно посмотреть, что делает ваш PHP-код. Пожалуйста, отредактируйте и опубликуйте обработчик формы PHP. Какая ошибка вы получаете. – Twisty

+0

Потому что вы нарушаете индексы массива. И, пожалуйста, поместите здесь свою ошибку? –

ответ

5

В вашем PHP код, используйте foreach как было предложено:

foreach($_POST['item'] as $item){ 
    echo $item['Size'] . "<br />"; 
    echo $item['Color'] . "<br />"; 
    echo $item['Price'] . "<br />"; 
    echo "<hr />" 
} 

EDIT:

Another question how would i go about re-changing row numbers once I deleted row number 2?

Это делается в JS или JQuery. Что-то вроде:

var i = 1; 
$.each($("tr"), function(){ 
    $(this).next("input[name*='Size']").attr("name", "item[" + i + "][Size]"); 
    $(this).next("input[name*='Color']").attr("name", "item[" + i + "][Color]"); 
    $(this).next("input[name*='Price']").attr("name", "item[" + i + "][Price]"); 
    i++; 
}); 
Смежные вопросы