繁体   English   中英

需要一些PHP帮助

[英]Need some PHP assistance

我如何告诉这个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>";
?>

这是因为每当我的URL看起来像这样的http://localhost/greencph/它就会显示php错误,因为它不知道它在哪个站点上,因此只要URL看起来像这样,它就可以完美运行: http://localhost/greencph/?page=index.php有关如何解决此问题的详细说明,将不胜感激!

请记住我是个白痴,向我解释,以便我理解。 的xD

因为每次没有设置$_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>";
?>

使用$_GET数组:

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

问题在这条线

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

您无需检查索引“页面”是否存在。 因此,当您尝试在没有任何GET参数的情况下加载页面时,甚至都不会设置$_GET['page']并且在访问unset元素时会出现错误。

要解决此问题,只需检查

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM