2013-06-19 2 views
0

У меня есть форму (счет-фактура) с набором входов (для платежей).POST-значения не возвращаются должным образом

<tr> 
    <td><label>Description:</label></td> 
    <td><input type="text name="description[]" value="'.$labor->description.'" /></td> 
    <td><label>Hours:</label></td> 
    <td><input type="text name="hours[]" value="'.$labor->hours.'" size="2" /></td> 
    <td><label>Rate:</label></td> 
    <td><input type="text name="rate[]" value="'.$labor->rate.'" size="2" /></td> 
    <input type="hidden" name="labor_id[]" value="'.$labor->id.'" /> 
</tr> 

Я использую функцию javascript для добавления другого набора этих входов.

function moreLabor(table) { 

    var table = document.getElementById(table); 
    var row = table.insertRow(-1); 

    var descriptionLabel = document.createElement("label"); 
    descriptionLabel.innerHTML="Description:"; 
    var description = document.createElement("input"); 
    description.name = "description[]"; 
    description.type = "text"; 

    var td1 = row.insertCell(-1); 
    var td2 = row.insertCell(-1); 
    td1.appendChild(descriptionLabel); 
    td2.appendChild(description); 

    var hoursLabel = document.createElement("label"); 
    hoursLabel.innerHTML="Hours:"; 
    var hours = document.createElement("input"); 
    hours.name = "hours[]"; 
    hours.type = "text"; 
    hours.size = 2; 
    hours.value = 1; 
    var td1 = row.insertCell(-1); 
    var td2 = row.insertCell(-1); 
    td1.appendChild(hoursLabel); 
    td2.appendChild(hours); 

    var rateLabel = document.createElement("label"); 
    rateLabel.innerHTML="Rate:"; 
    var rate = document.createElement("input"); 
    rate.name = "rate[]"; 
    rate.type = "text"; 
    rate.size = 2; 
    rate.value = 25; 

    var td1 = row.insertCell(-1); 
    var td2 = row.insertCell(-1); 
    td1.appendChild(rateLabel); 
    td2.appendChild(rate); 

    var remove = document.createElement("input"); 
    remove.type = "button"; 
    remove.value = "Remove"; 
    remove.onclick = function() { 
     var parent = this.parentNode.parentNode; //get the row node 
     table.deleteRow(parent.rowIndex); //Delete the row index behind it. 
    }; 
    var td1 = row.insertCell(-1).appendChild(remove); 

} 

Как вы можете видеть, я использую [] после повторных ввода имен. Проблема заключается в том, что POST возвращает только последний набор значений. Я посмотрел на необработанную строку запроса, и он также содержит только последний набор значений. Скорость, часы и описание возвращаются в виде массива, но только с одним значением. Как заполнить весь массив POST?

ответ

2

Посмотрите на свой синтаксис, вы совместили type и name

type="text name="hours[]" 

это должно быть

type="text" name="hours[]" 
0

Человек, я чувствую себя идиотом. Когда я увидел свой вопрос с цветной аннотацией, я заметил, что отсутствует «после типа =» текст

+3

Вот почему разумные редакторы и IDE так рекомендуют. , , :-) – Fallen

0
<tr> 
    <td><label>Description:</label></td> 
    <td><input type="text name="description[]" value="'.$labor->description.'" /></td> 
    <td><label>Hours:</label></td> 
    <td><input type="text name="hours[]" value="'.$labor->hours.'" size="2" /></td> 
    <td><label>Rate:</label></td> 
    <td><input type="text name="rate[]" value="'.$labor->rate.'" size="2" /></td> 
    <input type="hidden" name="labor_id[]" value="'.$labor->id.'" /> 
</tr> 


should be 

<tr> 
    <td><label>Description:</label></td> 
    <td><input type="text" name="description[]" value="'.$labor->description.'" /></td> 
    <td><label>Hours:</label></td> 
    <td><input type="text" name="hours[]" value="'.$labor->hours.'" size="2" /></td> 
    <td><label>Rate:</label></td> 
    <td><input type="text" name="rate[]" value="'.$labor->rate.'" size="2" /></td> 
    <input type="hidden" name="labor_id[]" value="'.$labor->id.'" /> 
</tr> 
Смежные вопросы