Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: блок новости...помогите подправить
 
 автор: virtus   (18.08.2005 в 15:25)   письмо автору
 
 

Привет!
Очень понравился Ваш блок новости!!! Вот что мне нужно. Хочу, что бы когда отображается выбранное количество новостей на сайте (не полные, а с ссылкой подробнее...) то были ссылки на след.страницы, т.е. у меня например в бд 21 новость, на странице отображается по 5 новостей... вот хочу, что бы были ссылки типа такого | 1 | 2 | 3 | 4 .... т.е. разбивка на страницы или на худой конец как на странице ПОЛНЫЕ НОВОСТИ.... СЛЕДУЮЩИЕ (значение переменной)....
буду благодарен если напишете решение... очень нужно!!!!
спасибо большое! очень жду ответа на вопрос!

   
 
 автор: Loki   (18.08.2005 в 15:29)   письмо автору
 
   для: virtus   (18.08.2005 в 15:25)
 

Почитайте вот эту статью:
http://www.softtime.ru/info/articlephp.php?id_article=33
если еще остануться вопросы, попробуйте поискать на форуме "постраничная навигация" - много раз поднимался вопрос.

   
 
 автор: virtus   (18.08.2005 в 15:35)   письмо автору
 
   для: Loki   (18.08.2005 в 15:29)
 

спасибо шас попробую...

   
 
 автор: virtus   (18.08.2005 в 16:18)   письмо автору
 
   для: 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 0$page2left ' <a href=?page='. ($page 2) .'>'. ($page 2) .'</a> | '
if(
$page 0$page1left '<a href=?page='. ($page 1) .'>'. ($page 1) .'</a> | '
if(
$page <= $total$page2right ' | <a href=?page='. ($page 2) .'>'. ($page 2) .'</a>'
if(
$page <= $total$page1right ' | <a href=?page='. ($page 1) .'>'. ($page 1) .'</a>'

// Вывод меню 
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage



?>
<br><br>

   
 
 автор: Loki   (18.08.2005 в 17:01)   письмо автору
 
   для: virtus   (18.08.2005 в 16:18)
 

посмотрите, передается ли по ссылке переменная $page. Есть подозрение что она потерялась.

   
 
 автор: virtus   (18.08.2005 в 17:22)   письмо автору
 
   для: Loki   (18.08.2005 в 17:01)
 

а как посмотреть? просто echo $pages?

   
 
 автор: Loki   (18.08.2005 в 17:27)   письмо автору
 
   для: virtus   (18.08.2005 в 17:22)
 

совершенно верно.
попробуйте вставить перед
if(empty($page) or $page < 0) $page = 1;

строчку
$page=$_GET['page'];

   
 
 автор: virtus   (18.08.2005 в 17:43)   письмо автору
 
   для: Loki   (18.08.2005 в 17:27)
 

ничего! тоже самое!!! в чем-то другом дело!!!

   
 
 автор: Loki   (18.08.2005 в 17:57)   письмо автору
 
   для: 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("Ошибка при обращении к блоку новостей"); 
?>

В общем, убежал. Удачи!;)

   
 
 автор: virtus   (18.08.2005 в 18:51)   письмо автору
 
   для: Loki   (18.08.2005 в 17:57)
 

Loki спасибо большое за помощь!!!!

   
 
 автор: baksoweb   (18.08.2005 в 16:50)   письмо автору
 
   для: Loki   (18.08.2005 в 15:29)
 

да! кто-то может помочь в этом вопросе!!! очень нужно!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования