データベース検索用のページ

昨日の罠は見つかったので削ります。
check.php

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>確認画面</title>
<link rel="stylesheet" href="style.css" media="screen,print">
</head>
<body>
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];

$name = htmlspecialchars($name);
$email = htmlspecialchars($email);
$message = htmlspecialchars($message);

echo'<ul>'."\n";
echo '<li>';
if($name==''){
	echo 'お名前が入力されていません。<br>'."\n";
}else {
	echo  'ようこそ、'.$name.'様<br>'."\n";
}
echo '</li>'."\n";
echo '<li>';
if($email==''){
	echo 'メールアドレスが入力されていません。<br>'."\n";
}else {
	echo 'メールアドレス:'.$email.'<br>'."\n";
}
echo '</li>'."\n";
echo '<li>';
if($message==''){
	echo'お問い合わせの内容が、入力されていません。'."\n";
}else {
	echo 'お問い合わせの内容:'.$message."\n";
}
echo '</li>'."\n";
echo '</ul>'."\n";

if($name=='' || $email=='' || $message==''){
	echo'<form>'."\n";
	echo'<input type="button" onClick="history.back()" value="戻る">'."\n";
	echo '</form>'."\n";
} else {
	echo '<form action="thanks.php" method="post">'."\n";
	echo '<input type="hidden" name="name" value="'.$name.'">';
	echo '<input type="hidden" name="email" value="'.$email.'">';
	echo '<input type="hidden" name="message" value="'.$message.'">';
/*この1行が罠だった↓
echo '<input type="bottun" onClick="history.back()" value="戻る">'."\n";
*/
echo '<input type="submit" value="送信">'."\n";
echo '</form>'."\n";
}
?>
</body>
</html>

データベース内をリスト化。
list.php

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登録データ一覧</title>
<link rel="stylesheet" href="style.css" media="screen,print">
</head>
<body>
<?php
$dsn = 'mysql:dbname=contactus; host=localhost';
$user = 'root';
$password = 'root';
$dbh = new PDO($dsn,$user,$password);
$dbh -> query('SET NAMES UTF8');

$sql = 'SELECT * FROM inquiry WHERE 1';
$stmt = $dbh -> prepare($sql);
$stmt -> execute();

while (1) {
	$rec = $stmt -> fetch(PDO::FETCH_ASSOC);
	if ($rec==false){
	break;
}
echo $rec['code'].':&nbsp;';
echo $rec['name'].':&nbsp;';
echo $rec['email'].':&nbsp;';
echo $rec['message'];
echo '<br>';
}
$dbh = null;
?>
</body>
</html>

上記phpをHTMLで表示した結果のソース

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登録データ一覧</title>
<link rel="stylesheet" href="style.css" media="screen,print">
</head>
<body>
1:&nbsp;山田:&nbsp;yamada@gmail.com:&nbsp;はじめまして。<br>2:&nbsp;山田:&nbsp;yamada@aaa.com:&nbsp;テスト<br>3:&nbsp;山田:&nbsp;yamada@aaa.com:&nbsp;テスト<br>4:&nbsp;テスト:&nbsp;hatenafight@gmail.com:&nbsp;テキストテスト<br>6:&nbsp;テスト:&nbsp;hatenafight@gmail.com:&nbsp;テキストテスト<br>11:&nbsp;青島:&nbsp;aoshima@aaa.com:&nbsp;こんにちは、青島です。<br>9:&nbsp;サンクスページのエラー対策:&nbsp;xxx@aaa.com:&nbsp;サンクスで名前等の入力が空っぽなのは削りすぎか。<br>10:&nbsp;やっぱり削りすぎ:&nbsp;123@www.com:&nbsp;いらないのは1行だけだったな。<br>12:&nbsp;植木:&nbsp;hitoshi@crazycats.com:&nbsp;青島の次ったら植木。<br></body>
</html>

データベースの検索
(自動ナンバリングの数字から)
search.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>検索</title>
<link rel="stylesheet" href="style.css" media="screen,print">
</head>
<body>
<form action="search.php" method="post" id="search">
<input type="text" name="code" size="20" id="code">
<br>
<input type="submit" value="検索">
</form>
</body>
</html>

↓プリペアードステートメント対策入り
search.php

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>検索画面</title>
<link rel="stylesheet" href="style.css" media="screen,print">
</head>
<body>
<?php
$code = $_POST['code'];

$dsn = 'mysql:dbname=contactus; host=localhost';
$user = 'root';
$password = 'root';
$dbh = new PDO($dsn,$user,$password);
$dbh -> query('SET NAMES UTF8');

$sql = 'SELECT * FROM inquiry WHERE code=?';
$stmt = $dbh -> prepare($sql);
$data[] = $code;
$stmt -> execute($data);

while (1) {
	$rec = $stmt -> fetch(PDO::FETCH_ASSOC);
	if ($rec==false){
	break;
}
echo $rec['code'].':&nbsp;';
echo $rec['name'].':&nbsp;';
echo $rec['email'].':&nbsp;';
echo $rec['message'];
echo '<br>';
}
$dbh = null;
?>
</body>
</html>

参考キャプチャ



menu.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>管理メニュー</title>
<link href="style.css" rel="stylesheet" media="screen, print">
</head>
<body>
<h3>管理メニュー</h3>
<ul>
	<li><a href="list.php">お問い合わせ内容一覧</a></li>
	<li><a href="search.html">お問い合わせ内容検索</a></li>
</ul>
</body>
</html>

このページが増えたので、
「list.php」と「search.html」に

<ul>
<li><a href="menu.html">メニューに戻る</a></li>
</ul>

このリンクを追加。

「search.php」には

<ul>
<li><a href="search.html">検索画面に戻る</a></li>
</ul>

このリンクを追加。

ロリポップの「host」
サーバーの名前→mysqlxxx.phy.lolipop.jp
を入力して解決。