Простой скрипт 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>";
}
?>