検索ページに問題があります。ページが読み込まれているとき、次のようなURLから値が取得されます。
http://localhost/myweb/search.php?subject=Business+%26+Accounting+Studies
この値は、検索結果を表示するために使用されました。まず、この値をチェックして、ページ上でこの値がtrueかどうか、文字列かどうかなどを確認します。
検証コード:
// Check for a valid keyword from search input:
if ((isset($_GET['subject'])) && (is_string ($_GET['subject']))) {
foreach ( $_GET AS $key => $subject) {
$searchKey = $key;
$searchKeyword = '%'.$subject.'%';
}
echo '<pre>', print_r( $_GET), '</pre>';
}else { // No valid keyword, kill the script.
echo 'This page has been accessed in error.';
include ('includes/footer.html');
exit();
}
このコードは現在私のために働いています。しかし、検索ページが読み込まれた後、URLを介して別の変数を渡すと、問題が発生します。この2つの変数を渡す理由は、特定の条件下で検索結果をフィルタリングする必要があるためです。
search.phpページで2つのHTMLリンクを使用して、この2つの変数を渡します。こんな感じ。
echo '<li><a href="?tutor=link">Tutor</a></li>
<li><a href="?institute=link">Institute</a></li>';
そして、私はこのようにこの値をチェックします:
$tutor = isset($_GET['institute']) ? '0' : '1';
$institute = isset($_GET['tutor']) ? '0' : '1';
私の問題は、ページが最初に読み込まれたときに、すべての検索結果が正しく表示されることです。ただし、フィルタリングリンクをクリックしても機能せず、ページに検索結果がまったく表示されません。
更新:デバッグ結果。
これはprint_r($_GET)
、ページを初めて読み込んだときの結果です。
Array
(
[subject] => Mathematics
)
フィルタリングに使用するリンク(家庭教師、研究所)をクリックすると、このようになります。
Array
(
[subject] => Mathematics
[tutor] => link
)
フィルタリングが行われず、ページに結果が表示されません。
同じリンクをもう一度クリックするとこんな感じになります。
Array
(
[subject] => link
[tutor] => link
)
この場合も、フィルタリングは行われず、ページに結果が表示されません。
この問題を解決する方法を教えてもらえますか?
ありがとうございました。