システム制作
教材管理システム
ページ
ソース
・learning.php
解説
50・51行:ページの取得
ここではlearningテーブルの内容を"ORDER BY id ASC"を使いidカラムの降順
(AUTO_INCREMENTを使用しているので登録順)に並べ替え、全件を取得して
変数"$recordSet"に格納しています。
67~90行:登録内容の表示
既に内容を登録していた場合、表示は次の通りになります。
このように表示内容の左上には番号があります。ですが左下には消去があるので
登録内容は消去することができることがわかります。
そこからデータベースに登録されたIDを表示しては消去をした場合に番号が
とんでしまうことから67行目に変数"$i"を設定し、繰り返しの最後である87行目
に1ずつプラスしてその内容を表示させています。この表現は"for文"でも可能です。
表示、またはダウンロード用のハイパーリンクである77~79行目ですが表示している
表示ファイル名と宛先の名前が違うことがわかります。
その理由としては登録ファイルを転送先に送る際に全角文字表現を使用すると文字化け
してしまい、結果として「登録したのに表示させることができない」という状況に
なってしまうからです。
そのために、個々が特定できるファイル名を新しく付け直す必要があるために89行目
に変更名を登録順である"$i"と現在時刻の表現である"date"を使用してつけています。
82行目には消去のリンクがあります。基本のハイパーリンクに"?"をつけることで
続けて書いている"id"をページ移動先で"$_REQUEST['id']"を使用することで受け取る
ことができ、その内容からデータベースを呼び出して消去することができます。
90行目はデータベースに登録情報がない場合表示される表現となっています。
"if"の判定内容は「データベースから引き出し、格納した変数が存在するか」でも構いませんが
個々では繰り返しの番号である"$i"を利用し、「1度も繰り返しがなかった場合」で判定しています。
21~48行
21~25行では登録するファイルの拡張子を判別しています。これはもともとのファイル名
のまま登録することができるならば判別の必要はありませんが、ファイル名を変更しなければ
ならないため必要になっています。
正規表現を使用してファイル名の後部5文字または4の表現が".(ドット)w{○}(○内は文字数)"
である場合に判別した部分を変数"$ext"に入力して登録時に使用しています。
31行目から48行目までの間にこれまでとは違う処理をしている個所はファイルの変更名です。
36行目では変更後のファイル名をデータベースに登録しています。そのため89行目で新しく
作られた名前と拡張子判別のための"$ext"を合わせることで拡張子を持った名前にして登録しています。
ファイルの転送では転送時にファイル名を変更するため、確実にデータベースに登録した内容と
合わせなければファイルを表示することができなくなってしまいます。