<学習する内容>
データベースよりデータを抽出しPHP文内にHTML文を組み込んで一覧表を表示させる動きを理解します。
1)PHP文章にHTML文を組み込む
下記のサンプルプログラムをコピーもしくはダウンロードし指定のフォルダーに配置してください。
ファイル名:customerlist2_41.php
配置先URL:
http://localhost/customerlist2_41.php
<?php
echo <<<EOT
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="/style.css" type="text/css">
<title>得意先一覧表</title>
</head>
<body>
得意先一覧表<br>
<table bgcolor="#a9a9a9" cellspacing="1px" style="font-size:12px;" >
<tr bgcolor="#D3D3D3" style="height:24px;" align="center">
<td width="90px">得意先コード</td>
<td width="200px">得意先名</td>
<td width="70px">郵便番号</td>
<td width="200px">住所1</td>
<td width="200px">住所2</td>
</tr>
<tr bgcolor="white" style="height:24px;" align="left">
<td align="center">10001</td>
<td>ABC株式会社</td>
<td align="center">神奈川県</td>
<td>神奈川県横浜市西区〇〇</td>
<td>横浜ビル10階</td>
</tr>
</table>
</body>
</html>
EOT;
?>
<解説>
3章のcustomerlist.htmlとの違い。
①ファイル名の拡張子:customerlist.html → customerlist2_41.
php
②プログラムの始まりと終わり
<?php
echo <<<EOT
HTML文....
EOT;
?>
5章のPointで記述した通りPHP文は、<?php ~ ?>で囲まれている必要があります。
この中でHMTL文の記載は、echo <<<EOT ~ EOT;で囲むことによりそのままHTML文を記述できます。
これをヒアドキュメントといいます。
記述の注意事項として、echo <<<EOTとEOT;はファイル各行の左詰めの位置に記述しないといけません。
EOTはHTML文の最初と終わりの位置を指定するものであり、アルファベットであれば何でもかまいません。
2)DBのデータを取り出し得意先一覧に表示させる
下記のサンプルプログラムをコピーもしくはダウンロードし指定のフォルダーに配置してください。
必ずDBのパスワードを********から設定したパスワードに変更してください
ファイル名:customerlist2_41.php
配置先URL:
http://localhost/customerlist2_42.php
<?php
//DBへの接続
$host = 'localhost'; //サーバ名
$user = 'root'; //ユーザ名
$pass = '********'; //DBのパスワード(自環境のパスワードに書き換えのこと)
$dbnm = 'sales'; //データベース名
$conn = mysqli_connect($host,$user,$pass,$dbnm) or die("er 接続できません。");
echo <<<EOT
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="/style.css" type="text/css">
<title>得意先一覧表</title>
</head>
<body>
得意先一覧表<br>
<table bgcolor="#a9a9a9" cellspacing="1px" style="font-size:12px;" >
<tr bgcolor="#D3D3D3" style="height:24px;" align="center">
<td width="90px">得意先コード</td>
<td width="200px">得意先名</td>
<td width="70px">郵便番号</td>
<td width="200px">住所1</td>
<td width="200px">住所2</td>
</tr>
EOT;
//DBからデータを抽出
$sql = "select customerCode,customerName,zipcode,address1,address2 from Mcustomer;";
$res = mysqli_query($conn,$sql) or die("エラー $sql");
while($row = mysqli_fetch_array($res)){ //while(){ ~ }繰り返し処理
$customerCode = $row["customerCode"];
$customerName = $row["customerName"];
$zipcode = $row["zipcode"];
$address1 = $row["address1"];
$address2 = $row["address2"];
echo <<<EOT
<tr bgcolor="white" style="height:24px;" align="left">
<td align="center">{$customerCode}</td>
<td>{$customerName}</td>
<td align="center">{$zipcode}</td>
<td>{$address1}</td>
<td>{$address2}</td>
</tr>
EOT;
} //← 繰り返し処理の }
echo <<<EOT
</table>
</body>
</html>
EOT;
?>
<解説>
customerlist.phpに比べプログラム前半にSQLの接続とHTML文の中央部分にデータの抽出が記述されてます。
・while文について
($res) で1行づつ取り出します。
whileは中括弧{ }内の処理にてすべてのデータを取り出すまで繰り返し処理を行います。
例えば、1行目の$row["customerName"]を取り出すと今度は次の行の$row["customerName"]を取り出すといったようにです。
さらに、中括弧{ }にHTML(echo <<<EOT ・・・・ EOT;が含まれておりこの処理も繰り返し実行されます。
1行を
~
を表示、データが終わるまで繰り返し表示される。
この処理により一覧表が表示されます。
ただし、現在データは1つしかありませんので1行しか表示されてません。
次の章でデータ入力画面を作りデータを入力すると複数行表示されます。
・表示の確認
各プログラムの配置先URLにアクセスして表示される画面を確認ください。
うまく表示されない場合は、5.PHPからDBを操作の<うまく表示されなかった方へ>をご確認ください。
次はPHPのデータ送受信を行います。