校内施設予約システム
校内施設予約システムとは大げさな名前。ホワイトボードや、ノートに書いてきた場所とりをweb上で実現したもの。自分の机の上から座ったまま場所取りができる怠け者の管理者にはぴったりのシステム。年度末にMySQLのデータを某表計算ソフトに落とせば、年間の利用実績もわかるというおまけつき。ああ、なんという怠け者。。という意図で開発を始めたが、ある程度形ができると飽きてしまって、中途半端なままです。どなたか完成させてやってください。自分の職場ではこのまま便利に使っていますので、とりあえず、場所とりくんVer.0.01と命名しよう(笑)
CAUTION!注意
このスクリプトは、PHP初心者である管理者casterがPHPとMySQLの自習のために作ったもので、その内容は不完全きわまりないものです。XSS対策など、セキュリティ対策は何一つ無く、たとえあなたのPC上でこのスクリプトが動いたとしても、それは単なる偶然にすぎません。したがって、次のような注意をお願いします。
(1)セキュリティが確保され、かつ、悪意のあるユーザーのいないLAN内で使うこと。 (2)内容がいかに不完全でも、決して罵倒のメールなどを送りつけないこと。 (3)使った感想や、修正したスクリプトを作ってくださった方(そんな奇特な人はいないか。。)はメールをください。
データベースを作る
- あらかじめMySQLにデータベースを作っておく。phpMyAdminで次のようになっていればよい。なお、table名は"cproomdb"とする。
PHPスクリプト
roomtest.phpとroomtest2.php。この2つをサーバーに送るだけ。
- roomtest.php
<html> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=euc-jp"> <META HTTP-EQUIV="Pragme" CONTENT="no-cache"> <TITLE>roomtest.php</TITLE> </HEAD> <body> <BODY BGCOLOR="#FFFF99"> <? //データベースに接続(MySQLのユーザーmysql userのパス:mysql pass word) if(!$con=mysql_connect("localhost","mysql user","mysql pass word")) { echo "データベースに接続を失敗しました。"; exit; } //データベースdatabase nameを選択 if(!mysql_select_db("database name",$con)) { echo "データベースを選択できませんでした。"; exit; } //////////////////////////////////テーブル//////////////////////////// echo "<BIG>校内施設予約</BIG>"; echo " (変更が反映されない場合はブラウザで再読み込みをしてください)"; echo "<hr>"; echo "<table border=1>"; echo "<tr bgcolor='#99FFAA'>"; echo "<td>年月日</td>"; echo "<td>曜日</td>"; echo "<td>1時間目</td>"; echo "<td>2時間目</td>"; echo "<td>3時間目</td>"; echo "<td>4時間目</td>"; echo "<td>5時間目</td>"; echo "<td>6時間目</td>"; echo "</tr>"; echo "<form action='roomtest2.php' method='post'>"; for ($d=1;$d<13;$d++){ echo "<tr>"; $utime=time()+($d-1)*86400; $uday = date("y.m.d",$utime); if (date("w",$utime)==0) $week="日曜日"; if (date("w",$utime)==1) $week="月曜日"; if (date("w",$utime)==2) $week="火曜日"; if (date("w",$utime)==3) $week="水曜日"; if (date("w",$utime)==4) $week="木曜日"; if (date("w",$utime)==5) $week="金曜日"; if (date("w",$utime)==6) $week="土曜日"; if (date("w",$utime)==0){ echo "<td bgcolor='#ff9999'>".$uday."</td>"; echo "<td bgcolor='#ff9999'>".$week."</td>"; } elseif (date("w",$utime)==6){ echo "<td bgcolor='#999999'>".$uday."</td>"; echo "<td bgcolor='#999999'>".$week."</td>"; } else{ echo "<td>".$uday."</td>"; echo "<td>".$week."</td>"; for ($i=1;$i<7;$i++){ //ここから1コマの中の表示処理 echo "<td>"; $rsv = $i+$d*10; $del = 0-$i-$d*10; echo "<input type='RADIO' name='check' value='$rsv'>予"; echo "<input type='RADIO' name='check' value='$del'>解"; echo "<br><center>"; //検索条件を設定 // $jouken ="date = '$uday'"; $jouken.=" AND kouji = '$i'"; //SQL文を作成 $sql="select * from cproomdb where ".$jouken; //セレクト文を実行 if(!$res=mysql_query($sql)) { echo "セレクト時にSQL失敗しました。"; exit; } //実行結果から変数を取り出し echo "<font color='#FFFF99'>"; echo "."; echo "</font>"; while($row=mysql_fetch_array($res)){ echo "<font color='red'>"; echo $row["class"]; echo "</font>"; echo "."; echo "<font color='blue'>"; echo $row["room"]; echo "</font><br>"; } echo "<font color='#FFFF99'>"; echo "."; echo "</font>"; //結果セットの解放 mysql_free_result($res); echo "</center>"; echo "</td>"; } } echo "</tr>"; } echo "</table>"; ////////////////////////テーブルここまで///////////////////////////// echo "<hr>"; echo "ここに学級名を入力し、登録ボタンを押す"; echo "<input type='TEXT' name='class' size=10 maxlength=10 >"; echo "<select name='room' size='1'>"; echo "<option value='CP'>コンピュータ</option>"; echo "<option value='図書'>図書</option>"; echo "<option value='多目'>多目的室</option>"; echo "<option value='体館'>体育館</option>"; echo "<option value='家庭'>家庭科室</option>"; echo "</select>"; echo "<input type='submit' name='exec' value=' 登録 '>"; echo "<input type='reset' name='exec' value='やりなおし'>"; //echo "</form>"; //データベースから切断しました。 mysql_close($con); //echo "mysql_close($con)"; ?> </body> </html>
- roomtest2.php
<html> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=euc-jp"> <TITLE>校内施設予約入力処理</TITLE> </HEAD> <body> <BODY BGCOLOR="#FFFF99"> <? //データベースに接続(MySQLのユーザーmysql userのパス:mysql pass word) if(!$con=mysql_connect("localhost","mysql user","mysql pass word")) { echo "データベースに接続を失敗しました。"; exit; } //データベースdatabase nameを選択 if(!mysql_select_db("database name",$con)) { echo "データベースを選択できませんでした。"; exit; } //変数の取り出し $check = $HTTP_POST_VARS["check"]; $class = $HTTP_POST_VARS["class"]; $room = $HTTP_POST_VARS["room"]; //print_r($HTTP_POST_VARS); //登録処理 if ( $check > 0 ){ $check= abs($check); $d= floor($check/10); $i= ($check-($d*10)); $utime=time()+($d-1)*86400; $uday = date("y.m.d",$utime); //$room = "CP"; //echo $uday; //echo $i; $sql = "insert into cproomdb(date,kouji,class,room) values('$uday','$i','$class','$room')"; //echo "$sql"; if(!$res=mysql_query($sql)){ echo "インサートSQL実行時にエラーが発生しました。"; exit; } } //登録解除処理 elseif ( $check < 0 ){ $check= abs($check); $d= floor($check/10); $i= ($check-($d*10)); $utime=time()+($d-1)*86400; $uday = date("y.m.d",$utime); //$room = "CP"; //echo $uday; //echo $i; $sql = "delete from cproomdb where date ='$uday' AND kouji ='$i'"; //echo "$sql"; if(!$res=mysql_query($sql)){ echo "デリートSQL実行時にエラーが発生しました。"; exit; } } //データベースから切断しました。 mysql_close($con); //echo "mysql_close($con)"; ?> <CENTER> <BR><BR><A href="roomtest.php">登録されました</A><BR><BR> </CENTER> </body> </html>