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();
}

现在它为我工作。但我的问题是我正在使用另外两个变量通过同一页面上的 URL 来过滤我的数据库值。

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';

我的问题是当我尝试过滤数据库结果时,单击上面的链接它总是使用此代码而不是显示过滤结果。

} 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

您的问题是您只检查 $_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循环(或者更好地说:不是唯一的问题)。看起来您的第一个参数在第二个链接中丢失了。我认为,第二个链接应该像某种扩展搜索过滤器一样反应,应该应用于最近显示的内容,或者我完全理解你的错误?

也许这可以解决您创建后续 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 回答
0

您需要确保 url 看起来像这样:

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

A?表示 URL 参数的开头,an&标记 url 参数之间的分隔

于 2013-02-15T15:02:49.983 回答