2014-12-08 3 views
0

Как я могу сообщить этому php-коду, что, если в URL-адресе нет? 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>"; 
?> 

Это beacuse всякий раз, когда мой URL выглядит следующим образом http://localhost/greencph/ он показывает ошибку PHP, потому что он не знает, на каком сайте он включен, он отлично работает до тех пор, как URL выглядит следующим образом: http://localhost/greencph/?page=index.php подробное объяснение как исправить эту проблему будет оценено!

Пожалуйста, помните, что я идиот, объясните мне, чтобы я это понял. xD

+1

'если (! Исеть ($ _ GET [ 'страница']) || $ _GET [ 'страница'] == '')' – MLeFevre

+0

@MLeFevre Положите его в качестве ответ, это прямолинейно и правильно. – Paul

+0

Прочитайте некоторые статьи, объясняющие работу параметризованных запросов! – Pakspul

ответ

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'] на страницу =! Empty ($ _ GET ['page'])? $ _GET ['page']: 'index'; ? – Athax

+0

Да, но без ошибок синтаксиса. – Pupil

+0

Хмм не может заставить его работать. :( – Athax

0

Используйте $_GET массив:

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

Пробовал, ошибка исчезла, но она не показывает ни одной ссылки на страницу. – Athax

0

Проблема находится в эта строка

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

Вы не проверяете, существует ли даже страница «индекс». Таким образом, при попытке загрузить страницу без каких-либо параметров GET $_GET['page'] не будет даже установлен, и вы получите сообщение об ошибке для доступа к неустановленному элементу.

Чтобы исправить это просто проверить

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

Это работает, но мой актив перестает работать. – Athax

Смежные вопросы