user1615179
user1615179

Reputation: 11

Adding rows to mysql from dynamic jquery form fields

please excuse me as I am not proficient in php/mysql. I have an html form for inventory. I have a set of fields to update my sql database, they are item_name, item_cost, item_quantity. I have a jquery button that allows the user to dynamically add additional items/rows.

Question: how can I have php loop whatever number of items the user adds and put them in the mysql database?

thank you for your time.

Upvotes: 1

Views: 2161

Answers (2)

Dan Grossman
Dan Grossman

Reputation: 52372

If you have multiple form inputs with the same name, and that name ends in double square brackets [], their values will be turned into an array when PHP populates $_POST from the form.

So your jQuery button should insert a row with fields named like this:

<input type="text" name="item_name[]" value="" />
<input type="text" name="item_cost[]" value="" />
<input type="text" name="item_quantity[]" value="" />

In your PHP code that takes the form submission, you can process all the rows that exist like this:

//I used `item_name` as the loop termination condition, 
//but any of the 3 keys would have worked
for ($i = 0; $i < count($_POST['item_name']); $i++) {
    $item_name = $_POST['item_name'][$i];
    $item_cost = $_POST['item_cost'][$i];
    $item_quantity = $_POST['item_quantity'][$i];

    //here, inside the loop, run your database query using the 3 values above    
}

Upvotes: 4

behz4d
behz4d

Reputation: 1849

Another (hard) way is to have a hidden input box which it's value is the number of the items the users wants to submit, on each jquery "add button" clicked, also the value of the hidden input will be updated(value++), and you should do the other input names like "name_id" while you're making them with jquery, so you could get them on server side... .

Upvotes: 0

Related Questions