webdata
DX推進をサポートする技術者向け情報提供サイト

初心者向けPHP・データベース入門

TOP >初心者向けPHP・データベース入門 >2.4 PHPとDBを使った得意先一覧作成

【PHP入門】PHPとDBを使った得意先一覧作成

 2023-05-02 (更新日:2023-06-11)

<学習する内容>

 データベースよりデータを抽出しPHP文内にHTML文を組み込んで一覧表を表示させる動きを理解します。

1)PHP文章にHTML文を組み込む

下記のサンプルプログラムをコピーもしくはダウンロードし指定のフォルダーに配置してください。
ファイル名:customerlist2_41.php
配置先:c:\xampp\htdocs\
配置先URL:http://localhost/customerlist2_41.php

サンプルプログラム名: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 
配置先:c:\xampp\htdocs\
配置先URL:http://localhost/customerlist2_42.php

サンプルプログラム名: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のデータ送受信を行います。