後々に追加、更新、削除を実行する「.php」ファイルをそれぞれ作成するとして、問題はどうやって対象となるレコードの情報を各プログラムに伝えるかです。
そこで更新、削除用にはパラメータを含むリンクを用意し、URLで情報を伝えます。また追加用にはフォームを用意し、POSTメソッドで情報を伝えることにします。
難しそうですが、プログラムを実行してみるとイメージできるので大丈夫です。
今回は全体的な画面構成を作ることに専念したいので、実際に追加、更新、削除を実行するプログラムは省いています。
【1】sample101 フォルダをコピーして sample102 フォルダを作成します。
【2】select.php を変更します。
*「\」はWindowsではエンマークのことです。
保存先 C:\phpdev\www\test\sample102
ファイル名 select.php
<?php
$url = "localhost";
$user = "root";
$pass = "";
$db = "SampleDB050";
// MySQLへ接続する
$link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。");
// データベースを選択する
$sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。");
// クエリを送信する
$sql = "SELECT * FROM T01Prefecture";
$result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);
//結果セットの行数を取得する
$rows = mysql_num_rows($result);
//表示するデータを作成
if($rows){
while($row = mysql_fetch_array($result)) {
$tempHtml .= "<tr>";
$tempHtml .= "<td>".$row["PREF_CD"]."</td><td>".$row["PREF_NAME"]."</td>";
$tempHtml .= "<td><a href=\"update.php?cd=".$row["PREF_CD"]."\" target=\"_self\">更新</a></td>";
$tempHtml .= "<td><a href=\"delete.php?cd=".$row["PREF_CD"]."\" target=\"_self\">削除</a></td>";
$tempHtml .= "</tr>\n";
}
$msg = $rows."件のデータがあります。";
}else{
$msg = "データがありません。";
}
//結果保持用メモリを開放する
mysql_free_result($result);
// MySQLへの接続を閉じる
mysql_close($link) or die("MySQL切断に失敗しました。");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
<title>全件表示</title>
</head>
<body>
<h3>全件表示</h3>
<?= $msg ?>
<table width = "300" border = "1">
<tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td><td colspan="2">EDIT</td></tr>
<?= $tempHtml ?>
<form action="insert.php" method="post">
<tr>
<td><input type="text" name="cd"></td>
<td><input type="text" name="name"></td>
<td colspan="2">
<input type="submit" name="submit" value="追加"><input type="reset" value="リセット">
</td>
</tr>
</form>
</table>
</body>
</html>
【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。
準備ができたら作成したPHPプログラムを実行してみましょう。
【4】ブラウザのアドレスに http://localhost/test/sample102/select.php と入力し、実行します。
【5】select.php の画面で、以下のように表示されたら成功です。
・各レコードごとに「更新」、「削除」リンクがある
・最後のレコードの下に、「追加」フォームがある
【6】「更新」リンクにマウスのカーソルを合わせる(クリックはしない)と、ブラウザのステータスバーに、パラメータ(?cd=1)を含んだリンク先が表示されます。
クリックするとまだリンク先のページが存在しないため、エラーが表示されます。アドレスにはパラメータが含まれていることがわかります。
【7】同様に「削除」リンクでもリンク先が表示されることを確認してください。
【解説】
(1)列見出しの「EDIT」を表示している部分です。colspanで2つのセルを結合しています。
<td colspan="2">EDIT</td>
(2)「更新」リンクを作成している部分です。パラメータの値として、データベースから取得したPREF_CDを指定しているところがポイントです。
$tempHtml .= "<td><a href=\"update.php?cd=".$row["PREF_CD"]."\" target=\"_self\">更新</a></td>";
*「\」はWindowsではエンマークのことで、「"」をエスケープしています。
(3)同様に「削除」リンクを作成している部分です。
$tempHtml .= "<td><a href=\"delete.php?cd=".$row["PREF_CD"]."\" target=\"_self\">削除</a></td>";
(4)テーブルの幅と罫線は適当なサイズに調整します。
<table width = "300" border = "1">
(5)「追加」フォームを作成している部分です。
<form action="insert.php" method="post">
<tr>
<td><input type="text" name="cd"></td>
<td><input type="text" name="name"></td>
<td colspan="2">
<input type="submit" name="submit" value="追加"><input type="reset" value="リセット">
</td>
</tr>
</form>
table の中に form があり、さらにその中に tr、td があるので分かり難いですが、最後のレコードの下に、上手く追加フォームを表示したいのでこのような書き方になりました。
逆にtr、td の中に form を書くと少しレイアウトが崩れます。
form の action が「insert.php」に、method が「post」となっている点も注目してください。これは追加ボタンを押したときに呼び出すプログラムと、フォーム上のデータの渡し方です。