0

私はphpとcodeigniterの初心者です。モデルからコントローラーにデータを渡してから表示しようとしていますが、初期化されていない変数があり、どのように初期化しますか? ここに私のコードがあります:

survaycontroller.php

    <?php
class Survaycontroller extends CI_Controller{
   // 'QID, Question, qA, qB, qC'

    function index()
    {
            $this->load->view('survay_view');

            $this->load->model('survay');
            $survay_data = $this->survay->dosurvay($Question, $qA, $qB, $qC);

            $viewData = array();
            $viewData['survay_data'] = $survay_data;
            $this->load->view(survay_view, $viewData);   
        }
}
?>

survay_view.php

</head>

<body>
    <?php form_open('index'); ?>
    <h1><?php echo $Question;?></h1>
    <?php echo $qA; ?><?php form_checkbox('qA'); ?>
    <?php echo $qB; ?><?php form_checkbox('qB');?>
    <?php echo $qC; ?><?php form_checkbox('qC'); ?>

</body>

survay.php

  <?php
class Survay extends CI_Model{

    function dosurvay($Question, $qA, $qB, $qC){
        $this->db->select('QID, Question, qA, qB, qC');
        $this->db->from('tblquestions');
        $this->db->where('Question', $Question);
        $this->db->where('qA', $qA);
        $this->db->where('qB', $qB);
        $this->db->where('qC', $qC);
         $this -> db -> limit(1);

   $query = $this -> db -> get();

   if($query -> num_rows() == 1)
   {
     return $query->result();
   }
   else
   {
     return false;
   }
 }
}
?>
4

2 に答える 2

1

コントローラーで:

function index()
    {
        //store your post form data into an array 
         $arrData = array();
         $arrData["qA"]     = $this->input->post("qAfieldName");
         $arrData["qB"]     = $this->input->post("qBfieldName");
         $arrData["qC"]     = $this->input->post("qCfieldName");
         $arrData["question"]     =  $this->input->post("questionfieldName");
         $this->load->model('survay');
         //pass data array into model          
         $survay_data = $this->survay->dosurvay($arrData);
    }

そしてモデルでは:

    function dosurvay($arrData){        
        $this->db->select('QID, Question, qA, qB, qC');
        $this->db->from('tblquestions');
        $this->db->where('Question', arrData['Question']);
        $this->db->where('qA', $arrData['qA']);
        $this->db->where('qB', $arrData['qB']);
        $this->db->where('qC', $arrData['qC']);
        $this -> db -> limit(1);

............other stuff
}
于 2013-02-25T11:47:12.193 に答える
0

変数を初期化していないため、これは問題を引き起こしている行です。

$survay_data = $this->survay->dosurvay($Question, $qA, $qB, $qC);

変数$Question, $qA, $qB, $qCが関数に渡されていないか、コード内のどこでも初期化されていません。

関数に送信する変数を定義する必要があります。

$question = 'How are you?';
$qA = 'qA';
$qB = 'qB';
$qC = 'qC';

これに加えて、ビューに 1 つの要素を持つ配列を渡しています: $viewData['survay_data']。この変数には、探している変数の配列が含まれています。むしろ、次のようにしてください。

$viewData = $survay_data;

ビュー名を引用符で囲む必要もあります。

$this->load->view('survay_view', $viewData);
于 2013-02-25T11:39:20.203 に答える