0

codeigniterは初めてで、ユーザーフォームからチェックされた行を更新することに頭を悩ませようとしています。

私のビューは、以下のようにMySQLデータを含むフォームを生成します。

<?php 
    echo form_open('masterdata/update_customers');
?>

<table>
    <tr>
        td>&nbsp;</td><td>Customer Name</td><td>postalcode</td>
    <tr>

<?php if(isset($records)) : foreach ($records as $row) : ?>
    <tr>
        <td>
            <input type=checkbox name="editcustomer[]" id="editcustomer[]" value="<?php echo $row->id ?>">
        </td>
        <td>
            <input type="text" name="customername_<?php echo $row->id ?>" id="customername_<?php echo $row->id ?>" value="<?php echo $row->customer_name ; ?>" >
        </td>
        <td>
            <input type="text" name="postalcode_<?php echo $row->id ?>" id="postalcode_<?php echo $row->id ?>" value="<?php echo $row->postalcode ; ?>" >
        </td>
    </tr>
<?php endforeach ; ?>
    </table>
<input type="submit" value="Update Selected">
<?php else : ?>
<h2> No Records Found</h2>
<?php endif; ?>
<?php echo form_close(); ?>

これは、すべての入力フィールドに固有の名前と値を取得するため、完全に機能します。

私の問題は、選択したチェックボックスとそこにある値をcodeigniterに渡して、各行を更新するようにしようとしているところです。

伝統的に私は使用してforeach($_POST['editcustomer'] as $editcustomer){いましたが、codeigniterでこれを回避することはできません。

私のコントローラー機能はupdate_customers、この段階では非常に基本的です。

function update_customers()
    {

        $this->form_validation->set_rules("customer_name","`Customer Name`","required|min_length[6]|xss_clean");
        $this->form_validation->set_rules("postalcode","`Postal Code`","required|xss_clean|min_length[6]");


        if ($this->form_validation->run() == FALSE){
            $data["message"]="";

            $data['title']="Master Data Home Page";
            $this->load->view("master_data/view_master_data_header",$data);
            $this->load->view("master_data/view_master_data_nav");
            $this->load->view("master_data/view_content_master_data_manage_customers");
            $this->load->view("master_data/view_master_data_footer");
        } else {

        $data = array(
            'customer_name' =>  $this->input->post('customer_name'),
            'postalcode' =>  $this->input->post('postalcode'),
            );

        $this->model_master_data->update_customer_records($data);

        $this->customers_updated();
        }
    }

私のモデル関数update_customer_recordsは次のとおりです。

function update_customer_records($data)
{

        $this->db->where('id',$this->input->post('id'));
    $this->db->update('customers',$data);


}

チェックされた行のみを処理するなど、ここにはかなりの欠落があることを私は知っています。しかし、これを追加する方法がわかりません。次に、私の見解によると、私の一意の名前とIDが生成されています。 name="customername_<?php echo $row->id ?>" id="customername_<?php echo $row->id ?>"

一意のフォーム入力名に更新を適用するにはどうすればよいですか?input-> post(?)値にプレフィックスcustomername_とpostalcode_を追加する必要がありますか?

ここでの指示や支援をいただければ幸いです。事前に百万に感謝します。

4

1 に答える 1

1

CodeIgniterでは、チェックボックスの値を取得する必要がある場合は、$ this-> input-> post('name_of_your_checkbox')を使用する必要があります。配列を返します。

たとえば、ビューにそれがある場合:

<input type="checkbox" name="editcustomer[]" value="1" />
<input type="checkbox" name="editcustomer[]" value="2" />
<input type="checkbox" name="editcustomer[]" value="3" />

コントローラから:

public function update_customers() {

    $editcustomer = $this->input->post('editcustomer');

}

戻る:

Array {
    [0] => 1
    [1] => 2
    [2] => 3
}
于 2013-03-02T16:03:14.097 に答える