php使用数组将数据插入两行


php insert data into two rows with array

我有一个这样的表单。我想用ajax保存表单,主要是此处输入的数据将按2行插入。一个用于产品a,另一个用于b。

(a和b是产品名称,将在产品名称列中保存为a和b)

<form class="product-data" action="">
    <table>
        <tr class="data-row">
            <td> 
                <input type="number" name="finance[a_source_unit]" >
            </td>
            <td >
                <input type="number" name="finance[a_target_unit]">
            </td>
            <td>
                <input type="number" name="finance[a_client_price]">
            </td>
            <td>
                <input type="number" name="finance[a_client_salary]" >
            </td>
    </tr>
    <tr class="data-row">
        <td>
            <input type="number" name="finance[b_source_unit]" >
        </td>
        <td >
            <input type="number" name="finance[b_target_unit]">
        </td>
        <td>
            <input type="number" name="finance[b_client_price]">
        </td>
        <td>
            <input type="number" name="finance[b_client_salary]" >
        </td>
    </tr>
    </table>
</form>

我的数据库就像这个

id product_name source_unit target_unit client_price client_salary

所以我把ajax做成了这个

var Table = $(this).closest('.product-data');
var data = Table.serializeArray();
data.push({name: 'action', value: 'save_product_data' });
$.post( ajaxUrl, data, function(msg) {
    console.log(msg);
});

在save_product_data函数中,我得到了这样的数据

function save_product_data() {
    $finance = $_POST['finance'];
    print_r($finance);
}

数据是这样来的

Array
(
    [a_source_unit] => 3213
    [a_target_unit] => 123
    [a_client_price] => 34278
    [a_client_salary] => 7584
    [b_source_unit] => 3213234
    [b_target_unit] => 1234
    [b_client_price] => 34275438
    [b_client_salary] => 75854    
)

所以基本上我希望a的值插入一行,b插入另一行。

如果您使用这样的表单:

<form class="product-data" action="">
    <table>
        <tr class="data-row">
            <td> 
                <input type="number" name="finance[a][source_unit]" >
            </td>
            <td >
                <input type="number" name="finance[a][target_unit]">
            </td>
            <td>
                <input type="number" name="finance[a][client_price]">
            </td>
            <td>
                <input type="number" name="finance[a][client_salary]" >
            </td>
    </tr>
    <tr class="data-row">
        <td>
            <input type="number" name="finance[b][source_unit]" >
        </td>
        <td >
            <input type="number" name="finance[b][target_unit]">
        </td>
        <td>
            <input type="number" name="finance[b][client_price]">
        </td>
        <td>
            <input type="number" name="finance[b][client_salary]" >
        </td>
    </tr>
    </table>
</form>

$_POST数组中会有这样的东西,您只需要使用foreach逐行插入:

array
  'finance' => 
    array
      'a' => 
        array
          'source_unit' => string '5' (length=1)
          'target_unit' => string '5' (length=1)
          'client_price' => string '5' (length=1)
          'client_salary' => string '5' (length=1)
      'b' => 
        array
          'source_unit' => string '1' (length=1)
          'btarget_unit' => string '1' (length=1)
          'bclient_price' => string '1' (length=1)
          'client_salary' => string '1' (length=1)