小さな掲示板を作成し、そこでスレッドの検索機能が必要と感じたため、実際に検索機能を実装して見ました。
検索機能の実装
必要知識
- MySQL
- PHP
MySQLに登録したデータをLIKE句を使用して検索していきます。
事前にいくつか登録したデータを出力しておきます。
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を返してくれます。