PHPでデータベースを検索する

PHPを使用してデータベースを検索して表示するプログラムを学習しました。

 

実行画面

 

f:id:develog:20161226190638p:plain

 

 

「お問い合わせ内容一覧」の結果

f:id:develog:20161226190641p:plain

テーブルに登録されている全データを表示しています。

 

 

お問い合わせ内容検索

f:id:develog:20161226190644p:plain

No.(プライマリキー)を入力します。

 

 

「お問い合わせ内容検索」の結果

f:id:develog:20161226190647p:plain

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'].':&nbsp;';
  echo $rec['name'].':&nbsp;';
  echo $rec['email'].':&nbsp;';
  echo $rec['blood'].':&nbsp;';
  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>