PHP

横青棒画像

前提環境:macOS環境でMAMPを使ってPHPのウェブ開発を体験する MAMPを起動して下さい

MAMP

MAMP(Macintosh, Apache, MySQL, PHP)はmacOS上でウェブ開発を支援するソフトです。

PHPでレストラン検索サイトを作るポイント

入力フォームの基本


<h3>レストラン店名検索</h3>
<form action="search_receive.php" method="POST">
  <label for="name">店名</label>
  <input type="text" id="name" name="name" placeholder="店名を入力">
  <input type="submit" value="検索する">
</form>

POSTデータの受け取り例


<?php
if($_SERVER['REQUEST_METHOD'] === 'POST'){  
    $name = $_POST['name'];  //フォーム入力値
}

データベースPDO接続とプレースホルダ


$dsn = 'mysql:dbname=DB名;host=localhost;charset=utf8';
$user = 'root';
$password = 'root';

$data = [];

try {
    $dbh = new PDO($dsn, $user, $password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "SELECT カラム名, price, name FROM テーブル名 WHERE name like :name";
    $stmt = $dbh->prepare($sql);
    $stmt->bindValue(':name', '%'.$name.'%', PDO::PARAM_STR);
    $stmt->execute();

    $count = $stmt->rowCount();
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $data[] = $row;
    }

} catch (PDOException $e){
    echo $e->getMessage();
    die();
}
?>

データ出力例


<h1>レストラン一覧 </h1>
<p><?php echo $count; ?>件見つかりました。</p>
<table border=1>
  <tr><th>地区</th><th>店名</th><th>価格帯</th></tr>
  <?php foreach($data as $row): ?>
  <tr>
    <td><?php echo $row['address']; ?></td>
    <td><?php echo $row['name']; ?></td>
    <td><?php echo $row['price']; ?></td>
  </tr>
  <?php endforeach; ?>
</table>

MAMPのMySQLサーバーを開く(phpMyAdmin)