フォームを介さず、URLの末尾にパラメータを付与することも可能です。このURLの末尾に付与されるパラメータをGETパラメータ、またはクエリストリングと呼びます(参考)。

例えば、以下のようなURLがあるとします。この場合、「?」以降の部分がGETパラメータです。

http://localhost/●●●/item.php?max_price=1000&type=books

PHPでは、このGETパラメータを$_GETというスーパーグローバル変数で参照することができます。
上記URLの場合、$_GET[“max_price”] とすると1000 を参照することができ、$_GET[“type”] とすると books という文字列を参照することができます。

GETパラメータの送信と利用

GETパラメータを送信するためには、リンクにGETパラメータを仕込む方法と、フォームのmethod属性の値をgetに設定する方法があります (ただし、method属性の初期値はgetなので、明示的に設定する必要はありません)。

<!-- リンクにGETパラメータを仕込む方法 -->
<ul>
   <li><a href="item.php?id=0">イチゴ</a></li>
   <li><a href="item.php?id=1">メロン</a></li>
   <li><a href="item.php?id=2">ブドウ</a></li>
</ul>

<!-- フォームのmethod属性をgetに設定する方法 -->
<form action="item.php" method="get">
   <select name="id">
      <option value="0">イチゴ</option>
      <option value="1">メロン</option>
      <option value="2">ブドウ</option>
   </select>
   <input type="submit" value="詳しく見る">
</form>

上記のリンク、またはフォームを通じて送信されるGETパラメータは、以下のように利用することができます。

<?php
// アイテムのリスト
$itemList = [
   ["name" => "イチゴ", "price" => 500, "place" => "栃木県"],
   ["name" => "メロン", "price" => 1300, "place" => "山形県"],
   ["name" => "ブドウ", "price" => 500, "place" => "山梨県"]
];

// GETパラメータ(クエリストリング)の取得
$id = $_GET["id"];
?>

<html>
<head>
   <meta charset="utf-8">
   <title><?php echo $itemList[$id]["name"] ?></title>
</head>
<body>
   <h1><?php echo $itemList[$id]["name"] ?></h1>
   <dl>
      <dt>価格<dt><dd><?php echo $itemList[$id]["price"] ?>円</dd>
      <dt>産地<dt><dd><?php echo $itemList[$id]["place"] ?>産</dd>
   </dl>
</body>
</html>
Last modified: 2021-06-27

Author