PHPでMySQLのデータを表示する方法。

今回はデータベースにあるデータをPHPで表示します。前回データベースに接続する部分の関数は説明しましたので、新しく登場する関数は1つだけです。

mysql_fetch_array()

この関数は結果セットから、データを配列として1件ずつ取り出してくれます。これにPHPの制御構文であるwhileを組み合わせて使うことで、データが簡単に取り出せます。


【1】sample100 フォルダをコピーして sample101 フォルダを作成します。

php-171.gif


【2】select.php を変更します。

php-172.gif

*「\」はWindowsではエンマークのことです。

保存先 C:\phpdev\www\test\sample101
ファイル名 select.php

<?php
  $url = "localhost";
  $user = "root";
  $pass = "";
  $db = "SampleDB050";

  // MySQLへ接続する
  $link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。");

  // データベースを選択する
  $sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。");

  // クエリを送信する
  $sql = "SELECT * FROM T01Prefecture";
  $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);

  //結果セットの行数を取得する
  $rows = mysql_num_rows($result);

  //表示するデータを作成
  if($rows){
    while($row = mysql_fetch_array($result)) {
      $tempHtml .= "<tr>";
      $tempHtml .= "<td>".$row["PREF_CD"]."</td><td>".$row["PREF_NAME"]."</td>";
      $tempHtml .= "</tr>\n";
    }
    $msg = $rows."件のデータがあります。";
  }else{
    $msg = "データがありません。";
  }

  //結果保持用メモリを開放する
  mysql_free_result($result);

  // MySQLへの接続を閉じる
  mysql_close($link) or die("MySQL切断に失敗しました。");
?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>全件表示</title>
  </head>
  <body>
    <h3>全件表示</h3>
    <?= $msg ?>
    <table width = "200" border = "0">
      <tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td></tr>
      <?= $tempHtml ?>
    </table>
  </body>
</html>



【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。

php-02.gif

準備ができたら作成したPHPプログラムを実行してみましょう。


【4】ブラウザのアドレスに http://localhost/test/sample101/select.php と入力し、実行します。


【5】select.php の画面で、データが表示されたら成功です。

php-173.gif

データが無い場合
php-174.gif

*データが無い状態を確認するには、SQLを以下のようにしてください。
$sql = "SELECT * FROM T01Prefecture WHERE PREF_CD > 100";


【解説】

(1)表示するデータを作成している部分です。

if($rows){
  while($row = mysql_fetch_array($result)) {
    $tempHtml .= "<tr>";
    $tempHtml .= "<td>".$row["PREF_CD"]."</td><td>".$row["PREF_NAME"]."</td>";
    $tempHtml .= "</tr>\n";
  }
  $msg = $rows."件のデータがあります。";
}else{
  $msg = "データがありません。";
}

$rows には結果セットの行数か FALSE(0) が代入されています。そこでif文を使い、行数がある場合はテーブルに表示するHTMLタグを作成し、無い場合(else)はメッセージのみ代入しています。

レコードがある間は1件ずつ取り出し、while内の処理を繰り返します。また「.=」は右辺の文字列を左辺に連結する代入演算子です。$tempHtmlにはレコード数分のタグが連結されていきます。

$row にはレコードごとに配列が入ります。カラム(列またはフィールド)にアクセスするには、連想添字か数値添字を使います。
$row["PREF_CD"]
$row[0]

作成されたHTMLタグ
php-175.gif


(2)HTMLのbody部分です。

<h3>全件表示</h3>
<?= $msg ?>
<table width = "200" border = "0">
  <tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td></tr>
  <?= $tempHtml ?>
</table>

$msgに代入されている文字列を出力し、テーブルタグ内に$tempHtmlに代入されているHTMLタグを出力しています。

width = "200" でテーブルの幅を調整します。
border = "0" でテーブルの罫線を調整します。


スポンサードリンク

スポンサードリンク






PHP初心者入門講座TOPへ