PHP 学習メモ 8

概要

 PHP 学習メモ。ヒアドキュメントについて。

内容

  1. ヒアドキュメント

1. ヒアドキュメント

 ヒアドキュメントとは:

文字列を区切る別の方法としてヒアドキュメント構文 ("<<<") があります。この場合、ある ID (と、それに続けて改行文字) を <<< の後に指定し、文字列を置いた後で、 同じ ID (終端ID) を括りを閉じるために置きます。

www.php.net

 上記の「ID」とは次の例の END のこと:

<?php
echo <<<END
  test
END;

 ヒアドキュメントの中に変数を埋め込むことができる:

<!-- 商品リストを products テーブルから取得して表示 -->
<?php
include "../inc/dbinfo.inc";

// データベース接続
$connection = mysqli_connect(
  DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE, DB_PORT
);

// クエリ実行
$result = mysqli_query($connection, "SELECT * FROM products");

// クエリ結果から HTML のテーブルレコードを生成
while($query_data = mysqli_fetch_row($result)) {
  $html = <<<END
    <tr>
        <td>{$query_data[1]}</td>
        <td>{$query_data[2]}</td>
        <td>
            <form method='post'>
                <input type='hidden' name='product_id' value='{$query_data[0]}'>
                <input type='hidden' name='product_name' value='{$query_data[1]}'>
                <input type='hidden' name='product_price' value='{$query_data[2]}'>
                <input type='submit' value='カートに追加'>
            </form>
        </td>
    </tr>
    END;
  echo $html;
}

mysqli_free_result($result);
mysqli_close($connection);
?>

 上記のコードを保存したファイルを get_products.php とし、次のようにテーブルの中で呼び出すことで、動的にテーブルを表示することができる:

<!DOCTYPE html>
<html>
<head>
  <title>商品リスト</title>
</head>
<body>
<h1>商品リスト</h1>
<table border="1" cellpadding="10" cellspacing="1">
  <tr>
    <td>商品名</td>
    <td>価格</td>
    <td>カートに追加</td>
  </tr>

  <!-- テーブル表示 -->
  <?php require 'get_products.php'; ?>
</table>

</body>
</html>