2017-09-06 4 views
2

J'ai un problème avec un formulaire sérialisé. Je dois passer plusieurs lignes pour créer une facture, mais elle passe juste la première rangée.Passer plusieurs paramètres avec sérialiser jQuery dans PHP

C'est une forme:

<form action="" id="generate_invoice" method="POST"> 
    <td><input type="number" class="form-control n_invoice" name="n_invoice[]"></td> 
    <td><input type="date" class="form-control data" name="data[]"></td> 
    <td><input type="text" class="form-control description" name="description[]"></td> 
    <td><input type="number" class="form-control price" name="price[]" step=any></td> 
    <td><input type="number" class="form-control vat" name="vat[]"> 
</form> 

Ceci est une fonction qui ajoute de nouvelles lignes:

function addrow_invoice() { 
    var i = $('#invoiceTable tr').length; 
    var tr = '<tr>'+ 
    '<td><input type="checkbox" class="case"/></td>'+ 
    '<td></td>'+ 
    '<td></td>'+ 
    '<td><input type="text" class="form-control description" name="description[]"></td>'+ 
    '<td><input type="number" class="form-control price" name="price[]"></td>'+ 
    '<td><input type="number" class="form-control vat" name="vat[]"></td>'+ 
    '</tr>'; 
    $('table#invoiceTable').append(tr); 
    i++; 
}; 

Et ceci est un test:

for($i = 0; $i<count($_POST['description']); $i++) 
{ 
    echo "{$_POST['description'][$i]}"; 
    echo "<br>"; 
} 

Répondre

0

La question est parce que votre HTML est invalide. Le form doit envelopper l'élément table, ne pas être à l'intérieur. Parce que le HTML n'est pas valide, l'emplacement du form est déplacé de sorte qu'il n'emballe pas vos éléments input, donc rien ne se sérialise.

Votre code HTML doit être changé à ceci:

<form action="" id="generate_invoice" method="POST"> 
 
    <table id="invoiceTable"> 
 
    <tr> 
 
     <td><input type="number" class="form-control n_invoice" name="n_invoice[]"></td> 
 
     <td><input type="date" class="form-control data" name="data[]"></td> 
 
     <td><input type="text" class="form-control description" name="description[]"></td> 
 
     <td><input type="number" class="form-control price" name="price[]" step=any></td> 
 
     <td><input type="number" class="form-control vat" name="vat[]"> 
 
    </tr> 
 
    <!-- additional rows appended here... --> 
 
    </table> 
 
</form>

+0

Le vrai problème est quand je passe un paramètre, il est compté, mais si l'impression ne montre rien –