1

送信ボタンがクリックされたときに複数のデータを複数の行に挿入したい

以下は私のhtmlフォームです

<?php echo form_open('daily_shop_performance/insert_missing_records');?>
<table class="table" style=" width:100%; ">
<thead>
<tr>
<th>Days</th>
<th>Shop ID</th>
<th>Date</th>
<th>Takings</th>
<th>Payout</th>
<th>Actual Slippage</th>
</tr>
</thead>
<tbody>

<tr>
<td><b>FRI</b></td>
<td><?php echo form_input('BDP_COST_CENTRE_NUMBER', set_value('BDP_COST_CENTRE_NUMBER',          ''), 'class=span1' ); ?></td>
        <td><?php echo form_input('BDP_DATE', set_value('BDP_DATE', ''),          'class=span2' ); ?></td>
        <td><?php echo form_input('BDP_TAKE', set_value('BDP_TAKE', ''),       'class=span2' ); ?></td>
        <td><?php echo form_input('BDP_PAYOUT', set_value('BDP_PAYOUT',     ''), 'class=span2' ); ?></td>
        <td><?php echo form_input('BDP_ACTUAL_SLIPPAGE',     set_value('BDP_ACTUAL_SLIPPAGE', ''), 'class=span2' ); ?></td>
</tr>
<tr>
<td><b>SAT</b></td>
<td><?php echo form_input('BDP_COST_CENTRE_NUMBER1',         set_value('BDP_COST_CENTRE_NUMBER1', ''), 'class=span1' ); ?></td>
        <td><?php echo form_input('BDP_DATE1', set_value('BDP_DATE1', ''),     'class=span2' ); ?></td>
        <td><?php echo form_input('BDP_TAKE1', set_value('BDP_TAKE1', ''),     'class=span2' ); ?></td>
        <td><?php echo form_input('BDP_PAYOUT1', set_value('BDP_PAYOUT1',     ''), 'class=span2' ); ?></td>
        <td><?php echo form_input('BDP_ACTUAL_SLIPPAGE1',          set_value('BDP_ACTUAL_SLIPPAGE1', ''), 'class=span2' ); ?></td>
    </tr>

    <tr>
    <td><?php echo form_submit('submit', 'Next', 'class="btn btn-large"',     'type="button"'); ?></td>
    </tr>

</table>
<?php echo form_close();?>

私の挿入ステートメントは、各レコードを配列として挿入しています

これは正常に機能していますが、データを含むフォーム フィールドのみを挿入し、空のフォーム フィールドを無視する方法がわかりません

Below is my insert query

public function insert_missing_records()
{

    $insert_data = array(
    array(
            'BDP_ID'=>                  '',
            'BDP_COST_CENTRE_NUMBER'=>      $this->input->post('BDP_COST_CENTRE_NUMBER'),
            'BDP_DATE' =>               $this->input->post('BDP_DATE'),
            'BDP_DAY_CODE'=>            '1',
            'BDP_TAKE'=>                $this->input->post('BDP_TAKE'),
            'BDP_PAYOUT'=>              $this->input->post('BDP_PAYOUT'),
            'BDP_ACTUAL_SLIPPAGE'=>         $this->input->post('BDP_ACTUAL_SLIPPAGE'),
            'BDP_PROCESS_DATE'=>            $this->performance_m->date(),
            'BDP_RUN_DATE'=>            $this->performance_m->date(),
            'BDP_CREATED_BY'=>          $this->session->userdata('BL_USERNAME'),
            'BDP_SOURCE'=>              'M',
            'BDP_UPDATE_DATE'=>         '',
            'BDP_UPDATED_BY'=>          $this->session->userdata('BL_USERNAME')
    ),
    array(

            'BDP_ID'=>                  '',
            'BDP_COST_CENTRE_NUMBER'=>      $this->input->post('BDP_COST_CENTRE_NUMBER1'),
            'BDP_DATE' =>               $this->input->post('BDP_DATE1'),
            'BDP_DAY_CODE'=>            '2',
            'BDP_TAKE'=>                $this->input->post('BDP_TAKE1'),
            'BDP_PAYOUT'=>              $this->input->post('BDP_PAYOUT1'),
            'BDP_ACTUAL_SLIPPAGE'=>         $this->input->post('BDP_ACTUAL_SLIPPAGE1'),
            'BDP_PROCESS_DATE'=>            $this->performance_m->date(),
            'BDP_RUN_DATE'=>            $this->performance_m->date(),
            'BDP_CREATED_BY'=>          $this->session->userdata('BL_USERNAME'),
            'BDP_SOURCE'=>              'M',
            'BDP_UPDATE_DATE'=>         '',
            'BDP_UPDATED_BY'=>          $this->session-    >userdata('BL_USERNAME') 

        )
        );

    $insert = $this->db->insert_batch('WHOUSE1.DLY_BWR_MAN_PERFORMANCE',         $insert_data);
    echo '<pre>' .$this->db->last_query(). '</pre>';
            return $insert;
}

誰かが助けてくれれば幸いです。ありがとうございました

4

1 に答える 1

0

フォームの各フィールドを変数に割り当て、空かどうかを確認できます。空でない場合は、適切なエントリを配列に追加します。

次のようなことを試してください:

$array1 = array(
            'BDP_ID'=>                  '',
            //and others which needs to be inserted always
)

$variable1 = $this->input->post('BDP_COST_CENTRE_NUMBER');
if( !empty($variable) )
{
    $array1['BDP_COST_CENTRE_NUMBER'] = $variable1;
}
//and so on for each variable

$insert_data = array(
    $array1,
    $array2, //same thing for this array
)

これを改善するには、多くのコードを記述する代わりに、すべてのパラメーターを配列 (リスト) に入れて反復処理します。幸運を

于 2013-11-05T13:24:32.853 に答える