2013-02-16 37 views
0

我的搜索页面存在问题。当页面加载时有一个值来自URL这样的事情。

http://localhost/myweb/search.php?subject=Business+%26+Accounting+Studies 

此值用于显示我的搜索结果。首先我检查这个值,以确保它是真实的,它是否是字符串,等等,在我的页面上。

输入验证码:

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

我的问题是,当页面加载第一次的正确显示所有搜索结果。但点击过滤链接不起作用,并且不在页面上显示任何搜索结果。

UPDATE:调试结果。

这是第一次页面加载时的结果print_r($_GET)

Array 
(
    [subject] => Mathematics 
) 

它成为这样的事情时,我一下,我用它来过滤

Array 
(
    [subject] => Mathematics 
    [tutor] => link 
) 

过滤不会发生的链接(导师,院)上,并在网页上不显示任何结果。

变成这样,当我再次点击相同的链接。

Array 
(
    [subject] => link 
    [tutor] => link 
) 

再次过滤不会发生,并且不会在页面上显示任何结果。

有人可以告诉我我是如何解决这个问题的?

谢谢。

+1

嗯......'导师= link'不设置'subject'。 – 2013-02-16 05:55:16

+0

我试着改变它,但不工作 -

  • Tutor
  • 检查我更新的问题。 – TNK 2013-02-16 06:03:02

    +0

    更好地粘贴您的分配代码,将值分配给$ subject。 – fmask 2013-02-16 06:13:47

    回答

    1

    你的链接是不正确的。

    您需要将第二个变量添加到url。
    $ subject = $ _GET ['subject'];

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

    而且你不觉得这

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

    应该

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

    foreach ($_GET AS $key => $subject) { 
         $searchKey = $key; 
         $searchKeyword = '%'.$subject.'%'; 
        } 
    

    foreach ($_GET AS $key => $subject) { 
    
    if ($key == 'subject') { 
          $searchKey = $key; 
          $searchKeyword = '%'.$subject.'%'; 
        } 
    } 
    
    +0

    你能告诉我我放置这两条线的位置吗?$ tutor = isset($ _ GET ['institute'])? '1':'0'; // if set then then 1 $ institute = isset($ _ GET ['tutor'])? '1':'0'; //如果设置那么1 – TNK 2013-02-16 06:40:25

    +0

    替换这两行'$ tutor = isset($ _ GET ['institute'])? '0':'1'; $ institute = isset($ _ GET ['tutor'])? '0': '1';' – fmask 2013-02-16 06:41:50

    +0

    有时的print_r($ _ GET)像这样输出...阵列 ( [导师] =>链路 [主题] =>商业 [Accounting_Studies] => ) – TNK 2013-02-16 06:57:25

    1

    当您点击其中一个链接时,它会将您分别发送到http://localhost/myweb/search.php?tutor=linkhttp://localhost/myweb/search.php?institute=link。你需要做的是更像

    echo '<li><a href="?subject=' . $_GET['subject'] . '&tutor=link">Tutor</a></li> 
         <li><a href="?subject=' . $_GET['subject'] . '&institute=link">Institute</a></li> 
    
    0

    看来你在foreach循环替换关键字搜索:

    foreach ($_GET AS $key => $subject) { 
        $searchKey = $key; 
        $searchKeyword = '%'.$subject.'%'; 
    } 
    

    所以如果你有$ _GET主体与导师的结果将是:

    $searchkey = 'tutor'; 
    $searchkeyword = '%link%'; 
    

    这是不正确的。 简单写:

    $searchkey = 'subject'; 
    $searchkeyword = "%{$_GET['subject']}%"; 
    

    并且不使用foreach。

    编辑 整个事情是:

    // Check for a valid keyword from search input: 
    if ((isset($_GET['subject'])) && (is_string ($_GET['subject']))) { 
    
        // foreach ($_GET AS $key => $subject) { 
         $searchKey = 'subject'; 
         $searchKeyword = '%' . $_GET['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(); 
    } 
    
    +0

    我试过了,但现在正在工作。 – TNK 2013-02-16 06:22:09

    +0

    我更新了回复 – Boynux 2013-02-16 07:13:46