タグを使用して広告を検索するコードを作成しました。このコードは、ユーザーが入力した検索文字列を区切り (スペース) 、LIKE 句を使用して各単語をコンマで区切ったデータベース内のタグと照合します。私は正しい結果を得ています。しかし、私が望むのは、より多くのタグと検索文字列の単語が一致する行が一番上に表示されることです。
例:- 1 行目 (db) のタグは「samung,mobile,phone」で、2 行目は「samsung,phone」で、検索文字列は「samsung mobile phone」の場合、1 行目が最初に表示されます。 2 行目よりも多くの一致があります。ORDER BY を使用してそれを行うにはどうすればよいですか。
私のコードは次のとおりです:-
<?php require_once("db_connect.php"); ?>
<form action="" method="POST">
<input type="text" name="searchtext" />
<input type="submit" name="submit" value="Search" />
</form>
<?php
if(isset($_POST["submit"]))
{
$searchquery = $_POST["searchtext"];
$searcharray = array();
$searcharray = explode(" ",$searchquery);
if(!isset($searcharray[1]))
$searcharray[1] = "XXXXXXXX";
if(!isset($searcharray[2]))
$searcharray[2] = "XXXXXXXX";
if(!isset($searcharray[2]))
$searcharray[2] = "XXXXXXXX";
if(!isset($searcharray[3]))
$searcharray[3] = "XXXXXXXX";
$query = "select * from search where tag LIKE '%$searcharray[0],%' OR tag LIKE '%$searcharray[1],%' OR tag LIKE '%$searcharray[2],%' OR tag LIKE '%$searcharray[3],%' ";
$result=mysql_query($query);
while($row = mysql_fetch_array($result))
{
echo $row["name"]. '<br>' ;
}