次のような検索フォームがあるとします。
<form action="<?php $_PHP_SELF ?>" method="GET">
Some filter:
<select name="filter">
<option value="">Any value</option>
<option value="1">value is 1</option>
etc...
</select>
<input type="submit" value="Search">
</form>
インデックスページは次のようになります。
<?php
if($_GET['filter']){
$sql = 'SELECT * FROM table WHERE value=' . $_GET['filter'];
/* prepare, execute blah blah blah etc etc etc */
include 'results.php';
exit();
}
include 'searchform.php';
?>
フィルターが設定されている場合、これは完全にうまく機能します。しかし、そうでない場合は、すべての結果を表示したいのですが、代わりに検索フォームにページを保持します。それを(論理的に)それに変更するとif($_GET['filiter'] or $_GET['filter'] == ""){
、すべての結果がフィルタリングされず、検索フォームが無視されます。解決策はありますか?
注:<input type="hidden" name="hidden" value="true">
を使用してフィルターをチェックする代わりに、and の
ような非表示の入力タイプを設定できることはわかっていif($_GET['hidden'] == 'true'){
ますが、URL に表示されるので、それは望ましくありません。また、フィルターが表示されないため、単に使用したくありませんPOST
。また、検索フォームに戻るのではなく、URL のフィルターを変更したい場合に使用したいと思います。
注2 PDOを使用して準備と実行を行いますが、それは問題とは関係がないため、提供していません