[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Код для навигации на сайте
Витя
Хоть стыдно, но признаюсь - делал сайт по урокам Попова. Теперь читаю книги, смотрю уроки от linda.com и стараюсь по возможности этот сайт улучшить, но знаний все равно катастрофически не хватает. Код внизу должен выводить статьи за определенный месяц, если статей большей, чем пять, они должны выводиться на нескольких страницах. Беда в том, что когда пытаешься перейти с первой на вторую страницу, показывает данные не за нужный месяц, а за следующий. Надеюсь, что будут не только издевки в стиле: "Как мне надоели эти быдлокодеры Поповские! Почитай Котерова, учи PHP по нормальным учебникам, а потом уже начинай сайты писать!", но и реальная помощь. Заранее спасибо.

<?php require_once("../includes/database.php");;
if (isset($_GET['date'])) {
$date = $_GET['date'];
}
else
{
exit ("<p>Вы обратились к файлу без необходимых параметров. Проверьте адресную строку.</p>");
}
$date_title = $date;
$date_begin = $date;
$date++;
$date_end = $date;
$date_begin = $date_begin."-01";
$date_end =$date_end."-01";
$result88 = mysql_query("SELECT str FROM options", $db);
$myrow88 = mysql_fetch_assoc($result88);
$num = $myrow88["str"];
// Извлекаем из URL текущую страницу
@$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result99 = mysql_query("SELECT COUNT(*) FROM data WHERE secret=0 AND date>'$date_begin' AND date<'$date_end'");
$temp = mysql_fetch_array($result99);
$posts = $temp[0];
// Находим общее число страниц
$total = (($posts - 1) / $num) + 1;
$total = intval($total);
// Определяем начало сообщений для текущей страницы
$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 id, title, description, date, author, mini_img, view, rating, q_vote FROM data WHERE secret=0 AND date>'$date_begin' AND date<'$date_end' ORDER BY id LIMIT $start, $num",$db);
if (!$result)
{
echo "<p>Запрос не может быть выполнен. Сообщите об ошибке администратору. <br><strong>Код ошибки:</strong></p>";
exit (mysql_error ());
}
if (mysql_num_rows ($result) > 0)
{
$myrow = mysql_fetch_assoc ($result);
do
{
$r = $myrow["rating"]/$myrow["q_vote"];
$r = intval($r);
printf ("<div class='post_intr'><div class='part_of_intr'><p class='post_name'><img class='mini' align='left' src='%s'><a href = 'view_post.php?id=%s'>%s</a></p>
<p class='post_adds'>Дата добавления: %s</p>
<p class='post_adds'>Автор статьи: %s</p></div>
<div id='inside_intr_p'><p>%s</p></div><p class='post_view'>Просмотров: %s    Рейтинг: <img src='img/%s.png'></p></div>"
,
$myrow['mini_img'], $myrow['id'], $myrow['title'], $myrow['date'], $myrow['author'], $myrow['description'], $myrow['view'], $r);
}
while ($myrow = mysql_fetch_assoc ($result));
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=view_date.php?date='.$date.'&page=1>Первая</a> | <a href=view_date.php?date='.$date.'&page='. ($page - 1) .'>Предыдущая</a> | ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' | <a href=view_date.php?date='.$date.'&page='. ($page + 1) .'>Следующая</a> | <a href=view_date.php?date='.$date.'&page=' .$total. '>Последняя</a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = '<a href=view_date.php?date='.$date.'&page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
if($page - 4 > 0) $page4left = '<a href=view_date.php?date='.$date.'&page='.($page - 4) .'>'. ($page - 4) .'</a> | ';
if($page - 3 > 0) $page3left = '<a href=view_date.php?date='.$date.'&page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
if($page - 2 > 0) $page2left = '<a href=view_date.php?date='.$date.'&page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href=view_date.php?date='.$date.'&page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 5 <= $total) $page5right = ' | <a href=view_date.php?date='.$date.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = ' | <a href=view_date.php?date='.$date.'&page='.($page + 4) .'>'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = ' | <a href=view_date.php?date='.$date.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href=view_date.php?date='.$date.'&page='.($page + 1) .'>'. ($page + 1) .'</a>';
// Вывод меню если страниц больше одной
if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo "<div class=\"pstrnav\">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}
}

else
{
echo "<p>Информация по запросу не может быть извлечена. В таблице нет записе-е-е-й.</p>";
exit ();
}
?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.