18
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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

検索機能の実装

必要知識

  • 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

18
25
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?