|
|
|
| Привет!
Очень понравился Ваш блок новости!!! Вот что мне нужно. Хочу, что бы когда отображается выбранное количество новостей на сайте (не полные, а с ссылкой подробнее...) то были ссылки на след.страницы, т.е. у меня например в бд 21 новость, на странице отображается по 5 новостей... вот хочу, что бы были ссылки типа такого | 1 | 2 | 3 | 4 .... т.е. разбивка на страницы или на худой конец как на странице ПОЛНЫЕ НОВОСТИ.... СЛЕДУЮЩИЕ (значение переменной)....
буду благодарен если напишете решение... очень нужно!!!!
спасибо большое! очень жду ответа на вопрос! | |
|
|
|
|
|
|
|
для: virtus
(18.08.2005 в 15:25)
| | Почитайте вот эту статью:
http://www.softtime.ru/info/articlephp.php?id_article=33
если еще остануться вопросы, попробуйте поискать на форуме "постраничная навигация" - много раз поднимался вопрос. | |
|
|
|
|
|
|
|
для: Loki
(18.08.2005 в 15:29)
| | спасибо шас попробую... | |
|
|
|
|
|
|
|
для: Loki
(18.08.2005 в 15:29)
| | вот уже вывел... появились 1 | 2
но как наживаешь на страницу 2 - открывается те же 5 сообщений!! а должно вывести только 2 т.к. их в базе 7!!!!!!
ПОМОГИТЕ!
<?php
///////////////////////////////////////////////////
// Блок "Новости"
// 2003-2004 (C) IT-студия SoftTime (http://www.softtime.ru)
// Симдянов И.В. (simdyanov@softtime.ru)
// Голышев С.В. (softtime@softtime.ru)
///////////////////////////////////////////////////
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Новости</title>
<link rel="StyleSheet" type="text/css" href="news.css">
</head>
<?php
// Этот файл выводит первые $pnumber новостей
// Устанавлинваем соединение с базой данных
require_once("config.php");
?>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<p class="zagblock">НОВОСТИ</p>
<?php
// Выясняем общее количество новостей в базе данных, для того чтобы
// правильно отображать ссылки на последующие новости.
$tot = mysql_query("SELECT count(*) FROM news WHERE hide='show'");
if ($tot)
{
$total = mysql_result($tot,0);
// Если в базе новостей меньше чем $pnumber
// выводим их без вывода ссылки "Все новости".
if($pnumber < $total) echo "<p class='linkblock'><a href=news.php class='linkblock'>Все новости</a>";
}
else puterror("Ошибка при обращении к блоку новостей");
$num = 5;
// Извлекаем из URL текущую страницу
$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result = mysql_query("SELECT COUNT(*) FROM news");
$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 news LIMIT $start, $num");
// В цикле переносим результаты запроса в массив $postrow
while ( $postrow[] = mysql_fetch_array($result))
$new = mysql_query("SELECT * FROM news
WHERE hide='show'
ORDER BY putdate DESC
LIMIT $pnumber");
if ($new)
{
while($news = mysql_fetch_array($new))
{
// Выводим заголовок новости
echo "<p class=newsblockzag><b>".$news['name']."</b></p>";
// Формируем анонс
// Переменная $numchar содержит примерное
// количество символов в анонсе
$pos = strpos(substr($news['body'],$numchar), " ");
// Если новость длинная, то выводим троеточие...
if(strlen($news['body'])>$numchar) $srttmpend = "...";
else $strtmpend = "";
// Выводим анонс
echo "<p class=newsblock>".substr($news['body'], 0, $numchar+$pos).$srttmpend;
echo "<br><a class=anewsblock href=?id_news=".$news['id_news'].">подробнее</a></p>";
}
}
else puterror("Ошибка при обращении к блоку новостей");
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=?page=1><<</a>
<a href=?page='. ($page - 1) .'><</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' <a href=?page='. ($page + 1) .'>></a>
<a href=?page=' .$total. '>>></a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0) $page2left = ' <a href=?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href=?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 2 <= $total) $page2right = ' | <a href=?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href=?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
// Вывод меню
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;
?>
<br><br>
|
| |
|
|
|
|
|
|
|
для: virtus
(18.08.2005 в 16:18)
| | посмотрите, передается ли по ссылке переменная $page. Есть подозрение что она потерялась. | |
|
|
|
|
|
|
|
для: Loki
(18.08.2005 в 17:01)
| | а как посмотреть? просто echo $pages? | |
|
|
|
|
|
|
|
для: virtus
(18.08.2005 в 17:22)
| | совершенно верно.
попробуйте вставить перед
if(empty($page) or $page < 0) $page = 1;
|
строчку
| |
|
|
|
|
|
|
|
для: Loki
(18.08.2005 в 17:27)
| | ничего! тоже самое!!! в чем-то другом дело!!! | |
|
|
|
|
|
|
|
для: virtus
(18.08.2005 в 17:43)
| | Кажись нашел:
<?
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query("SELECT * FROM news LIMIT $start, $num");
// В цикле переносим результаты запроса в массив $postrow
while ( $postrow[] = mysql_fetch_array($result))
$new = mysql_query("SELECT * FROM news
WHERE hide='show'
ORDER BY putdate DESC
LIMIT $pnumber");
if ($new)
{
while($news = mysql_fetch_array($new))
{
// Выводим заголовок новости
echo "<p class=newsblockzag><b>".$news['name']."</b></p>";
// Формируем анонс
// Переменная $numchar содержит примерное
// количество символов в анонсе
$pos = strpos(substr($news['body'],$numchar), " ");
// Если новость длинная, то выводим троеточие...
if(strlen($news['body'])>$numchar) $srttmpend = "...";
else $strtmpend = "";
// Выводим анонс
echo "<p class=newsblock>".substr($news['body'], 0, $numchar+$pos).$srttmpend;
echo "<br><a class=anewsblock href=?id_news=".$news['id_news'].">подробнее</a></p>";
}
}
else puterror("Ошибка при обращении к блоку новостей");
?>
|
исправить на
<?
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query("SELECT * FROM news WHERE hide='show'
ORDER BY putdate DESC LIMIT $start, $num");
if ($result)
{
while($news = mysql_fetch_array($result))
{
// Выводим заголовок новости
echo "<p class=newsblockzag><b>".$news['name']."</b></p>";
// Формируем анонс
// Переменная $numchar содержит примерное
// количество символов в анонсе
$pos = strpos(substr($news['body'],$numchar), " ");
// Если новость длинная, то выводим троеточие...
if(strlen($news['body'])>$numchar) $srttmpend = "...";
else $strtmpend = "";
// Выводим анонс
echo "<p class=newsblock>".substr($news['body'], 0, $numchar+$pos).$srttmpend;
echo "<br><a class=anewsblock href=?id_news=".$news['id_news'].">подробнее</a></p>";
}
}
else puterror("Ошибка при обращении к блоку новостей");
?>
|
В общем, убежал. Удачи!;) | |
|
|
|
|
|
|
|
для: Loki
(18.08.2005 в 17:57)
| | Loki спасибо большое за помощь!!!! | |
|
|
|
|
|
|
|
для: Loki
(18.08.2005 в 15:29)
| | да! кто-то может помочь в этом вопросе!!! очень нужно! | |
|
|
|