Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
26
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

Organization

PHPで簡単なページ内検索の作り方

小さな掲示板を作成し、そこでスレッドの検索機能が必要と感じたため、実際に検索機能を実装して見ました。

検索機能の実装

必要知識
- MySQL
- PHP
MySQLに登録したデータをLIKE句を使用して検索していきます。
事前にいくつか登録したデータを出力しておきます。
スクリーンショット 2018-03-29 22.54.39.png

index.php
<?php
 ini_set('display_errors',1);
 require_once('db_info.php');

if (isset($_GET['search'])) {
  $search = htmlspecialchars($_GET['search']);
  $search_value = $search;
}else {
  $search = '';
  $search_value = '';
}
 $sql = "SELECT * FROM 画像 where nam LIKE '%$search%' order by ban";
 $stmt = array();
 foreach ($db->query($sql) as $row) {
   array_push($stmt,$row);
 }
 ?>
 <!DOCTYPE html>
 <html>
   <head>
     <meta charset="utf-8">
     <title>記事の検索</title>
   </head>
   <body>
     <form action="" method="get">
       <p>記事の検索</p>
       <input type="text" name="search" value="<?php echo $search_value ?>"><br>
       <input type="submit" name="" value="検索">
     </form>
     <?php foreach ($stmt as $key): ?>
       <p><strong>記事の名前</strong><br>
         <?php echo $key['nam'] ?><br>
         <?php echo $key['dat']; ?></p>
     <?php endforeach; ?>
   </body>
 </html>

中はこのようなコードになっております。
LIKE句を使用して文字列の一致を検索してきます。
input type="text" name="search" value=""
の部分にもじが入っていれば$_GET['search']で文字を取得し$searchに格納します。

そしてLIKE %$search%の部分で部分一致検索をします。
入力した文字と一致すればtrue 一致しなければfalseを返してくれます。

実行例
スクリーンショット 2018-03-29 23.23.55.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
26
Help us understand the problem. What are the problem?