PHPでデータベースを検索する
PHPを使用してデータベースを検索して表示するプログラムを学習しました。
実行画面
「お問い合わせ内容一覧」の結果
テーブルに登録されている全データを表示しています。
お問い合わせ内容検索
No.(プライマリキー)を入力します。
「お問い合わせ内容検索」の結果
No.1のデータをすべて表示しています。
ソース
menu.html(管理メニュー)
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>管理メニュー画面</title>
<style>
html,body,h1,ul,li {
margin: 0;
padding: 0;
}
h1 {
margin: 20px 30px;
}
ul {
list-style: none;
}
li {
margin: 20px 50px;
}
a {
text-decoration: none;
color: #000;
}
a:hover {
text-decoration: underline;
}
</style>
</head>
<body>
<h1>管理メニュー</h1>
<div id="result">
<ul>
<li><a href="list.php">お問い合わせ内容一覧</a></li>
<li><a href="search.html">お問い合わせ内容検索</a></li>
</ul>
</div>
</body>
</html>
list.php(お問い合わせ内容一覧)
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>お問い合わせ内容一覧</title>
<style>
html,body,h1,ul,li {
margin: 20px;
padding: 0;
}
ul {
list-style: none;
}
li {
margin: 20px 50px;
}
</style>
</head>
<body>
<?php
// データベースとの連結
$dsn = 'mysql:dbname=mydb;host=localhost';
$user = 'root';
$password = '';//dbでパスワードを設定していなければカラ
$dbh = new PDO($dsn, $user, $password);
$dbh -> query('SET NAMES UTF8');
//データベースのテーブルからデータを取得
$sql = 'SELECT * FROM form WHERE 1';
$stmt = $dbh -> prepare($sql);
$stmt -> execute();
//データがあるだけ全部取得
while(1){
$rec = $stmt -> fetch(PDO::FETCH_ASSOC);
//もうデータがなければ「break」でループから抜ける
if($rec == false){
break;
}
//stmtから取得したデータを表示
echo $rec['id'].': ';
echo $rec['name'].': ';
echo $rec['email'].': ';
echo $rec['blood'].': ';
echo $rec['message'];
echo '<br>';
}
$dbn = null;
?>
<ul class="back01">
<li><a href="menu.html">メニューに戻る</a></li>
</ul>
</body>
</html>
search.html(お問い合わせ内容検索)
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>お問い合わせ内容検索</title>
<style>
html,body,h1,ul,li {
margin: 0;
padding: 0;
}
input {
margin: 20px 20px 0;
}
ul {
list-style: none;
}
li {
margin: 20px 50px;
}
</style>
</head>
<body>
<div id="inquiry">
<form action="result.php" method="post" id="search">
<input type="text" name="code" size="20" id="code">
<br>
<input type="submit" value="検索">
</form>
<ul>
<li><a href="menu.html">メニューに戻る</a></li>
</ul>
</div>
</body>
</html>
result.php(お問い合わせ内容検索の結果表示)
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>お問い合わせ内容検索の結果表示</title>
</head>
<body>
<div id="inquiry">
<?php
//前のページで入力したID番号を変数化
$code = $_POST['code'];
// データベースとの連結
$dsn = 'mysql:dbname=mydb;host=localhost';
$user = 'root';
$password = '';//dbでパスワードを設定していなければカラ
$dbh = new PDO($dsn, $user, $password);
$dbh -> query('SET NAMES UTF8');
//変数化したIDをDBのカラムIDと紐づけ
$sql = 'SELECT * FROM form WHERE id='.$code;
$stmt = $dbh -> prepare($sql);
$stmt -> execute();
echo '<table>'."\n";
echo '<tr><th>No</th><th>お名前</th><th>メールアドレス</th><th>血液型</th><th>お問い合わせ内容</th></tr>'."\n";
while(1){
$rec =$stmt ->fetch(PDO::FETCH_ASSOC);
if($rec == false){
break;
}
//stmtから取得したデータを表示
echo '<tr>';
echo '<td>'.$rec['id'].'</td>';
echo '<td>'.$rec['name'].'</td>';
echo '<td>'.$rec['email'].'</td>';
echo '<td>'.$rec['blood'].'</td>';
echo '<td>'.$rec['message'].'</td>';
echo '</tr>';
}
echo '</table>';
$dbn = null;
?>
</div>
<p><a href="search.html">検索画面に戻る</a></p>
</body>
</html>