0

サービスを更新したいホテル サイトのフォームがあり、クライアントは一度に複数のサービスを更新したいと考えています。ただ、モデルと一緒にデータベースに保存する方法に迷っています。

私はすでにコントローラーを構築しました。これは次のようになります。

$items = array(
        array(
                'id'           => $this->input->post('id1', true),
                'hotel_id'     => $hotel_id,
                'des_servicio' => $this->input->post('des_servicio1', true),
                'est_activo'   => $this->input->post('est_activo1', true)
        ),
        array(
                'id'           => $this->input->post('id2', true),
                'hotel_id'     => $hotel_id,
                'des_servicio' => $this->input->post('des_servicio2', true),
                'est_activo'   => $this->input->post('est_activo2', true)
        ),
        array(
                'id'           => $this->input->post('id3', true),
                'hotel_id'     => $hotel_id,
                'des_servicio' => $this->input->post('des_servicio3', true),
                'est_activo'   => $this->input->post('est_activo3', true)
        )
);

$this->hotel_model->save_multiple($items);

[アップデート]

これは私の新しいモデルがどのように見えるかです:

function save_multiple($items = array())
{
    $this->db->insert_batch($this->__tabla, $items);
    return $this->db->affected_rows();
}

私の問題は、3 つのフィールドしか入力しない場合でも、10 行 (元のフォームには 10 フィールドあります) が作成されることです。したがって、私のデータベースには3つのサービスが保存され、7つの空白行も保存されます。どうすればこれを変更できますか?

4

2 に答える 2

1
foreach $items //I get an error here
    as $item 

する必要があります

foreach ( $items as $item ) 
于 2013-03-21T16:23:25.190 に答える
0

値が設定されていない場合、input->post() は false を返すことに注意してください。したがって、値が配列に入れるために設定されているかどうかを確認してください。次に、モデルがそれを受け取るとき。それはそれらすべてを救います。または、渡された配列からモデル内に新しい配列を作成し、その新しい配列を insert_batch() 関数に渡すというオプションもあります。

$items = array();

$id = $this->input->post('id1', true);
if( $id != false ) {
    $items[] = array(
        'id'           => $id, true),
        'hotel_id'     => $hotel_id,
        'des_servicio' => $this->input->post('des_servicio1', true),
        'est_activo'   => $this->input->post('est_activo1', true)
    );
}

$id = $this->input->post('id2', true);
if( $id != false ) {
    $items[] = array(
        'id'           => $id, true),
        'hotel_id'     => $hotel_id,
        'des_servicio' => $this->input->post('des_servicio2', true),
        'est_activo'   => $this->input->post('est_activo2', true)
    );
}
....
于 2013-03-21T17:42:17.767 に答える