2014-12-08 239 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