7章のクイズ ================================================================================ 6章のクイズを、Smartyを使って再構築する。 1. コーステーブルのすべてのデータのリストを表示する PHPプログラム。 2. スケジュールテーブルで、指定したスタッフの スケジュールだけを表示するPHPプログラム。 (オプション) スタッフの指定は、$_GET['code']で受け取るようにする。 3. スタッフの名前が選択リストとして表示されるようにする。 (ヒント) 選択リストのタグ 4. コーステーブルで、指定したコースの価格を変更するPHPプログラム。 変更したのち、コーステーブル全体を表示する。 (オプション) コースコードと変更価格を、パラメーターで受け取れるようにする。 5. クイズ4に渡すデータを入力するためのHTMLを組立てるPHPプログラム。 ■1. □smartyquiz1.php --- 接続失敗

"; exit(); } $sql = "SELECT * FROM course;"; $ret = $cn->query($sql); if(DB::isError($ret)){ echo "

データ取得失敗

"; exit(); } //2次元配列化 $data = array(); while ($row = $ret->fetchRow(DB_FETCHMODE_ASSOC)) { $data[] = $row; } //配列をテンプレートへアサイン $tpl = new Smarty; $tpl->assign("data", $data); $tpl->display("smartyquiz1.tpl"); ?> --- □templates/smartyquiz1.tpl --- {foreach from=$data item=item} {/foreach}
code title price
{$item.code} {$item.title} {$item.price}
--- ■2. □smartyquiz2.php --- 接続失敗

"; exit(); } // パラメーターを取得 if (!isset($_GET['staff'])) { print "パラメーターstaffを指定してください。"; exit(); } $staff_code = $_GET['staff']; // SQL文を実行 $sql = "SELECT code, course, staff, start_date, end_date FROM schedule WHERE staff = $staff_code "; $ret = $cn->query($sql); if(DB::isError($ret)){ echo "

データ取得失敗

"; exit(); } //2次元配列化 $data = array(); while ($row = $ret->fetchRow(DB_FETCHMODE_ASSOC)) { $data[] = $row; } //配列をテンプレートへアサイン $tpl = new Smarty; $tpl->assign("data", $data); $tpl->display("smartyquiz2.tpl"); ?> --- □templates/smartyquiz2.tpl --- {if count($data) < 1} データがありません。 {else} {foreach from=$data item=item} {/foreach}
コード コースコード スタッフコード 開始日 終了日
{$item.code} {$item.course} {$item.staff} {$item.start_date} {$item.end_date}
{/if} --- ■2a. □smartyquiz2a.php --- 接続失敗

"; exit(); } // パラメーターを取得 if (!isset($_GET['staff'])) { print "パラメーターstaffを指定してください。"; exit(); } $staff_code = $_GET['staff']; // SQL文を実行 $sql = "SELECT schedule.code, schedule.course, course.title, schedule.staff, staff.name, schedule.start_date, schedule.end_date FROM schedule, course, staff WHERE schedule.course = course.code AND schedule.staff = staff.code AND staff = $staff_code "; $ret = $cn->query($sql); if(DB::isError($ret)){ echo "

データ取得失敗

"; exit(); } //2次元配列化 $data = array(); while ($row = $ret->fetchRow(DB_FETCHMODE_ASSOC)) { $data[] = $row; } //配列をテンプレートへアサイン $tpl = new Smarty; $tpl->assign("data", $data); $tpl->display("smartyquiz2a.tpl"); ?> --- □templates/smartyquiz2a.tpl --- {if count($data) < 1} データがありません。 {else} {foreach from=$data item=item} {/foreach}
コード コースコード コース名名 スタッフコード スタッフ名 開始日 終了日
{$item.code} {$item.course} {$item.title} {$item.staff} {$item.name} {$item.start_date} {$item.end_date}
{/if} --- ■3. □smartyquiz3.php --- 接続失敗

"; exit(); } $sql = "SELECT * FROM staff ORDER BY name;"; $ret = $cn->query($sql); if(DB::isError($ret)){ echo "

データ取得失敗

"; exit(); } //2次元配列化 for($i=0;$i<$ret->numRows(); $i++){ $data[] = $ret->fetchRow(DB_FETCHMODE_ASSOC); } //配列をテンプレートへアサイン $tpl = new Smarty; $tpl->assign("data", $data); $tpl->display("smartyquiz3.tpl"); ?> --- □templates/smartyquiz3.tpl ---
--- ■4. □smartyquiz4.php --- 接続失敗

"; exit(); } // パラメーターを取得 if (!isset($_POST['course'])) { print "パラメーターcourseを指定してください。"; exit(); } $course_code = $_POST['course']; if (!isset($_POST['price'])) { print "パラメーターpriceを指定してください。"; exit(); } $price = $_POST['price']; $sql = "UPDATE course SET price = $price WHERE code = $course_code "; $ret = $cn->query($sql); if(DB::isError($ret)){ echo "

データ変更失敗

"; exit(); } $sql = "SELECT * FROM course;"; $ret = $cn->query($sql); if(DB::isError($ret)){ echo "

データ取得失敗

"; exit(); } //2次元配列化 $data = array(); while ($row = $ret->fetchRow(DB_FETCHMODE_ASSOC)) { $data[] = $row; } //配列をテンプレートへアサイン $tpl = new Smarty; $tpl->assign("data", $data); $tpl->display("smartyquiz1.tpl"); ?> --- ■5. □smartyquiz5.php --- 接続失敗

"; exit(); } $sql = "SELECT * FROM course;"; $ret = $cn->query($sql); if(DB::isError($ret)){ echo "

データ取得失敗

"; exit(); } //2次元配列化 $data = array(); while ($row = $ret->fetchRow(DB_FETCHMODE_ASSOC)) { $data[] = $row; } //配列をテンプレートへアサイン $tpl = new Smarty; $tpl->assign("data", $data); $tpl->display("smartyquiz5.tpl"); ?> --- □templates/smartyquiz5.tpl ---
を次の価格に変更します。
---