第15回 スケジューラーを作ろう(6) - 削除処理、ユーザー定義関数 - - PHP基礎講座
Saity先生のPHP基礎講座
Lecutures on PHP
第15回 スケジューラーを作ろう(6) - 削除処理、ユーザー定義関数 - (その1)
- さてさて、Saity先生の講座15回を始めるにしよう!
- もうすっかり寒くなってきましたねぇ

- そうだね。もうすぐクリスマスだし☆ゆきちゃんはクリスマス、どうするんだい?
- (ぎくっ)暇っていえば暇だし、忙しいっていえば忙しい、ってトコロかな?
- ん?暇なの?
- (うっ)いや、暇じゃないと言えば暇じゃないし、忙しくないといえば忙しくない、ってトコロかしら?
- (ふむ)じゃ、クリスマスは一緒に遊ぶかい?
- (えっ?)空いてるんですか?あ、実は忙しかったんだけど、Saity先生が暇と言うなら、時間を割いて一緒に遊んであげてもいいですよ??(そわそわ)
- おっと、そりゃ嬉しいねぇ。ただ、遊ぶといってもPHPのプログラミングだよ☆クリスマスは仕事仲間とコーディング大会をするんだ♪

- (げっ)あ、そういえば別の都合を思い出しちゃった!Saity先生、2人で遊べるときに、遊びましょうよ☆
- うん、2人で?そうだね。じゃ、この講座が256回までいった時に、くまちゃんを誘って打ち上げでもしようか♪
- うぅー、そうしましょう(いつになるのやら)。
スケジュールの削除画面を作ろう
- さて、下手なコントは置いておいて、まずはスケジュールの削除画面を作ろうか☆
- 下手なコント・・・。えっと、前回編集画面を作った感じからしたら、削除画面は難しくなさそうですね。

- その通り。実は前回のスケジュール編集画面をちょっと修正するだけで、スケジュールの削除画面ができちゃうんだ。この前の編集ではどんな処理をしていたか、覚えているかな?
- 確か、変更したスケジュールをファイルに書き込む際、行番号をもとにして、編集したスケジュールと同じ番号であれば新しいスケジュールを、そうでなければ以前のものを書き込んでいたわね。
- そうだったね。削除というのは、要するに特定の行のスケジュールを外す、つまり書き込まないようにする、ということだ。行を特定するためには、前回と同じで行番号を見たらいいわけさ。
- なるほどー。よっしゃ、いっちょ書いてやろうじゃないの(こりこり)。こんな感じになったわよ。
$schedule_list = file($filename);
$fp = fopen($filename, "w");
foreach ($schedule_list as $lineno => $original_line) {
if ($lineno == $_GET["lineno"]) {
// 何も書き込まない→この行を削除したと同一
} else {
fwrite($fp, $original_line);
}
}
fclose($fp);
- 完璧!簡単だった?
- そうね。私も進歩したかしら?

- うんうん。している気がする。じゃ、このコードを実装しよう!
- ファイルはどうしたらいいの?
- 今回もschedule_edit.phpを使おう。
- はーい。じゃあ、まず一覧画面は以下のようになるわね。
<?php
$filename = "C:\\Program Files\\xampp\\htdocs\\samplefile.txt";
$schedule_list = file($filename);
foreach ($schedule_list as $lineno => $line) {
list($schedule_date, $title, $body) = explode("|", $line);
print("日付:$schedule_date タイトル:$title 内容:$body");
print("<a href=\"schedule_edit.php?lineno=$lineno&
mode=edit\">編集する</a>");
print("<a href=\"schedule_edit.php?lineno=$lineno&
mode=delete\">削除する</a>");
print("<br>");
}
?>
- お、引数に「mode」を追加してるねぇ。このテクニック、どうやって見つけたんだい?
- えへっ。schedule_edit.phpに渡す情報は、これまで行番号だけで良かった訳ですよね。ただ、今回は「登録」なのか「編集」なのか「削除」なのかを明確にしないといけないと思って。
- その通り、よく気づいたね。要するに、以下のような動きにしようって事だよね。
| line_no | mode | |
|---|---|---|
| 登録時 | 指定しない | 指定しない |
| 編集時 | 編集したいスケジュールの行番号 | edit |
| 削除時 | 削除したいスケジュールの行番号 | delete |
- そうですね。そうしたら、分かりやすくなるかなーって。
- よし、じゃあschedule_edit.phpを修正しよう!
- (しょこしょこ)はい、いっちょ上がり~☆
※長くなるので、抜粋しています
if (isset($_POST["regist"])) {
/**
* ボタンが押された後の、登録・更新処理
* 中身は省略します
*/
} elseif (isset($_GET["mode"]) && $_GET["mode"] == "delete") {
// 削除処理
$schedule_list = file($filename);
$fp = fopen($filename, "w");
foreach ($schedule_list as $lineno => $original_line) {
if ($lineno == $_GET["lineno"]) {
// 何も書き込まない→この行を削除したと同一
} else {
fwrite($fp, $original_line);
}
}
fclose($fp);
header("Location: http://localhost/schedule_list.php");
exit;
} else {
/**
* 初回読み込み時の、初期化処理
* 中身は省略します
*/
}
- うん。よろしい。
- だんだんと、自分の力で作れるようになってきました!
- そろそろ一通り、満足したものを作れるようになってきたみたいだね。じゃ、この「スケジュールを作ろう」の後半では、もう少し難しい話をしていこう。
- よっしゃ~!がんばるぞ~!
- 1
- 2





ページのトップへ


GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。