2014-04-03 50 views
0

我有兩個課程的學校數據庫,每個課程有12個可能的主題字段(co_subj...),可以包含主題ID或NULL,在這種情況下,課程ID 1有3個科目,而課程2只有1個:PHP SELECT循環

Courses

我需要PHP創建一個過程中發現的每個主題一個<div>,並且不產生任何在任何情況下,NULL。 Querys:

$select = mysql_query("SELECT * FROM course_conf JOIN course_type ON ct_id=co_fk_ct_id ORDER BY co_name"); 

然後一會兒讓PHP檢查每門課程的領域:

while($registroBbdd = mysql_fetch_array($select)) 
       { 
        $class=""; 
        $courseId=$registroBbdd['co_id']; 
        $courseName=$registroBbdd['co_name']; 
        $courseType=$registroBbdd['ct_name']; 

的疑問來,現在,要解決的最有效的方式<div>創建我前面提到的。我覺得要解決這個問題的唯一途徑是創造條件「IF」結構打印,如果找到一個值,並沒有什麼,如果NULL被發現,像這樣:

if($registroBbdd['co_subj1'] != NULL){ 
    echo "<div>'.$registroBbdd['co_subj1'].'</div>} 
else if ($registroBbdd['co_subj2'] != NULL){ 
    echo "<div>'.$registroBbdd['co_subj2'].'</div>} 
.............} 

有任何循環方式,使這個?爲了避免整個「如果」結構的創建。

回答

1

你可以有SQL語句做的工作。例如:

SELECT *, (CASE WHEN co_subj1 IS NOT NULL THEN co_subj1 ELSE co_subj2 END) AS subject 
FROM course_conf JOIN course_type ON ct_id=co_fk_ct_id ORDER BY co_name 
WHERE co_subj1 IS NOT NULL OR co_subj2 IS NOT NULL 
+2

或者,** ** IFNULL(co_subj1,co_subj2)AS主題** ** – spencer7593

+0

謝謝你的幫助,終於帶着一個循環。 – Biomehanika

+2

IFNULL非常簡潔。我失去了跟蹤哪些SQL版本和方言支持什麼,但那個人的ubuquitous,對嗎? @Biomehanika,我認爲它更快,更易於維護,用更少的代碼讓SQL語句以您想要的方式準備結果。也許試試吧! – RobP

2

怎麼樣通過環路與isset嘗試了($ registroBbdd [ 'co_subj' + $ i])

+0

我準備試試這個,非常感謝。 – Biomehanika