システムのバグ

班の人に聞いたりしてみると、幾つか大きすぎるバグが出ちゃってたので、数時間掛けて修正しました。

  1. 担当教員の検索が出来ない
  2. 講義名の検索が出来ない
  1. 担当教員の検索が出来ないのは、当たり前でした。シラバスというエンティティの中に担当教員名があるのではなく、教師というエンティティにあるので、当然、教師と言うテーブルも参照していなければならなかったわけです。
  2. 講義名の検索が出来ないのは、上と同じ現象でした。

とりあえず、これらを改善すべく・・・SQLのことをよくわかっていなかったので、ごにょごにょやって、フラグ3つぐらいつけたり、色々していて、結局、ものすごくシンプルで良かったです(笑)

検索条件が入力されているか確認して…

if(isset($_POST[kamokumei]) && ($_POST[kamokumei] != "")){
	$kamokumei="subject.kamoku_name=\"".$_POST[kamokumei]."\" AND ";
	$jouken .= $kamokumei;
}


if(isset($_POST[gakubu]) && ($_POST[gakubu] != "")){
	$gakubu = "syllabus.gakubu=\"".$_POST[gakubu]."\" AND ";
	$jouken .= $gakubu;
}


if(isset($_POST[gakka]) && ($_POST[gakka] != "")){
	$gakka="syllabus.gakka=\"".$_POST[gakka]."\" AND ";
	$jouken .= $gakka;
}



if(isset($_POST[tantou]) && ($_POST[tantou] != "")){
	$tantou = "professor.t_name=\"".$_POST[tantou]."\" AND ";
	$jouken .= $tantou;
}


if(isset($_POST[gakki]) && ($_POST[gakki] != "")){
	echo $_POST[gakki];
	$gakki = "syllabus.gakki=\"".$_POST[gakki]."\" AND ";
	$jouken .= $gakki;
}

if(isset($_POST[youbi]) && ($_POST[youbi] != "")){
	$youbi="syllabus.youbi=\"".$_POST[youbi]."\" AND ";
	$jouken .= $youbi;
}

if(isset($_POST[koma]) && ($_POST[koma] != "")){
	$koma="syllabus.koma=".$_POST[koma]." AND ";
	$jouken .= $koma;
}

入力された検索結果をSQL文とくっつけます…

//SQL文 
$sql = "SELECT syllabus.kamoku_num, subject.kamoku_name, 
professor.t_name, syllabus.youbi, syllabus.koma FROM syllabus, subject, 
professor, charge WHERE syllabus.kamoku_num = subject.kamoku_num AND 
charge.kamoku_num = subject.kamoku_num AND professor.t_num = 
charge.t_num AND $jouken;";

お決まりの、ANDを抜く作業も忘れずに…

//if文の条件分岐上、最後にANDが入ってしまうので取り除くため
$sql=str_replace("AND ;",";",$sql);

はい!これでできあがりー