2011-08-10 22 views
0

我工作的一個代碼,測驗考試,在這裏數據比較失敗,即使該值是相同

  function run($id){ 
      //Is this the first question ? 
      if($this->data){ 
       $question_no = $this->Session->read('Test.qno'); //0 
       $last_answer = $this->Session->read('Test.last_answer'); 
       $question_no = $question_no + 1;     //1 
       $this->Session->write('Test.qno',$question_no); //Test.qno = 1 
       $this->Session->setFlash('last_answer'.$this->data['Test']['answer']); 
       $this->redirect($this->referer()); 

       if($this->data['Test']['answer']==$last_answer){ 
        $score = $this->Session->read('Test.score'); 
        $score = $score + 1 ; 
        $this->Session->write('Test.score',$score); 
        $this->Session->setFlash('Correct answer'); 
       } 
      } 

      $question_no = $this->Session->read('Test.qno'); //question_no = 
      if(!$question_no){ 
       $question_no = 0; 
       $this->Session->write('Test.qno',$question_no); 
       $this->Session->write('Test.score',0); 
      } 
      $question = $this->Test->Question->find('first',array('conditions'=>array('Question.test_id ='=>$id),'offset'=>$question_no)); 
      $answer = $question['Question']['answer']; 
      $this->Session->write('Test.last_answer',$answer); 
      if(empty($question)){ 
       $score = $this->Session->read('Test.score'); 
       $this->Session->setFlash('Your Score is '.$score); 
       $this->Session->write('Test.qno',0); 
       $this->redirect(array('controller'=>'States','action'=>'index')); 
       } 
      else{ 
       $this->set(compact('question')); 
       } 
     } 

這裏,即使他們都持有相同的值可以有一個人告訴我,爲什麼數據比較失敗,這裏$ last_answer從會話中檢索並保存一個數字。

這個 - $>數據[ '測試'] [ '答案']從形式採取單選按鈕的

+1

您還應該發佈設置'$ last_answer'的位置和方式。 – Ross

+0

Ross我已經發布了完整的代碼 –

+0

在比較之前試用[trimming](http://php.net/trim)兩個變量 – Ross

回答

0

添加

debug('"'.$this->data['Test']['answer'].'"'); 
debug('"'.$last_answer.'"'); 

,以確認他們真的是相同的。

還要確保它不會出現會話問題(即條件爲真,但裏面的代碼沒有做任何事情):在if塊中添加debug("true");並確認您看到該消息。

UPDATE看到整個代碼之後:

你如果塊前右有$this->redirect()!當然,最初發布的代碼不會執行任何操作,因爲在執行完成之前將用戶重定向到另一頁

+0

你爲什麼要把它們包裝在'''''' – Dunhamzzz

+1

@Dunhamzzz中:確認有沒有尾隨空格(「foo」vs「foo」) – JJJ

+0

@juhana我沒有看到任何消息 –