0

$_GET配列に問題があります。私のページでは、値は次のようなURLから取得されます。

http://localhost/search.php?subject=Mathematics

この$_GET値を次のようにチェックします。

// Check for a valid keyword from search input:
if ( (isset($_GET['subject'])) && (is_string ($_GET['subject'])) ) { // From SESSION
    foreach ( $_GET AS $key => $subject) {
        $searchKey = $key;
        $searchKeyword = '%'.$subject.'%';
    }

} else { // No valid keyword, kill the script.
    echo 'This page has been accessed in error.';
    include ('includes/footer.html');
    exit();
}

今それは私のために働いています。しかし、私の問題は、別の2つの変数を使用して、同じページのURLを通過させ、データベース値をフィルタリングしていることです。

echo '<li><a href="?tutor=link">Tutor</a></li>
      <li><a href="?institute=link">Institute</a></li>'; 

データベース値をフィルタリングするために使用したこの2つのリンク(このリンクをクリック)。

$tutor = isset($_GET['institute']) ? '0' : '1'; 
$institute = isset($_GET['tutor']) ? '0' : '1';

私の問題は、データベースの結果をフィルター処理しようとしているときに、上記のリンクをクリックすると、フィルター処理された結果が表示されるのではなく、常にこのコードが表示されることです。

} else { // No valid keyword, kill the script.
    echo 'This page has been accessed in error.';
    include ('includes/footer.html');
    exit();
}

この3つの$_GET値の使い方を教えてもらえますか。

4

4 に答える 4

1

に節を追加してみませんかelse:

elseif(!isset($_GET['institute']) && !isset($_GET['tutor'])) 
{
    echo 'This page has been accessed in error.';
    include ('includes/footer.html');
    exit();
}
于 2013-02-15T15:03:18.843 に答える
0

URLが次のようになっていることを確認する必要があります。

http://localhost/search.php?subject=Mathematics&tutor=tutorName&institute=instituteName

A?はURLパラメータの始まりを示し、&マークはURLパラメータ間の分離を示します

于 2013-02-15T15:02:49.983 に答える
0

あなたの問題は、渡されていない $_GET['subject'] 変数のみをチェックしていることです。いくつかの方法でこれを行うことができ、すべてが変更されます。

if ( (isset($_GET['subject'])) && (is_string ($_GET['subject'])) ) { // From SESSION

1) 条件文字列にすべての変数を含めます。

if ( ((isset($_GET['subject'])) && (is_string ($_GET['subject']))) || ((isset($_GET['institute'])) && (is_string ($_GET['institute']))) || ((isset($_GET['tutor'])) && (is_string ($_GET['tutor']))) ) {

2) すべてのリンクに searchKey=1 または何かを渡し、次を使用します。

if ( isset($_GET['searchKey']) ) { // From SESSION

改訂されたリンク:

echo '<li><a href="?searchKey=1&amp;tutor=link">Tutor</a></li>
      <li><a href="?searchKey=1&amp;institute=link">Institute</a></li>'; 

一度に複数の変数を渡す場合は、検索キーを配列に入れる必要があります。

于 2013-02-15T15:06:00.507 に答える
0

elseあなたの問題は、あなたがループに陥っているということではないようです(または、より良い言い方をすれば、唯一の問題ではありません)。最初のパラメーターが 2 番目のリンクで失われているようです。2 番目のリンクは、最近表示されたコンテンツに適用される拡張検索フィルターのような反応を示すべきだと思います。

これにより、フォローアップ URL を作成する際の問題が解決される可能性があります。

$params = array();

foreach($_GET as $key => $value) {
  $params[] = '&'.$key.'='.$value;
}

$url1 = '?tutor=link'.implode('', $params);
$url2 = '?institute=link'.implode('', $params);

そして、リンクを出力すると:

echo '<li><a href="'.$url1.'">Tutor</a></li>
      <li><a href="'.$url2.'">Institute</a></li>'; 
于 2013-02-15T15:06:10.520 に答える