私はMoodleに取り組んでいますが、私の知識が不足しているため、php-mysql関連の疑問が複雑になっています。
出力を正常に返すクエリがあります。IF-ELSe条件を使用して、文字列を含むフィールドの1つと数値を含むフィールドの1つの組み合わせがあるかどうかを確認する必要があります。
私がチェックしているフィールドは、データベーステーブルで次のタイプです。
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より大きい値の組み合わせである条件をチェックしている場合でも、すべてのレコードに対して「Score」が出力され、他のレコードには表示されないことがわかります。部。
理想的には、私が楽しみにしている出力は次のようなものです。
理想的な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部分に入ることになります。
何が起こっているかについての推測。前もって感謝します