2014-12-08 288 views
0

我該如何告訴這個php代碼,當網址中沒有?page = randompage時,它會自動將活動自動放到index.php中?需要一些PHP幫助

<?php 
$query = "SELECT pagename, pagetitle FROM pages LIMIT 8"; 
$result = $mysqli->query($query); 
echo "<ul>"; 
while ($row = $result->fetch_array(MYSQLI_ASSOC)){ 
    echo "<li><a href=\"?page=".$row["pagename"]."\""; 
    if ($_GET['page'] == $row['pagename']) { 
    echo " class=\"active\""; } echo "> ".$row["pagetitle"]." </a></li>"; 
} 
echo "</ul>"; 
?> 

這是怎麼一回事,因爲每當我的URL看起來像這樣http://localhost/greencph/它顯示了一個PHP錯誤,因爲它不知道它是在哪個站點,它的工作完美,只要URL看起來像這樣:http://localhost/greencph/?page=index.php進行了詳細的解釋如何解決這個問題將不勝感激!

請記住我是一個白癡,向我解釋,所以我明白了。 xD

+1

'如果(!isset($ _ GET [ '頁'])|| $ _GET [ '頁'] == '')' – MLeFevre 2014-12-08 09:05:11

+0

@MLeFevre把它作爲一個答案,它是直接和正確的。 – Paul 2014-12-08 09:07:00

+0

請閱讀一些解釋參數化查詢工作的文章! – Pakspul 2014-12-08 09:30:39

回答

1

錯誤即將到來是因爲每次$_GET的值未被設置。

所以,對付它,

在一個變量得到$_GET['page']值。

因此,如果我們沒有得到$_GET,我們會爲它分配一個默認值,即索引頁。

$page = ! empty($_GET['page']) ? $_GET['page'] : 'index'; // set default value. 

而改變這一行:

if ($page == $row['pagename']) { 

所以,最終的修改後的代碼應該是:

<?php 
$query = "SELECT pagename, pagetitle FROM pages LIMIT 8"; 
$result = $mysqli->query($query); 
$page = ! empty($_GET['page']) ? $_GET['page'] : 'index'; 
echo '<ul>'; 
while ($row = $result->fetch_array(MYSQLI_ASSOC)) { 
    $class = ''; 
    if ($page == $row['pagename']) { 
     $class = 'active'; 
    } 
    echo '<li><a href="?page='.$row["pagename"].'" class="'.$class.'">' . $row["pagetitle"].' </a></li>'; 
} 
echo "</ul>"; 
?> 
+0

所以我應該改變if($ _GET ['page'] == $ row ['pagename'] to page =!empty($ _ GET ['page'])?$ _GET ['page']:'index'; ? – Athax 2014-12-08 09:09:21

+0

是的,但沒有語法錯誤。 – Pupil 2014-12-08 09:10:11

+0

嗯不能得到它的工作:( – Athax 2014-12-08 09:14:20

0

使用$_GET陣列:

<?php 
    if(isset($_GET['page'])) { 
     // Your code 
     ... 
    } 
?> 
+0

嘗試過,錯誤消失了,但沒有顯示任何頁面鏈接。 – Athax 2014-12-08 09:18:33

0

問題是這條線

if ($_GET['page'] == $row['pagename']) { 

你不檢查索引'page'是否存在。因此,當您嘗試加載沒有任何GET參數的頁面時,$_GET['page']將不會被設置,您將在訪問未設置的元素時收到錯誤。

要解決這個問題只需檢查

if(isset($_GET['page']) { 
    ...your code... 
} 
+0

它的工作原理,但我的主動停止工作。 – Athax 2014-12-08 09:25:33