-
Вебмастеру
(
http://forum.oszone.net/forumdisplay.php?f=22)
Ошибки в PHP-коде
Вот мо програмній код:
PHP код:
<?php // Устанавливаем соединение с базой данных include "db_connect.php"; // Переменная хранит число сообщений выводимых на станице $num = 3; // Извлекаем из URL текущую страницу $page = $_GET['page']; // Определяем общее число сообщений в базе данных $result = mysql_query("SELECT COUNT(*) FROM content ORDER BY id desc"); $posts = mysql_result($result, 0); // Находим общее число страниц $total = intval(($posts - 1) / $num) + 1; // Определяем начало сообщений для текущей страницы $page = intval($page); // Если значение $page меньше единицы или отрицательно // переходим на первую страницу // А если слишком большое, то переходим на последнюю if(empty($page) or $page < 0) $page = 1; if($page > $total) $page = $total; // Вычисляем начиная к какого номера // следует выводить сообщения $start = $page * $num - $num; // Выбираем $num сообщений начиная с номера $start $result = mysql_query("SELECT * FROM content LIMIT $start, $num"); // В цикле переносим результаты запроса в массив $postrow while ( $postrow[] = mysql_fetch_array($result)) ?>
вывод сообщений
PHP код:
<?php do { printf("<div class='blog'><a href='newtmpl.php?id=%s'>%s</a> <br> %s<br> <table> <tr> <td><a href='newtmpl.php?id=%s'>Подробнее:</a></td> <td>%s</td> <td>|</td> <td>%s</td> <td>|</td> <td>Коментариев:</td> <td>%s</td> </td> </table> <hr> </div>" ,$postrow['id'],$postrow['title'],$postrow['introtext'],$postrow['id'], $postrow['author'],$postrow['data'],$postrow['views']); } while ($postrow = mysql_fetch_array($result)); ?>
Формируем составляющие будущей навигации
PHP код:
<?php // Проверяем нужны ли стрелки назад if ($page != 1) $pervpage = '<a href= ./page?page=1><<</a> <a href= ./page?page='. ($page - 1) .'><</a> '; // Проверяем нужны ли стрелки вперед if ($page != $total) $nextpage = ' <a href= ./page?page='. ($page + 1) .'>></a> <a href= ./page?page=' .$total. '>>></a>';
// Находим две ближайшие станицы с обоих краев, если они есть if($page - 2 > 0) $page2left = ' <a href= ./page?page='. ($page - 2) .'>'. ($page - 2) .'</a> | '; if($page - 1 > 0) $page1left = '<a href= ./page?page='. ($page - 1) .'>'. ($page - 1) .'</a> | '; if($page + 2 <= $total) $page2right = ' | <a href= ./page?page='. ($page + 2) .'>'. ($page + 2) .'</a>'; if($page + 1 <= $total) $page1right = ' | <a href= ./page?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
// Вывод меню echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;
?>
|
Какая каша...
И, наверное, нам надо угадать, что за ошибки у вас возникают?
На первый просмотр сразу бросается в глаза цикл do-while вместо while во втором блоке каши.
|
Вот такая ошибка Notice: Undefined index: page in C:\Apache2.2\htdocs\www\index.php on line 8,
8 строка у меня это - $page = $_GET['page']; В чем проблема?
|
rar864, насколько я понимаю языки программирования, то он ругается на неопределенный индекс. Т.е. система не знает, какой элемент выбрать. В самом деле, что такое 'page'? Правильно ли использована конструкция кавычек? Определен ли этот элемент ДО вызова проблемной функции, в данном случае URL? Что "лежит" в переменной page ?
|
Видимо, если вы не передаёте переменную page в запросе, то в скрипте нужно проверить, не является ли она пустой. Что-то вроде
Код:
if (isset($_GET['page']))
$page = $_GET['page'];
else
$page = 1;
Notice - это не ошибка. Это всего лишь "уведомление".
Кстати, для обрамления кода используйте тэг [ code ]
Или даже вместо isset() лучше сразу использовать is_int()
|
Сделал то что вы сказали ничего не получается, может у вас есть какой то код попроще для перехода по страницам сайта чем этот?
|
Цитата:
Цитата Coutty
Notice - это не ошибка. Это всего лишь "уведомление". »
|
То что в php называется "Notice", в других языках критическая ошибка. В любом случае стоит разобраться со всеми Notice, а то потом может возникнуть масса проблем.
|
Но речь-то не о других языках. PHP - более либеральный в плане допущений. "На свой страх и риск".
|
Время: 10:49.
© OSzone.net 2001-