|
|
|
| Хочу прикрутить к сайту постраничную навигацию, она нужна для редактирования одного с больших разделов. Пока тренируюсь на этом примере:
<?php
// Устанавливаем соединение с базой данных
$host="localhost";
$user="root";
$passw="";
$dbase="proba";
$table="post";
/*зєднання з БД*/
mysql_connect($host,$user,$passw) or die ("<font color='red'>Неможливо встановити з'єднання з базою даних. Зверніться до адміністратора.</font>");
/*вибір БД*/
mysql_select_db($dbase) or die ("<font color='red'>База даних зараз недоступна. Зверніться до адміністратора.</font>");
// Переменная хранит число сообщений выводимых на станице
$num = 1;
// Извлекаем из URL текущую страницу
$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result = mysql_query("SELECT COUNT(*) FROM post");
$posts = mysql_fetch_row($result);
// Находим общее число страниц
$total = intval(($posts[0] - 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 post LIMIT $start, $num");
// В цикле переносим результаты запроса в массив $postrow
while ( $postrow[] = mysql_fetch_array($result))
echo "<table border=1>";
echo "<tr>
<td>name</td>
<td>time</td>
<td>text</td>
</tr>";
for($i = 0; $i < $num; $i++)
{
echo "<tr>
<td>".$postrow[$i]['name']."</td>
<td>".$postrow[$i]['time']."</td>
<td>".$postrow[$i]['text']."</td></tr>";
}
echo "</table>";
// Проверяем нужны ли стрелки назад
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;
?>
|
Нормально отображается только первая страница и кнопки перехода, при нажатие на 2 или 3 ссылку выкидывает сообщение:
The requested URL /page was not found on this server.
Подсказка Денвера
Вы ошиблись при наборе URL в браузере. Вероятнее всего, сервер пытается найти файл Z:/home/mus/www/page, которого не существует.
Как мне кажется проблемы в настройках рнр. Подскажите как это поправить.
Спасибо Роман | |
|
|
|
|
|
|
|
для: roman$hural
(27.08.2008 в 09:11)
| | Вам кажется. Ищите ошибку в коде своем. | |
|
|
|
|
|
|
|
для: sim5
(27.08.2008 в 09:39)
| | >Вам кажется. Ищите ошибку в коде своем.
Что мне кажется? Ошибки ищу пока не нахожу. | |
|
|
|
|
|
|
|
для: roman$hural
(27.08.2008 в 10:35)
| | Если ваш код запрашивает несуществующую страницу, зачем винить в этом РНР? Вы внимательно посмотрите на свой результирующий HTML-код, вместо запросов к базе, выводите рузультат обработки переменных на экран, тогда, думаю, вы обнаружите причину. | |
|
|
|
|
|
|
|
для: sim5
(27.08.2008 в 10:39)
| | Спасибо за развернутый ответ | |
|
|
|
|
|
|
|
для: roman$hural
(27.08.2008 в 09:11)
| |
Или у вас ЧПУ | |
|
|
|