2

私が推測する単純な問題。

私のコントローラーは、を使用してURLから表示する場合を取得してい$this->uri->segment(3)ます。これは常に単一の値になります。これを配列に入れてモデルに渡します:

$customerid = array(
   'id' => $this->uri->segment(3)
);

コントローラーの構文は次のとおりです。

function confirm_delete_customer()
{
            $data['title']="Confirm Customer Deletion";

            $customerid=array(
                'id'=>$this->uri->segment(3)
                );

            //query model to get data results for form
            $data=array();

            if($query=$this->model_master_data->get_customer_records_to_delete()){
                $data['records']=$query;


            $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_confirm_customer_deletion",$data);
            $this->load->view("master_data/view_master_data_footer");



}

次に、この配列値にアクセスして、モデルに渡して処理しようとしています。配列をモデルにハードコーディングすると、次の構文に従って機能します。

モデル - 手動構文は次のとおりです。

function get_customer_records_to_delete()
{
    $query = $this->db->get_where('customers', array('id'=>43));
    return $query->result();
}

これをコントローラーのアレイに置き換えようとすると、エラーで失敗します: Undefined variable: customerid

私が働きたいモデルのアイデア:

function get_customer_records_to_delete()
{
    $query = $this->db->get_where('customers', $customerid);
    return $query->result();
}

何か小さい気がします。しかし、これはビューに出力するためにデータベースから単一のレコードを取得する最良の方法ですか?

よろしくお願いします。

4

4 に答える 4

4

そのための最良の方法は次のとおりです。

function confirm_delete_customer()
{
    $data=array();

    $data['title']="Confirm Customer Deletion";

    $customerId = $this->uri->segment(3);

    //Prevent SQL injections
    if(!is_numeric($customerId) || empty($customerId)) {
        show_error("Bad Request");
    }

    $query = $this->model_master_data->get_customer_records_to_delete($customerId);

    if ($query){
        $data['records']=$query;


        $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_confirm_customer_deletion",$data);
        $this->load->view("master_data/view_master_data_footer");

    }
}

そして、あなたは単に呼び出すことができます:

function get_customer_records_to_delete($customerId)
{
    $query = $this->db->get_where('customers', array('id'=>$customerId));
    return $query->result();
}

あなたのモデルで。

于 2013-03-03T10:51:39.697 に答える
2

アクセスできるように、値を引数として関数に渡す必要があります。

元:

get_customer_records_to_delete($customerid)
{
    // now $customerid is accessible
    $query = ....;
    return $……;
}
于 2013-03-03T10:55:03.690 に答える
2

関数パラメーターに大きく依存する必要があります。コントローラーから顧客 ID を取得し、モデルに送信します。さらに、row()データベースから単一の結果を取得するために使用できます。

コントローラー

    function confirm_delete_customer(){
    $data['title']="Confirm Customer Deletion";

    $customerid=$this->uri->segment(3);


    //query model to get data results for form
    $data=array();

    if($query=$this->model_master_data->get_customer_records_to_delete( $customerid)) //you are sending customer id as a parameter here
    $data['records']=$query;


    $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_confirm_customer_deletion",$data);
    $this->load->view("master_data/view_master_data_footer");



}}

モデル

function get_customer_records_to_delete($customerid) 
{
    $query = $this->db->get_where('customers', array("id"=>$customerid)); //you are using the customer id sent from the controller here
    return $query->row(); //this will return a single row
}
于 2013-03-03T11:01:50.800 に答える