12.
兩個資料表的結合

一、 將班級資料做成選單
- 語法:
select `class_sn`, `subject`, `class_name`, `teacher` FROM `tncomu_class` WHERE `access`='1' and `seme`='現在的學期' order by `subject`
- 問題一:「現在的學期」該怎麼抓呢?
- 做成選單:
$opt="<select name='class_sn'>";
while(list($class_sn , $subject, $class_name, $ teacher) = mysql_fetch_row($result)){
$selected=($default_class_sn==$class_sn)?"selected":"";
$opt.="<option value='{$class_sn}' $selected> {$class_name} </option>";
}
$opt.="</select>";
二、 取得「現在的學期」
- 學期:991、992、1001、1002、1011、1012,即「民國年+學期」
- 如何抓到民國年?民國年=西元年-1911
- 如何抓到西元年?date("Y")
- 如何抓到學期?第1學期=「今年3月8月」;第2學期=「今年9月到隔年2月」
- 如何抓到月?date("n")
if($月<=2){
$seme=去年第2學期;
}elseif($月>=3 and $月<=8){
$seme=今年第1學期;
}else{
$seme=今年第2學期;
}
- date()完整用法:http://www.php.net/manual/zh/function.date.php
三、 如何一次讀取兩個資料表
- 文章表(tncomu_article)中有個欄位class_sn對應到班級表(tncomu_class)中的class_sn,如何讀出文章時順便取出班級名稱?
- 語法:
select a.* , b.`class_name`
from `tncomu_article` as a left join `tncomu_class` as b
on a.`class_sn`=b.`class_sn`
where a.seme='本學期' and a.`enable`='1'
- 「left join」代表以左邊為主,順便到右邊撈撈看有無指定的資料。
- 「right join」代表以右邊為主,順便到左邊撈撈看有無指定的資料。
- 「join」代表兩邊都要同時有資料,否則該筆資料不會出現。