Reputation: 441
I have page a with 2 forms
the first part of the form
<form id="A" role="form" enctype="multipart/form-data" method="post">
<input class="form-control" placeholder="Name of the Company" name="ven_name" type="text" autofocus >
<input class="form-control" placeholder="Address" name="address" type="text" autofocus >
<input class="form-control" placeholder="City" name="city" type="text" autofocus >
</form>
<form id="B" role="form" enctype="multipart/form-data" method="post">
<input type="text" name="usr_f_name[]" placeholder="First Name" />
<input type="text" name="usr_l_name[]" placeholder="Last Name" />
<input type="text" name="usr_mobile[]" placeholder="Mobile Number" />
<input type="text" name="usr_email[]" placeholder="Email" />
<input type="password" name="usr_password_1[]" placeholder="Password"/>
</form>
both of them will be saved on a Database. Form A will be saved on Table A and Form B will be save on Table B. For Form B i'm using a Jquery so User can add multiple Users at a time ( maximum 3 user in one go )
here is the Php for Form B
$usr_array = array_keys($_POST['']);
foreach ($id_array as $id) {
$usr_f_name = mysqli_real_escape_string ($_POST['usr_f_name'][$id]);
$usr_l_name = mysqli_real_escape_string ($_POST['usr_l_name'][$id]);
$usr_mobile = mysqli_real_escape_string ($_POST['usr_mobile'][$id]);
$usr_email = mysqli_real_escape_string ($_POST['usr_email'][$id]);
$usr_password_1 = md5 ($_POST['usr_password_1'][$id]);
$sql = "INSERT INTO table_b SET f_name = '$usr_f_name', l_name = '$usr_l_name', mobile ='$usr_mobile',username='$usr_email', email='$usr_email', password='$usr_password_1'";
}
if(mysqli_query($databaseLink, $sql)){
echo "Records added successfully.";
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($databaseLink);
}
}
how do I tell php which form to iterate on?
Upvotes: 0
Views: 140
Reputation: 43441
Change naming of your fields:
<div class="form-B"
<input class="form-control" placeholder="Name of the Company" name="formA[ven_name]" type="text" autofocus >
<input class="form-control" placeholder="Address" name="formA[address]" type="text" autofocus >
<input class="form-control" placeholder="City" name="formA[city]" type="text" autofocus >
</div>
<div class="form-B">
<input type="text" name="formB[0][usr_f_name]" placeholder="First Name" />
<input type="text" name="formB[0][usr_l_name]" placeholder="Last Name" />
<input type="text" name="formB[0][usr_mobile]" placeholder="Mobile Number" />
<input type="text" name="formB[0][usr_email]" placeholder="Email" />
<input type="password" name="formB[0][usr_password_1]" placeholder="Password"/>
</div>
That way your $_POST
will look like this:
[
'formA' => [
'ven_name' => '',
'address' => '',
'city' => '',
],
'formB' => [
[
'usr_f_name' => '',
/* ... */
],
[
'usr_f_name' => '',
/* ... */
]
/*...*/
]
]
And you can do:
$query = 'INSERT INTO formB (usr_f_name, ...) VALUES ';
$inserts = [];
$params = [];
foreach ($formData['formB'] as $fields) {
/* ... */
}
Upvotes: 1
Reputation:
Add a hidden input field to both forms.
<form role="form" enctype="multipart/form-data" method="post">
<input type="hidden" name="form" value="A" />
...
</form>
<form role="form" enctype="multipart/form-data" method="post">
<input type="hidden" name="form" value="B" />
...
</form>
In your script you can check the field's value:
<?php
// ... sanitize ...
if ( $_POST['form'] == 'A' ) {
// Form A has been submitted
} else if ( $_POST['form'] == 'B' ) {
// Form B has been submitted
}
Upvotes: 2