2017-10-11 41 views
0

對我有2種形式腓多種形式,迭代的具體形式

形式

<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> 

他們都將保存在數據庫的第一部分頁面。表格A將保存在表格A上,表格B將保存在表格B上。對於表格B,我使用的是Jquery,因此用戶可以一次添加多個用戶(最多3個用戶一次去)

這裏是表格B的Php

$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); 
     } 
    } 

如何告訴php哪些表單要迭代?你的領域

+0

我如何告訴,反覆的表單。 –

+0

問題對我來說還不清楚。而且,你面臨什麼問題? –

+0

你的'

'標籤在哪裏?從你所展示的代碼(其中,不要忘記,是我們唯一知道的關於你的程序的),在技術上,根本沒有任何表單。每次回發只能提交一份表單。 (其中「表格」被定義爲「」和「
」標籤對之間的所有內容)。 – ADyson

回答

1

更改命名:

<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> 

這樣,你的$_POST看起來就像這樣:

[ 
    'formA' => [ 
     'ven_name' => '', 
     'address' => '', 
     'city' => '', 
    ], 
    'formB' => [ 
     [ 
      'usr_f_name' => '', 
      /* ... */ 
     ], 
     [ 
      'usr_f_name' => '', 
      /* ... */ 
     ] 
     /*...*/ 
    ] 
] 

你可以這樣做:

$query = 'INSERT INTO formB (usr_f_name, ...) VALUES '; 
$inserts = []; 
$params = []; 

foreach ($formData['formB'] as $fields) { 
    /* ... */ 
} 
+0

看起來很有希望,生病嘗試我,讓你知道。但如果用戶決定一次添加多個用戶,會發生什麼?

+0

@TheNagaTanker我認爲在這種情況下,您應該爲新用戶創建元素爲:'0如果他們添加另一個用戶,則爲1.然後是2。 – ADyson

+1

@TheNagaTanker檢查更新,而不是'[0]'在最後應該在'formB'之後將所有用戶字段換成一個鍵。如果用戶添加另一組字段,則必須用'formB [1]'替換'formB [0]'等等。 – Justinas

2

添加一個隱藏的輸入字段以兩種形式。

<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> 

在你的腳本,你可以檢查該字段的值:

<?php 
// ... sanitize ... 
if ($_POST['form'] == 'A') { 
    // Form A has been submitted 
} else if ($_POST['form'] == 'B') { 
    // Form B has been submitted 
}