トップページ > ZaurusSL-C3000 > MySQL > 映画データベースを作る
映画データベースを作ってみる
ZaurusSL-C3000/初期設定/ハードの設定と初期インストールその5で 「apache+PHP+MySQLでデータベースを動かす」というのを書いたが、具体的にスクリプトが記載しなかった。というのも、本の丸写しはさすがにできなかったからである。
今回、「MySQL入門以前」ISBN:4839916578の「住所録」・「何でもデータベース」を作るという章を参考にして映画データベースを作ってみた。
映画データベースは、自分の見た映画やDVDを記録するためのもので、当初ClieのHandbaseで作業していたが、Zaurusへの移行にともない現在Portabase上で実際に作成した。しかし検索スピードが遅かったりフィルターが手間取ったりするので、MySQL+PHPに移そうと考えていたので勉強がてら作ってみた。
基本的なプログラムは「MySQL入門以前」の「住所録」および「何でもデータベース」の
スクリプトをベースにしている。また、頁単位で表示するところは、サムさんのものをベースにしています。そのため、MySQLの呼び出し方やechoとprintの使い方など統一がとれていないところがあることは承知しており、そういう不統一があるのはご理解ください。
一応、選択リストとラジオボタンを活用した例となっているので、他のものを作るときは少しは参考になればと思う。データの量が少ないとあまりスピードが実感できないが、「MySQL入門以前」に添付されている人物データベース6000件を使って検索するとそのスピードが実感できると思う。
| No. | 項目内容 | フィールド名 | 属性 | 備考 |
|---|---|---|---|---|
| 0 | 連番 | id | int | 自動連番 |
| 1 | 登録日 | kyou | date | 登録した日、自動登録 |
| 2 | 題名 | name | char(100) | 邦題(/原題)のように書く |
| 3 | 媒体 | bai | char(12) | 劇場、保有・レンタル、DVD・ビデオ |
| 4 | 鑑賞日 | mita | date | 鑑賞した日「2005-5-30」という形式、半角 |
| 5 | 分類 | bun | char(40) | プルダウンジャンル別に記載 |
| 6 | 制作年 | nen | int | 4桁の整数、不明は0 |
| 7 | 制作国 | kuni | char(20) | プルダウン国名は別に記載 |
| 8 | 主演 | hito | char(200) | 全角100文字まで |
| 9 | 監督 | kan | char(100) | 全角50文字まで |
| 10 | 内容 | naka | text | 映画内容、感想など |
| 11 | 評価 | ten | int | 5段階評価半角数字で |
$ su
# mysql
Welcom......
mysql> use mydb;
Database changed
mysql> create table eiga (id int not null auto_increment,kyou date,name char(100),
mysql> bai char(12), mita date, bun char(40), nen int,
-> kuni char(20), hito char(200), kan char(100), naka text,
-> ten int,index ind1(id));
0 tab 2005-05-05 tab キャットウーマン tab SF tab 2003 tab 米 tab ・・・・ idのところはダミーで0を記入 テキストのところは改行があるときは「¥n」という記号を書き込み、当然改行せずに 続けて書く。 キャットウーマンの誕生¥nバットマンは出てこない。¥n次回作にはきっと
mysql> load data local infile '/mnt/cf/Documents/Csv_Files/eiga.txt' -> into table eiga;
mysql> select * into outfile '/mnt/cf/Documents/CSV_Files/out.txt'
-> fields enclosed by '"' terminated by ',' from eiga;
mysql> select * into outfile '/mnt/cf/Documents/CSV_Files/out.txt'
-> fields terminated by '\t' from eiga;
なお、試しに書き出してみるとテキストエリアの中の改行が¥<改行>のようなコードで変換されているようだ。もとにもどすにはエディターで(QXエディターの場合)、¥¥¥nを¥¥nに置き換えればよいようだ。
| 左フレーム | 右フレーム |
|---|---|
| 全件表示 | データが降順に並ぶ |
| データ登録 | 新規のデータ登録 |
| 一行検索 | 1つの項目について検索する。 検索されたデータには修正、削除コマンドがつく コマンドボタンから修正画面と削除画面に移る。 |
■全体の構成
なお、画像をeigaのフォルダーに置いて、テキストの欄に次のようなhtml文を記入すれば画像の表示も可能。中にimgフォルダーを作ったときは/img/52.jpgのように書けばよい。
<img src="52.jpg" width="20%">
イメージ入りの例
index.htmlとしておくとアクセスが楽。フレームは左側を20%としてみた。(10%とか15%とか変更してみたがZaurusだと変わらないようだ・・・と思ったがNetFrontのキャッシュがきつくて、画面に反映されないだけだった。)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<title>映画データベース メイン</title>
</head>
<frameset cols =" 20%,*">
<frame name ="menu" src = "e_menu2.php">
<frame name ="main" src = "e_kensaku4.php">
<noframes>
<body>
<p>フレーム対応のブラウザを使ってください</p>
</body>
</noframes>
</frameset>
</html>
左側に表示されるメニューの指定
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html lang="ja">
<head>
<title>メニュー</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
</head>
<body>
<p><a href="e_zenken1.php" target = "main">全件表示</a></p>
<p><a href="e_touroku3.php" target = "main">データ登録</a></p>
<p><a href="e_kensaku4.php" target = "main">一行検索</a></p>
<?php
//$koumokuにカテゴリーを検索したいMySQLの項目名を入れてください。
$koumoku="bun";
mysql_connect('localhost','zaurus','pass');
mysql_select_db('mydb');
$sql= "select distinct $koumoku from eiga";
$result = mysql_query($sql);
echo "<hr>\n";
echo "<select name=\"menu1\">";
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "<option value =\"".$row["$koumoku"]."\">". $row["$koumoku"] . "</option>";
}
echo "</select><br/><hr>";
?>
</body>
</html>
データ登録のフォームを作成し、入力する。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html lang="ja">
<head>
<title>映画データベース登録フォーム</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
</head>
<body>
<?php
extract($_POST);
//映画データ登録のフォーム文
//登録ボタンを押したらPOSTで出力し、e_touroku2.phpにデータを渡す
echo "
<p>データを入力してください</p>\n
<form action=\"e_touroku2.php\" method=\"post\" >\n
<p>題名:<input type=\"text\" name=\"name\" size=\"50\"></p>\n";
//ラジオボタンの設定。ただし値は見出しと同じにする
echo "<p>媒体:
<input type=\"radio\" name=\"bai\" value=\"劇場\">劇場
<input type=\"radio\" name=\"bai\" value=\"DVD\" checked>DVD
<input type=\"radio\" name=\"bai\" value=\"Video\">Video
</p>\n
<p>鑑日:<input type=\"text\" name=\"mita\" size=\"20\">半角(例 2005-05-20)</p>\n";
//選択リストの設定
echo "<p>分類:
<select name=\"bun\">
<option value=\"ヒューマン\">ヒューマン</option>
<option value=\"恋愛\">恋愛</option>
<option value=\"青春\">青春</option>
<option value=\"ファミリー向け\">ファミリー向け</option>
<option value=\"時代劇\">時代劇</option>
</select>
</p>\n
<p>制作:<input type=\"text\" name=\"nen\" size=\"10\">年</p>\n
<p>国名:
<select name=\"kuni\">
<option value=\"日\">日本</option>
<option value=\"米\">アメリカ</option>
<option value=\"仏\">フランス</option>
<option value=\"他\">その他</option>
</select>
</p>\n
<p>主演:<input type=\"text\" name=\"hito\" size=\"50\"></p>\n
<p>監督:<input type=\"text\" name=\"kan\" size=\"50\"></p>\n
<p>評価:<input type=\"text\" name=\"ten\" size=\"2\">(1〜5半角)</p>\n
<p>内容:</p>\n
<p><textarea name=\"naka\" rows=\"10\" cols=\"50\">
</textarea></p>\n
<p><input type=\"submit\" value=\"登録\">\n
<input type=\"reset\" value=\"リセット\"></p>\n
</form>\n
";
?>
</body>
</html>
登録フォームからPOSTで出力されたデータを受け取り、データベースに書き込む
それだけだと何も表示されないので、とりあえず最新2件を表示
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html lang="ja">
<head>
<title>映画データ登録</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
</head>
<body>
<?php
//e_touroku3.phpのデータを受け取る
extract($_POST);
//MySQLに接続するときの多少エラー処理を考えた記載方法
if( !$conn = mysql_connect('localhost','zaurus','pass')){
die( 'MySQL接続失敗');
}
//データベースの選択
mysql_select_db('mydb', $conn);
//今日の日付を取得して登録日($kyou)に入力
$kyou = date("y-m-d");
//受け取ったデータを映画DBに登録
$sql = "insert into eiga values(0, '$kyou', '$name',
'$bai', '$mita', '$bun', $nen, '$kuni', '$hito', '$kan', '$naka', $ten)";
mysql_query($sql);
?>
<?php
//データベースへの接続
mysql_connect('localhost','zaurus','pass');
mysql_select_db('mydb');
//eigaテーブルからid降順で最新2件を選択表示
$sql= "select * from eiga order by id desc limit 2";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
if($rows == 0){
echo "<p>該当データがありません。</p>";
}
else{
//選択したデータを1行ずつレイアウトして表示
while($row = mysql_fetch_array($result)){
echo "<p>";
echo $row["id"]," 鑑賞日 ",$row["mita"]," 登録日 ",$row["kyou"],"<br />";
echo $row["name"]," 評価: ",$row["ten"],"<br />";
echo $row["bai"]," ",$row["bun"]," ",$row["nen"],"/",$row["kuni"],"<br />";
echo "主演:",$row["hito"],"<br />";
echo "監督:",$row["kan"],"<br />";
echo nl2br($row["naka"]);
echo "</p><hr />";
}
}
?>
</body>
</html>
全件表示のスクリプト。idで降順に表示(新しいものが先頭に)
なお、nl2br($row["naka"])という部分はテキストエリアの中の改行(¥n)を<br>に変換するコマンド。これがないとテキストエリアで改行してもHTML上で改行が反映されない。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html lang="ja">
<head>
<title>映画データベース全件検索</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
</head>
<body>
<?php
//データベースへの接続
mysql_connect('localhost','zaurus','pass');
mysql_select_db('mydb');
//eigaテーブルからid降順ですべてを選択
$sql= "select * from eiga order by id desc";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
if($rows == 0){
echo "<p>該当データがありません。</p>";
}
else{
//選択したデータを1行ずつレイアウトして表示
while($row = mysql_fetch_array($result)){
echo "<p>".$row["id"]." 鑑賞日 ".$row["mita"]." 登録日 ".$row["kyou"]."<br />";
echo $row["name"]." 評価: ".$row["ten"]."<br />";
echo $row["bai"]." ".$row["bun"]." ".$row["nen"]."/".$row["kuni"]."<br />";
echo "主演:".$row["hito"]."<br />";
echo "監督:".$row["kan"]."<br />";
echo nl2br($row["naka"])."</p><hr />";
}
}
?>
</body>
</html>
前半は検索欄を作成し、検索項目をひとつ選んだあと、検索語を入力して、検索ボタンを押す。後半で検索結果を表示する。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html lang="ja">
<head>
<title>映画データベース一行検索</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
</head>
<body>
<?php
//検索ボタンを押して戻ってきたときにPOSTを取得する
extract($_POST);
//最初は$fldが定義されていない。検索ボタンを押したときに選択項目を取得
if($fld == "name"){$s01 = "selected";}
if($fld == "bun"){$s02 = "selected";}
if($fld == "hito"){$s03 = "selected";}
if($fld == "kan"){$s04 = "selected";}
if($fld == "naka"){$s05 = "selected";}
if($fld == "ten"){$s06 = "selected";}
if($fld == "id"){$s07 = "selected";}
//検索欄を作成し、検索項目を選択、検索語を入れて、検索ボタンを押すとPOSTを出力する
echo "
<form action=\"e_kensaku4.php\" method=\"post\" >\n
<p>
<select name=\"fld\">\n
<option value=\"name\" $s01>題名</option>\n
<option value=\"bun\" $s02>分類</option>\n
<option value=\"hito\" $s03>主演</option>\n
<option value=\"kan\" $s04>監督</option>\n
<option value=\"naka\" $s05>内容</option>\n
<option value=\"ten\" $s06>評価</option>\n
<option value=\"id\" $s07>連番</option>\n
</select>\n
が <input type=\"text\" name=\"nam\" value=\"$nam\" size=\"40\">
</p>\n
<p><input type=\"submit\" value=\"検索\">
<input type=\"reset\" value=\"リセット\"></p>\n
</form>\n
";
//データベースの中から検索項目に検索語が含まれているものを選択する
//後半はそれを1行ずつ表示させる
if($nam<>''){
mysql_connect('localhost','zaurus','pass');
mysql_select_db('mydb');
$sql= "select * from eiga where $fld like '%$nam%'";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
if($rows == 0){
echo "<p>該当データがありません。</p>";
}
else{
while($row = mysql_fetch_array($result)){
echo "<p>".$row["id"]." 鑑賞日 ".$row["mita"]." 登録日 ".$row["kyou"]."<br />";
echo $row["name"]." 評価: ".$row["ten"]."<br />";
echo $row["bai"]." ".$row["bun"]." ".$row["nen"]."/".$row["kuni"]."<br />";
echo "主演:".$row["hito"]."<br />";
echo "監督:".$row["kan"]."<br />";
echo nl2br($row["naka"])."</p>";
echo "<a href=\"e_shusei3.php?id=".$row["id"]."\">[このレコードを修正する] </a> ";
echo "<a href=\"e_sakujo1.php?id=".$row["id"]."\">[このレコードを削除する] </a><hr>";
}
}
}
?>
</body>
</html>
検索結果が大量にあるとNetFrontではいつまでたっても表示が終了しない可能性がある。
イラチな人は耐えられないので、一度に表示されるデータの件数を指定する方法。
通勤電車で地下探検Limitedザウルスでのデータベース構築を参考に作ってみた。
menuなどに追加するか、e_kensaku4.phpと差し替えてください。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html lang="ja">
<head>
<title>映画データベース2行検索(改ページ表示)</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
</head>
<body>
<?php
//初期設定(1頁の表示件数)
$maxl=10;
//POST GETのデータを受け取る
extract($_POST);
extract($_GET);
//検索結果表示の際に、検索欄の検索項目が初期化されるのを防ぐ
if($fld == "name"){$s01 = "selected";}
if($fld == "bun"){$s02 = "selected";}
if($fld == "hito"){$s03 = "selected";}
if($fld == "kan"){$s04 = "selected";}
if($fld == "naka"){$s05 = "selected";}
if($fld == "ten"){$s06 = "selected";}
if($fld == "id"){$s07 = "selected";}
//2項目目の検索結果表示の際に、検索欄の検索項目が初期化されるのを防ぐ
if($fld2 == "name"){$ss01 = "selected";}
if($fld2 == "bun"){$ss02 = "selected";}
if($fld2 == "hito"){$ss03 = "selected";}
if($fld2 == "kan"){$ss04 = "selected";}
if($fld2 == "naka"){$ss05 = "selected";}
if($fld2 == "ten"){$ss06 = "selected";}
if($fld2 == "id"){$ss07 = "selected";}
//検索結果表示の際の頁、行位置の設定
//GETで渡された?pageを取り出し$pageにセット
$page = $HTTP_GET_VARS["page"];
//頁数がセットされていない場合は頁数に1をセット
if ($page < 1) {
$page = 1;
}
//開始行を算出
//例えば$maxl=10、4頁目の開始行は(4−1)*10=30
//なお、0行目から始まる
$startline = ($page - 1) * $maxl;
//終了行を算出
$endline = $page * $maxl -1;
//検索フォーム表示
//最初はフォームだけの表示
//検索ボタンが押されるとPOSTで$fldと$namがセットされる
//改頁の検索が実行されるとGETで$fldと$namがセットされる
echo "
<form action=\"e_kensaku7.php\" method=\"post\" >\n
<p>
<select name=\"fld\">
<option value=\"name\" $s01>題名</option>\n
<option value=\"bun\" $s02>分類</option>\n
<option value=\"hito\" $s03>主演</option>\n
<option value=\"kan\" $s04>監督</option>\n
<option value=\"naka\" $s05>内容</option>\n
<option value=\"ten\" $s06>評価</option>\n
<option value=\"id\" $s07>連番</option>\n
</select>\n
が <input type=\"text\" name=\"nam\" value=\"$nam\" size=\"40\">
</p>\n
<p>
<select name=\"fld2\">
<option value=\"name\" $ss01>題名</option>\n
<option value=\"bun\" $ss02>分類</option>\n
<option value=\"hito\" $ss03>主演</option>\n
<option value=\"kan\" $ss04>監督</option>\n
<option value=\"naka\" $ss05>内容</option>\n
<option value=\"ten\" $ss06>評価</option>\n
<option value=\"id\" $ss07>連番</option>\n
</select>\n
が <input type=\"text\" name=\"nam2\" value=\"$nam2\" size=\"40\">
</p>\n
<p><input type=\"submit\" value=\"検索\">
<input type=\"reset\" value=\"リセット\"></p>\n
</form>\n
";
//最初$namが空欄のときは最終行のあたりまでの文は実行されない
//検索が実行されると$namに値が入り実行される
//改頁のときはGETで$namが渡され実行される
if($nam<>''){
mysql_connect('localhost','zaurus','pass');
mysql_select_db('mydb');
$sql= "select * from eiga where $fld like '%$nam%' and $fld2 like '%$nam2%' order by id desc";
$result = mysql_query($sql);
$rows = mysql_num_rows($result); //行数取得
//検索結果が空行ならば
if($rows == 0){
echo "<p>該当データがありません。</p>";
}
//検索結果があれば以下を実行する
else{
//検索結果の行数をもとに最終頁数を計算(ceilは切り上げ)
$maxpage=ceil($rows/$maxl);
//現在の頁/最終頁を表示「.」は文字列の連結
print("<p align='left'>Page ".$page."/".$maxpage."</p>");
//mysql_data_seekにより検索結果の表上で内の指定した行に移動する
mysql_data_seek($result,$startline);
//$iに$startlineを代入
$i=$startline;
//最終行でなく かつ $i<=$endlineの条件の間
//検索結果の表から検索結果の行を取り出し表示する
while($row = mysql_fetch_array($result) and $i<=$endline){
echo "<p>".$row["id"]." 鑑賞日 ".$row["mita"]." 登録日 ".$row["kyou"]."<br />";
echo $row["name"]." 評価: ".$row["ten"]."<br />";
echo $row["bai"]." ".$row["bun"]." ".$row["nen"]."/".$row["kuni"]."<br />";
echo "主演:".$row["hito"]."<br />";
echo "監督:".$row["kan"]."<br />";
echo nl2br($row["naka"])."<br />";
echo "<a href=\"e_shusei3.php?id=".$row["id"]."\">[修正] </a> ";
echo "<a href=\"e_sakujo1.php?id=".$row["id"]."\">[削除] </a></p><hr>";
$i=$i+1;
}
//検索結果表示の下に各頁へのリンクを作成する
//HTML文を出力 caption を出力
print("<caption align='bottom'>");
//現在表示している頁が1ページより後の頁の場合は前の頁のリンクを作成
if ($page > 1) {
$i = $page - 1;
//HTML文を出力 .$pageに指定された頁数をセットしてGETで渡すリンクを作成
print("<a href='e_kensaku7.php?page=".$i ."&fld=".$fld."&nam=".$nam."&fld=".$fld2."&nam2=".$nam2."'>前頁</a>");
}
//現在表示している頁が1ページではなく最終頁ではない場合は前頁と次頁を
//区切る「・」を出力
if ($page <> 1 and $page <> $maxpage) {
print("・");
}
//現在表示している頁が最終頁より前の頁の場合は前の頁のリンクを作成
if ($page < $maxpage) {
$i = $page + 1;
//HTML文を出力 .$pageに指定された頁数をセットしてGETで渡すリンクを作成
print("<a href='e_kensaku7.php?page=".$i ."&fld=".$fld."&nam=".$nam."&fld=".$fld2."&nam2=".$nam2."'>次頁</a>");
}
///HTML文を出力 改行
print("<br>");
//出力可能な頁数数分繰り返す
for ($i=1;$i<=$maxpage;$i++) {
//現在の頁の時は [ ]で囲む
if ($i==$page){
print("[".$i."]");
} else {
//HTML文を出力 .$pageに指定された頁数をGETで渡すリンクを作成
print("<a href='e_kensaku7.php?page=".$i."&fld=".$fld."&nam=".$nam."&fld=".$fld2."&nam2=".$nam2."'>$i</a>");
}
//最終頁以外では頁間を区切る「・」を出力
if ($i <> $maxpage) {
print("・");
}
} //forの終わり
//HTML文を出力 /caption を出力
print("</caption>");
} //elseの終わり
} //if($namの終わり
?>
</body>
</html>
e_kensaku4.phpで修正するを押したときに、これが呼び出される。
前半部分は、最初は該当する値がないので、スルーされる。
まずは、後半で該当するデータをidをキーに呼び出し、それを修正フォームに書き込んでいく。チェックボックスや選択リストのところは結構苦労した。呼び出されたデータをもとにリストの何に該当しているかを判断させ、selected、checkedなどをつけた。
登録ボタンを押した時点で再度自分自身e_shusei3.phpが呼び出されて、その値がデータベースの各項目に設定され、sql文でデータベースに登録される。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html lang="ja">
<head>
<title>映画データベース修正</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
</head>
<body>
<?php
extract($_POST);
extract($_GET);
mysql_connect('localhost','zaurus','pass');
mysql_select_db('mydb');
//MySQLレコード修正 最初はname1という値はないのでif文はパスされる
if($name1<>""){
//修正ボタンが押されたときの修正処理
if(isset($changedata)){
$sql = "update eiga set
kyou = '$kyou1', name = '$name1', bai = '$bai1',
mita = '$mita1', bun = '$bun1', nen = '$nen1',
kuni = '$kuni1', hito = '$hito1', kan = '$kan1',
naka = '$naka1', ten = '$ten1'
where id = $id_1";
mysql_query($sql);
echo "レコードの修正が完了しました";
}
else{
//新規登録処理
//今日の日付を取得して登録日($kyou)に入力
$kyou1 = date("Y-m-d");
//受け取ったデータを映画DBに登録
$sql = "insert into eiga values(0, '$kyou1', '$name1',
'$bai1', '$mita1', '$bun1', $nen1, '$kuni1', '$hito1', '$kan1', '$naka1', $ten1)";
mysql_query($sql);
echo "レコードを新規登録しました。";
}
echo mysql_error();
//これは確認用。うまく動けば次の行は削除か//をつけてコメントにする
echo $sql;
exit;
}
//修正のためのフォーム
$sql = "select * from eiga where id = $id";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
if($rows == 0){
echo "<p>該当データがありません。</p>\n";
}
else{
while($row = mysql_fetch_array($result)){
echo "<p>データを修正してください。</p>\n";
echo "<form action = \"e_shusei3.php\" method = \"post\">";
echo "<p>連番:".$row["id"]."</p>\n";
echo "<p>題名:<input type = \"text\" name = \"name1\" value =\"".$row["name"]."\" size = \"40\"></p>\n";
//ラジオボタンのときの修正前のデータの取得と表示
$bai1 = $row["bai"];
if($bai1 == "劇場" ){$c01 = "checked";}
if($bai1 == "DVD"){$c02 = "checked";}
if($bai1 == "Video" ){$c03 = "checked";}
echo "<p>媒体:
<input type=\"radio\" name=\"bai1\" value=\"劇場\" $c01>劇場\n
<input type=\"radio\" name=\"bai1\" value=\"DVD\" $c02>DVD\n
<input type=\"radio\" name=\"bai1\" value=\"Video\" $c03>Video\n
</p>\n";
echo "<p>鑑日:<input type = \"text\" name=\"mita1\" value =\"".$row["mita"]."\" size=\"50\"></p>\n";
//選択リストのときの修正前のデータの取得と表示
$bun1 = $row["bun"];
if($bun1 == "ヒューマン"){$s01 = "selected";}
if($bun1 == "恋愛"){$s02 = "selected";}
if($bun1 == "青春"){$s03 = "selected";}
if($bun1 == "ファミリー向け"){$s04 = "selected";}
if($bun1 == "時代劇"){$s05 = "selected";}
echo "<p>分類:
<select name=\"bun1\">
<option value=\"ヒューマン\" $s01>ヒューマン</option>
<option value=\"恋愛\" $s02>恋愛</option>
<option value=\"青春\" $s03>青春</option>
<option value=\"ファミリー向け\" $s04>ファミリー向け</option>
<option value=\"時代劇\" $s05>時代劇</option>
</select>
</p>\n";
echo "<p>制作:<input type = \"text\" name = \"nen1\" value =\"".$row["nen"]."\" size = \"20\"></p>\n";
//選択リストのときの修正前のデータの取得と表示
$kuni1 = $row["kuni"];
if($kuni1 == "日"){$t01 = "selected";}
if($kuni1 == "米"){$t02 = "selected";}
if($kuni1 == "仏"){$t03 = "selected";}
if($kuni1 == "他"){$t04 = "selected";}
echo "<p>国名:
<select name=\"kuni1\">
<option value=\"日\" $t01>日本</option>
<option value=\"米\" $t02>アメリカ</option>
<option value=\"仏\" $t03>フランス</option>
<option value=\"他\" $t04>その他</option>
</select>
</p>\n";
echo "<p>主演:<input type = \"text\" name = \"hito1\" value =\"".$row["hito"]."\" size = \"40\"></p>\n";
echo "<p>監督:<input type = \"text\" name = \"kan1\" value =\"".$row["kan"]."\" size = \"40\"></p>\n";
echo "<p>内容:<textarea name = \"naka1\" rows =\"10\" cols = \"50\">";
echo nl2br($row["naka"]);
echo "</textarea></p>\n";
echo "<p>評価:<input type = \"text\" name = \"ten1\" value =\"";
echo $row["ten"];
echo "\" size = \"4\"></p>\n";
echo "<input type = \"hidden\" name = \"kyou1\" value =\"";
echo $row["kyou"];
echo "\">\n";
echo "<input type = \"hidden\" name = \"id_1\" value =\"";
echo $row["id"];
echo "\">\n";
echo "<p><input type=\"submit\" name=\"changedata\" value=\"修正登録\">";
echo "<input type=\"reset\" value=\"リセット\">\n";
echo "<input type=\"submit\" name=\"newdata\" value=\"新規登録\"><p/>";
echo "</form>";
}
}
?>
</body>
</html>
単純に削除すると危険なので、確認作業を行う
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html lang="ja">
<head>
<title>映画データベースデータ削除</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
</head>
<body>
<?php
extract($_POST);
extract($_GET);
mysql_connect('localhost','zaurus','pass');
mysql_select_db('mydb');
//MySQLレコード削除
if($kakunin=="確認"){
$sql = "delete from eiga where id = $id";
mysql_query($sql);
echo "レコードの削除が完了しました";
exit;
}
//削除確認のためのフォーム
$sql = "select * from eiga where id = $id";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
if($rows == 0){
echo "<p>該当データがありません。</p>";
}
else{
while($row = mysql_fetch_array($result)){
echo "<p>このレコードを削除します。</p>";
echo "<form action = \"e_sakujo1.php\" method = \"post\">";
echo "<p>".$row["id"]." 鑑賞日 ".$row["mita"]." 登録日 ".$row["kyou"]."<br />";
echo $row["name"]." 評価: ".$row["ten"]."<br />";
echo $row["bai"]." ".$row["bun"]." ".$row["nen"]."/".$row["kuni"]."<br />";
echo "主演:".$row["hito"]."<br />";
echo "監督:".$row["kan"]."<br />";
echo nl2br($row["naka"])."</p>";
echo "<input type = \"hidden\" name = \"id\" value =\"".$row["id"]."\">";
echo "<p><input type=\"submit\" name=\"kakunin\" value=\"確認\">";
echo "<input type=\"reset\" value=\"リセット\"></p>";
echo "</form>";
}
}
?>
</body>
</html>
mysql_connect('localhost','zaurus','pass') or die("接続エラー");
mysql_select_db('eiga') or die("接続エラー");
掲示板にお願いします