Простой скрипт PHP создает ошибку

Позвольте мне сделать это красиво и просто:

как и все остальные, я использую простые включения на сервере для различных вещей, таких как верхнее меню или боковое меню и так далее...

Вот мой пример кода

<?php $number = 1; include("/var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php");?>

$number =1 определяет правильный выбор вкладки в зависимости от уровня страницы, как обычно.

код, который я включаю, выглядит следующим образом:

18 <?php $page[$number] = 'selected';?>
19 <!--=================== top navigation ==================-->
20 <nav>
21 <div id="menu">
22 <a href="/Page 1/" class="tab <?php echo $page[1] ?>" title="Page 1">Page 1</a>
23 <a href="/Page 2/" class="tab <?php echo $page[2] ?>" title="Page 2">Page 2</a>
24 <a href="/Page 3/" class="tab <?php echo $page[3] ?>" title="Page 3">Page 3</a>
25 <a href="/Page 4/" class="tab <?php echo $page[4] ?>" title="Page 4">Page 4</a>
26 <a href="/Page 5/" class="tab <?php echo $page[5] ?>" title="Page 5">Page 5</a>
27 <a href="/Page 6/" class="tab <?php echo $page[6] ?>" title="Page 6">Page 6</a>
28 <a href="/Page 3/" class="tab <?php echo $page[7] ?>" title="Page 7">Page 7</a>
29 </div><!-- end .menu -->
30 </nav><!-- end .navigation -->

ясно, что css для.selected изменит цвет фона, чтобы показать, что вы находитесь на этой конкретной странице, поэтому нет необходимости объяснять это.

теперь проблема, я только что проверил свои журналы ошибок, которые оказались довольно большими для загрузки, и обнаружил следующие ошибки:

[Sat Nov 24 17:50:50 2012] [error] [client 204.11.33.59] PHP Notice:  Undefined offset:  2 in /var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php on line 23
[Sat Nov 24 17:50:50 2012] [error] [client 204.11.33.59] PHP Notice:  Undefined offset:  3 in /var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php on line 24
[Sat Nov 24 17:50:50 2012] [error] [client 204.11.33.59] PHP Notice:  Undefined offset:  4 in /var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php on line 25
[Sat Nov 24 17:50:50 2012] [error] [client 204.11.33.59] PHP Notice:  Undefined offset:  5 in /var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php on line 26
[Sat Nov 24 17:50:50 2012] [error] [client 204.11.33.59] PHP Notice:  Undefined offset:  6 in /var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php on line 27
[Sat Nov 24 17:50:50 2012] [error] [client 204.11.33.59] PHP Notice:  Undefined offset:  7 in /var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php on line 28

Я не могу понять причину этого. ИМО, если номер $ уже предопределен, чем почему ошибка?

Пожалуйста, помогите мне сделать это правильно.

3 ответа

Решение

Индекс $page не определено. Вы можете изменить свой код следующим образом:

echo isset($page[1]) ? $page[1] : ""
//and so on

Вы устанавливаете только один элемент вашего массива, но проверяете больше. Делая это:

$a = 3;
$page[$a] = 'selected';

существует только одна запись с индексом 3 (если вы не установите ее в другом месте, но я предполагаю, что нет). Итак, этот код:

<?php echo $page[1]; ?>

относится к несуществующему элементу массива, отсюда и предупреждение. Если единственная цель $page это из вашего кода, то избавиться от него полностью. Удалить

<?php $page[$number] = 'selected';?>

и заменить

<?php echo $page[7] ?>

с

Если вам нужен этот массив по любой другой причине, замените код

<?php echo $page[7] ?>

с

<?php echo isset($page[7]) ? 'selected' : '' ?>

Используйте этот чистый код в вашем меню div#:

<?php 
$count = 7;
for($link = 1; $link <= $count; $link++){
    $extraClass = ($link == $number) ? "selected" : "" ;
    echo "<a href='/Page {$link}/' class='tab {$extraClass}' 
               title='Page {$link}'>Page {$link}</a>";
}
?>
Другие вопросы по тегам