これで、次の例のようにデータベースを設定できました。
id (int(11)) | name (varchar(20)) | food (varchar(20)) | fastfood (varchar(3)) | pricerange (int(11))
1 | McDonalds | American | Yes | 1
2 | Outback | BBQ | No | 2
3 | Mortons | Steakhouse | No | 3
これで、次のようにユーザーフォームを設定しました。
<form action="index.php" method="GET" id="sheet">
<select name="name1" id="name1">
<option value="%">No Preference</option>
<option value="outback">Outback</option>
<option value="mcdonalds">McDonalds</option>
<option value="mortons">Mortons</option>
</select>
<select name="food1" id="food1">
<option value="%">No Preference</option>
<option value="american">American</option>
<option value="bbq">BBQ</option>
<option value="steakhouse">Steakhouse</option>
</select>
<select name="fast" id="fast">
<option value="%">No Preference</option>
<option value="yes">Yes</option>
<option value="no">No</option>
</select>
<select name="price" id="price">
<option value="%">No Preference</option>
<option value="1">Cheap</option>
<option value="2">Middle Ground</option>
<option value="3">Expensive</option>
</select>
<input type="submit" value="Submit" id="submit"></input>
<input type="clear" value="Clear" id="Clear"<input>
</form>
すべてのフィールドが一致しない場合に次のクエリを実行すると、結果が得られません。int
クエリを操作して、 s&varchar
sが関与している場合に、最適な一致に基づいて結果を表示するにはどうすればよいですか?
$query = "SELECT * FROM .$usertable
WHERE $name LIKE '$name' AND
$food LIKE '$food1' AND
$fastfood LIKE '$fast' AND
$pricerange LIKE '$price' ";
INTのために全文検索は機能せず、「OR」は最適一致に基づく結果を表示しません。ユーザーが次のような4つのオプションのうち3つを選択したとします。BBQ | Yes | 2
さて、その場合の最良の一致はですがOutback
、ファーストフードも一致させようとしているため、結果は返されません。そして、さらに多くのオプションがある場合、それはさらに複雑になります。
誰かがこの問題の解決策に光を当てることができれば、私は非常に感謝しています。