2017-08-27 22 views
0

錯誤,我在我的代碼獲得error:Undefined variable: error未定義的變量:在現場加入到數據庫

  public function add(){ 
    $this->polls_model->rules = Pf::event()->trigger("filter","polls-adding-validation-rule",$this->polls_model->rules); 

    $template = null; 
    $template = Pf::event()->trigger("filter","polls-add-template",$template); 
    if ($this->request->is_post()){ 
     $data = array(); 
     $data["polls_question"] = $this->post->{"polls_question"}; 
     $data["polls_pubdate"] = str_to_mysqldate($this->post->{"polls_pubdate"},$this->polls_model->elements_value["polls_pubdate"],"Y-m-d H:i:s"); 
     $data["polls_unpubdate"] = str_to_mysqldate($this->post->{"polls_unpubdate"},$this->polls_model->elements_value["polls_unpubdate"],"Y-m-d H:i:s"); 
     if (is_array($this->post->{"polls_status"})){ 
      $data["polls_status"] = implode(",",$this->post->{"polls_status"}); 
     }else{ 
      $data["polls_status"] = $this->post->{"polls_status"}; 
     } 
     $port_answer = isset($this->post->{"answer"}) ? $this->post->{"answer"} : array(); 
     $data = Pf::event()->trigger("filter","polls-post-data",$data); 
     $data = Pf::event()->trigger("filter","polls-adding-post-data",$data); 
     $var = array(); 
     $pollq_multiple_yes = intval($this->post->{'pollq_multiple_yes'}); 
     $data['polls_multiple'] = 0; 
     if ($pollq_multiple_yes == 1) { 
      if(intval($this->post->{'pollq_multiple'}) > count($port_answer)){ 
       $data['polls_multiple'] = 1; 
      }else{ 
       $data['polls_multiple'] = intval($this->post->{'pollq_multiple'}); 
      } 
     } else { 
      $data['polls_multiple'] = 1; 
     } 
     //debug($data); 
     Pf::database()->query('START TRANSACTION'); 
     $inserted = $this->polls_model->insert($data); 
     if($inserted === false){ 
      Pf::database()->query('ROLLBACK'); 
     }else{ 
      $new_id = $this->polls_model->insert_id(); 
      $insert_meta = true; 
      if(count($port_answer) > 0){ 
       $custom = array(); 
       $int = count($port_answer); 
       for ($i = 0; $i < $int ; $i++) { 
        if(!empty($port_answer[$i])){ 
         $custom = array(
           'pollsa_qid' => $new_id, 
           'pollsa_answers' => e($port_answer[$i]), 
         ); 
        } 
        $insert_meta = $this->answers_model->insert($custom); 
       } 
       if($insert_meta === false){ 
        Pf::database()->query('ROLLBACK'); 

       }else{ 
        Pf::database()->query('COMMIT'); 
       } 
      } 
      Pf::database()->query('COMMIT'); 
     } 
     $errors = Pf::validator()->get_readable_errors(false); 
     foreach ($errors as $key => $value) { 
      $error[$key][0] = $errors[$key][0]; 
     } 

     $this->view->errors = $error; // error here! 
     $var['content'] = $this->view->fetch($template); 
     if (count($error) > 0){// and here!!! 
      $var['error'] = 1; 
     }else{ 
      Pf::event()->trigger("action","polls-add-successfully",$this->polls_model->insert_id(),$data); 
      $var['error'] = 0; 
      $var['url'] = admin_url($this->action.'=index&ajax=&id=&token='); 
     } 

     echo json_encode($var); 
    }else{ 

     $this->view->render($template); 
    } 
} 

我編輯的代碼,添加功能代碼。

這是我的添加功能,如果我想添加投票答案。

它給我這個錯誤,我的日誌。

我發現這個教程Undefined Variable error in View

我GOOGLE了,但沒有發現什麼特別的東西可以幫助我。

+1

您正在處理存在的'$ error'變量。你應該先定義它。 – insider

+0

@insider我已更新我的帖子。我有變數。 – Faceit

+3

即使在編輯之後,仍然缺少'$ error'變量的定義。由於錯誤在foreach之下,我會說'$ errors'變量是空的,所以foreach被跳過。否則,你會在foreach循環中得到相同的錯誤。 – insider

回答

0

以數組形式啓動變量。 因爲如果$ error是空的,編譯器會將它看作一個數組。 如果沒有,它會得到一個錯誤。

$error = []; 

    $errors = Pf::validator()->get_readable_errors(false); 
       foreach ($errors as $key => $value) { 
        // $error[$key][0] = $errors[$key][0]; 
        // the right way is below 
        // i actually dont know what you want to do but this is the right way   
        // but providing [0] will make it some how constant. 
        $error[$key] = $errors[$key] 
       } 
       $this->view->errors = $error; // error showing here! 
       $var['content'] = $this->view->fetch($template); 
       if (count($error) > 0){ // and here??? 
        $var['error'] = 1; 
       }else{ 
        Pf::event()->trigger("action","polls-add-successfully",$this->polls_model->insert_id(),$data); 
        $var['error'] = 0; 
        $var['url'] = admin_url($this->action.'=index&ajax=&id=&token='); 
       } 
+0

它看起來像循環內的二維數組,所以一維數組可能會拋出另一個錯誤。 – insider

+0

@insider它無論是二維數組還是?至少它會給他一些洞察力 –

+0

我的不好,沒想到PHP是那個「聰明」,並且處理2個陣列的indecies作爲2D陣列,即使它被定義爲1D。 null上的基本索引在PHP中創建一個數組:O – insider