需要一些PHP帮助

时间:2014-12-08 09:03:50

标签: php

我怎么告诉这个php代码,如果url中没有?page = randompage,它会自动将活动转换为index.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>";
?>

只要我的网址看起来像这样http://localhost/greencph/它会显示一个php错误,因为它不知道它在哪个网站上,只要网址看起来像这样,它就会很完美:{ {1}}如何解决这个问题的详细解释将不胜感激!

请记住,我是一个白痴,向我解释,所以我明白了。的xD

3 个答案:

答案 0 :(得分: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>";
?>

答案 1 :(得分:0)

使用$_GET数组:

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

答案 2 :(得分:0)

问题出在这一行

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

您没有检查索引&#39;页面&#39;甚至存在。因此,当您尝试加载没有任何GET参数的页面时$_GET['page']甚至不会被设置,并且您将获得访问未设置元素的错误。

要解决此问题,请检查

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