Kuldeep Daftary
Kuldeep Daftary

Reputation: 621

How to fetch dynamically generated input field's value in php?

I'm working on a form where I have 2 fields which can be added N number of times. I have 2 fields called "fieldA" and "fieldB" and a button called "addrow" . So as many times I click on addrow I add fieldA and fieldB beneath previous fieldA and fieldB. So I can have unlimited fieldAs and unlimited fieldBs. I use jquery to add rows and append new fields with number behind each field's name attr to make it unique. So first set of fields will be named as fieldA1, fieldB1 and second set will be named as fieldA2 , fieldB2 and so on.

This is how my part of my form looks

enter image description here

And here's my jquery

$(document).ready(function(){
 var $i = 1;
    $('body').on('click','#addrow',function(){
    $('#fieldset').append(
    "Your Friends Name: <br /><input type='text' name='fieldA"+$i+"' /><br /><br />Your Friends Email: <br /><input type='text' name='fieldB"+$i+"' /><br /><br />"
    );
    $i++;
    });
});

Now since these fields are generated automatically using jquery I'm not sure how to fetch field's value in php.

also after fetching field's values I would also like to create an array.

This is how I expect to save values of all my fields in php array.

$fieldset = array( 
array("fieldA" => "value of fieldA1","fieldB" => "value of fieldB1"),
array("fieldA" => "value of fieldA2","fieldB" => "value of fieldB2"),
array("fieldA" => "value of fieldA3","fieldB" => "value of fieldB3"),
...
);

Upvotes: 1

Views: 2833

Answers (2)

Mihai Iorga
Mihai Iorga

Reputation: 39724

You inputs must be array [], otherwise you will not be able to receive them as array fieldA[]

Your jQuery should be like this:

$(document).ready(function(){
 var $i = 1;
    $('body').on('click','#addrow',function(){
    $('#fieldset').append(
    "Your Friends Name: <br /><input type='text' name='fieldA["+$i+"]' /><br /><br />Your Friends Email: <br /><input type='text' name='fieldB["+$i+"]' /><br /><br />"
    );
    $i++;
    });
});

HTML

Your Friends Name: <br /><input type='text' name='fieldA[0]'  class='name'/><br /><br />
Your Friends Email: <br /><input type='text' name='fieldB[0]' class='email'/><br /><br />

and in your PHP you will receive them as

[fieldA] => Array (
                [0] => 
                [1] => 
                [2] => 
            )
[fieldB] => Array ( 
                [0] => 
                [1] => 
                [2] =>
            )

you can convert them as you want

$newArray = array();

for($i=0; $i<count($_POST['fieldA']); $i++){
    $newArray[$i]['fieldA'] = $_POST['fieldA'][$i];
    $newArray[$i]['fieldB'] = $_POST['fieldB'][$i];
}

Upvotes: 4

Zathrus Writer
Zathrus Writer

Reputation: 4331

if you're using POST to submit those fields in your form, you can do:

foreach ($_POST as $key => $value) {
    $fieldset[$key] => $value;
}

Upvotes: 0

Related Questions