読者です 読者をやめる 読者になる 読者になる

ハロトレWebデザインの勉強 | 求職者支援訓練Webサイト制作科 フェリカテクニカルアカデミー

未経験者からプロになるハロートレーニングWebデザインの勉強

お問い合わせ:データベース(4)

お問い合わせ登録データをの一覧表示

  • $stmtにSELECTで取得したデータが格納されています


《list.php

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>登録データ一覧</title>
<link href="style.css" rel="stylesheet" media="all">
</head>
<body>
<?php
 $dsn = 'mysql:dbname=サーバー名;host=ホスト名';
 $user = 'ユーザー名';
 $password = 'パスワード';
 $dbh = new PDO($dsn, $user, $password);
 $dbh -> query('SET NAMES UTF8');
	
 $sql = 'SELECT * FROM inquiry WHERE 1';
 $stmt = $dbh -> prepare($sql);
 $stmt -> execute();

 $dbh = null;
?>
</body>
</html>


この段階では、データを取得しているだけなので何も表示はしません。


stmtからデータを取り出す
  • fetch:順番に1レコードずつ取り出す
$rec = $stmt -> fetch(PDO::FETCH_ASSOC);
print $rec['code'];
print $rec['name'];
print $rec['email'];
print $rec['message'];
print '<br>';

しかし、これで1つずつ取得すると、コード2もコード3も繰り返し書く必要があります。
そこで、繰り返しの命令を記述します。


while文
while(1) {
  print 'A';
  print 'B';
  print 'C';
}

このままでは、終わることのない繰り返しになりますから、無限ループになってしまいます。

  • while(1) の「1」は常に「Yes」で、「break」になるまで繰り返し続けます
break
  • もし、もうデータがなければ「break」でループから抜ける
if($rec == false) {
  break;
}
登録データ一覧まとめ

《list.php

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>登録データ一覧</title>
<link href="style.css" rel="stylesheet" media="screen, print">
</head>
<body>
<?php
 $dsn = 'mysql:dbname=サーバー名;host=ホスト名';
 $user = 'ユーザー名';
 $password = 'パスワード';
 $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;
   }
  print $rec['code'];
  print $rec['name'];
  print $rec['email'];
  print $rec['message'];
  print '<br>';
  }
 $dbh = null;
?>
</body>
</html>


「全角スペース」を入れて、文字がつき過ぎないようにします。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>登録データ一覧</title>
<link href="style.css" rel="stylesheet" media="all">
</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;
   }
  print $rec['code'].':&nbsp;';
  print $rec['name'].':&nbsp;';
  print $rec['email'].':&nbsp;';
  print $rec['message'];
  print '<br>';
	}
 $dbh = null;
?>
</body>
</html>