2012-04-18 86 views
1

我正在使用Moodle,但有一個php-mysql有關的疑問,由於缺乏我的知識而變得複雜。檢查查詢返回的輸出是否包含字符串/數字

我有一個查詢返回輸出正常。使用IF-ELSe條件我需要檢查是否有包含字符串的字段之一和包含數字的字段之一的組合。

我檢查的字段在數據庫表中是以下類型。

element - varchar(255) 
value - longtext 

這是我的查詢下面所提到它返回O/P:

查詢

$scormstatus = $DB->get_records_sql("SELECT sc.*, s.name AS activityname FROM mdl_scorm_scoes_track AS sc JOIN mdl_scorm AS s ON s.id = sc.scormid WHERE sc.scormid = '" .$activityid. "' AND sc.userid = '" .$userid. "' AND sc.attempt = '".$scormattempt->attempt."'"); 
    foreach($scormstatus as $status) 
     { 
     echo "<br/>".$status->element."**".$status->value."<br/>"; 
     if(is_numeric($status->value)) 
     { 
      if($status->element = 'cmi.core.score.raw' && $status->value != '0') 
      { 
       echo "<br/>Score"; 
      }  
      else 
      { 
       if($status->element = 'x.start.time' && $status->value != '0') 
       { 
        echo "<br/>Started"; 
       } 
      } 
     } 
    } 

輸出:

  cmi.core.lesson_location**2 
     Score 

     cmi.core.lesson_status**incomplete 
     cmi.core.score.max**50 
     Score 

     cmi.core.score.min**0 
     cmi.core.score.raw**0 
     cmi.core.total_time**00:00:22.00 

     x.start.time**1334767290 
     Score 

現在,你會看到,即使雖然我正在檢查'cmi.core.score.raw'和值大於0的組合的條件,但它仍然是prin所有記錄的ts'分數',並且永遠不會進入其他部分。

理想我很期待看到的輸出是這樣的

IDEAL O/P:

 cmi.core.lesson_location**2 
    cmi.core.lesson_status**incomplete 
    cmi.core.score.max**50 
    cmi.core.score.min**0 
    cmi.core.score.raw**0 
    cmi.core.total_time**00:00:22.00 
    x.start.time**1334767290 
    Started 

我的猜測是,它不能識別的值字段,是一個數字在我的IF - ELSE情況下,因此總是最終進入錯誤的IF部分。

任何猜測正在發生的事情。由於事先

+0

也沒有必要把標籤放在標題 – SupremeDud 2012-04-18 17:35:33

+0

是啊不知道爲什麼我補充說。它現在不在。關於這個問題的任何想法? – ivn 2012-04-18 17:39:41

回答

1

此代碼:

if($status->element = 'cmi.core.score.raw' 

需要是:

if($status->element == 'cmi.core.score.raw' 

單個=是用於分配,另外兩個是==用於比較。

+0

正確的,我曾經使用過,但因爲它力量給我一個可能性的正確結果,我將它改爲單個'=',然後從未切換回它。我認爲應該讓它工作。 – ivn 2012-04-18 17:51:50

+0

它爲除了一個可能性之外的所有可能性給出正確的值。而不是'分數'它顯示'開始'與'=='如果我改變它爲'=',只是在這種情況下,它給了我正確的輸出。在這種情況下,我正在檢查'$ status-> element =='cmi.core.lesson_status''和'$ status-> value =='completed''。數據庫中的這個值仍然存在於其他部分,這是錯誤的。有任何想法嗎? – ivn 2012-04-18 18:05:23

+0

請發佈您的完整代碼,當前輸出和期望輸出 - 我無法閱讀您的想法。沒有看到你在做什麼,試着用'!=='替換'!=',以確保它沒有想到'「不完整」'和'「0」'是相同的。 – Cal 2012-04-18 19:41:26

相關問題