2013-02-15 116 views
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值。

+0

爲什麼不是兩個查詢參數? '目標=導師及鏈接= ...'?這會減少你檢查'$ _GET ['target']'是否包含有效的內容,而不是檢查三個不同的$ _GET值。 – 2013-02-15 15:02:34

回答

0

您需要確保網址如下:

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

一個?表示URL參數的開始,一個&標誌着URL參數之間的分離

+0

是我改變了我的鏈接這樣試了一下 - \t \t回聲 '

  • Tutor
  • \t \t \t \t
  • Institute
  • '; – TNK 2013-02-15 15:06:11

    +0

    並將此代碼更改爲 - \t $ tutor = isset($ _ GET ['subject'])&& isset($ _ GET ['institute'])? '0':'1'; \t $ institute = isset($ _ GET ['subject'])&& isset($ _ GET ['tutor'])? '0':'1'; – TNK 2013-02-15 15:06:55

    +0

    但它不適合我.. – TNK 2013-02-15 15:07:17

    1

    爲什麼不只是增加一個條款在else

    elseif(!isset($_GET['institute']) && !isset($_GET['tutor'])) 
    { 
        echo 'This page has been accessed in error.'; 
        include ('includes/footer.html'); 
        exit(); 
    } 
    
    0

    你的問題是,你只檢查$ _GET [ '主題'] variab 。嘞,這是在沒有被傳遞,您可以在幾個方式做到這一點,所有這些都將發生變化:

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

    如果您希望一次傳遞多個變量,則需要將搜索關鍵字放入數組中。

    +0

    我對此並不清楚:在searchKey = 1或其他所有通話中使用並使用:您可以用一個示例來詳細說明嗎? – TNK 2013-02-15 15:14:30

    +0

    剛剛修改我的例子,但認爲#2更多的是你所需要的。 – fanfavorite 2013-02-15 15:39:24

    0

    你的問題似乎並不是,你運行到else循環(或更好的說:不是只有問題)。看起來你的第一個參數在第二個鏈接中丟失了。我認爲,第二個鏈接應該像某種擴展搜索過濾器那樣反應,這個鏈接應該適用於最近顯示的內容,還是我完全錯誤地理解你?

    也許這可以解決您創建後續網址的問題。

    ​​

    當你輸出的鏈接:

    echo '<li><a href="'.$url1.'">Tutor</a></li> 
         <li><a href="'.$url2.'">Institute</a></li>'; 
    
    +0

    我們可以聊天嗎.. – TNK 2013-02-15 15:21:08