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

Форум PHP

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

 

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

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

тема: Навигация для новостей
 
 автор: maxfade   (26.04.2007 в 15:01)   письмо автору
 
 

Ребят, помогите пожалуйста :)

Есть скрипт новостей с вашего сайта. Задача такая - необходимо сделать постраничную навигацию, вида << < ..2|3|<b>4</b>|5|6.. > >> как у вас в статье: http://www.softtime.ru/info/articlephp.php?id_article=33

Все делаю по статье, но не получается...


<?php
  
///////////////////////////////////////////////////
  // Блок "Новости"
  // 2003-2006 (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
  
// Выставляем уровень обработки ошибок (http://www.softtime.ru/info/articlephp.php?id_article=23)
  
Error_Reporting(E_ALL & ~E_NOTICE);

  
// Этот файл выводит первые $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' AND putdate <= NOW()");
  if (
$tot)
  {
    
$total mysql_result($tot,0);
    
// Если в базе новостей меньше чем $pnumber
    // выводим их без вывода ссылки "Все новости".
    
if($pnumber $total) echo "<p class='linkblock'><a href=news.php class='linkblock'>Все новости</a>";
  }
  else 
puterror("Ошибка при обращении к блоку новостей");
  
// Запрашиваем все видимые новости, т.е. те, у которых в базе данных hide='show',
  // если это поле будет равно 'hide', новость не будет отображаться на странице

$query "SELECT `news`.`id_news` AS `id_news`,
            `news`.`name` AS `name`,
            `news`.`body` AS `body`,
            `news`.`intro` AS `intro`,
             DATE_FORMAT(putdate,'%d.%m.%Y') AS putdate_format,
            `news`.`url` AS `url`,
            `news`.`url_text` AS `url_text`,
            `news`.`url_pict` AS `url_pict`,
            `news`.`cat_id` AS `cat_id`,
            `news`.`autor` AS `autor`,
            `cat`.`cat_name` AS `cat_name`
             FROM `news`,`cat`
             WHERE `news`.`cat_id`=`cat`.`cat_id` AND hide='show' AND putdate <= NOW()
             ORDER BY putdate DESC
             LIMIT 
$pnumber";


  
$new mysql_query($query);
  if(!
$newputerror("Ошибка при обращении к блоку новостей");
  if(
mysql_num_rows($new) > 0)
  {
        echo 
"<table>";
    while(
$news mysql_fetch_array($new))
    {
      echo 
"<div id=main_body1>";
      
// Выводим заголовок новости
      
echo "<tr><td><a class=anewsblock href=news.php?id_news=".$news['id_news']."><p class=newsblockzag><b>".$news['name']."</b></p></a>";
      echo 
"<tr><td><p id=bottom_text>Категория: &nbsp;<b>".$news['cat_name']."</b>&nbsp;|&nbsp;&nbsp;Создано:<em class=datanews>&nbsp;".$news['putdate_format']."</em></p>";


      
// Выводим анонс
      
echo "<tr><td class=newsblock>".$news['intro'];

      echo 
"<tr><td><br /><p id=bottom_text>Автор:&nbsp;<b>".$news['autor']."</b>&nbsp;&nbsp;|&nbsp;&nbsp;<a class=anewsblock href=news.php?id_news=".$news['id_news'].">Подробнее...</a>";
    }
      echo 
"</table>";
  }





<
br><br>

===============================================================
//Вставляю вот так:              ==========================================
===============================================================
$num 5;
// Извлекаем из URL текущую страницу
$page $_GET['page'];
// Определяем общее число сообщений в базе данных
$result mysql_query("SELECT COUNT(*) FROM news");
$posts mysql_fetch_row($result);
// Находим общее число страниц
$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))


// Проверяем нужны ли стрелки назад
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 0$page2left ' <a href= ./page?page='. ($page 2) .'>'. ($page 2) .'</a> | ';
if(
$page 0$page1left '<a href= ./page?page='. ($page 1) .'>'. ($page 1) .'</a> | ';
if(
$page <= $total$page2right ' | <a href= ./page?page='. ($page 2) .'>'. ($page 2) .'</a>';
if(
$page <= $total$page1right ' | <a href= ./page?page='. ($page 1) .'>'. ($page 1) .'</a>';

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



Структура таблицы:

Структура таблицы `news`
-- 

CREATE TABLE `news` (
  `id_news` int(11) NOT NULL auto_increment,
  `cat_id` int(11) NOT NULL default '0',
  `autor` tinytext NOT NULL,
  `name` tinytext NOT NULL,
  `body` text NOT NULL,
  `intro` text NOT NULL,
  `putdate` datetime NOT NULL default '0000-00-00 00:00:00',
  `url` tinytext NOT NULL,
  `url_text` tinytext NOT NULL,
  `url_pict` tinytext NOT NULL,
  `hide` enum('show','hide') NOT NULL default 'show',
  PRIMARY KEY  (`id_news`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=10 ;



Подскажите как правильно переделать скрипт постраничной навигации по вашей статье чтобы он работал в данном примере....

Заранее спасибо...

   
 
 автор: maxfade   (26.04.2007 в 15:39)   письмо автору
 
   для: maxfade   (26.04.2007 в 15:01)
 

Присмотрелся к скрипту, и заметил, что он из ссылки берет номер страницы, а как быть если у меня сылка вот такая: http://localhost/content/

Как применить данный скрипт для такого случая?

   
 
 автор: kviki   (26.04.2007 в 16:41)   письмо автору
 
   для: maxfade   (26.04.2007 в 15:39)
 

Может на этом примере получится?
<?
Error_Reporting(E_ALL & ~E_NOTICE);
include("config.php");
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
// устанавливаем число записей на странице
define('max', $pnumber);
// номер страницы получаем из GET переменной page
// нам подойдёт только целое число
$page = intval($_GET['page']);
$_GET['page'] = htmlspecialchars(stripslashes($_GET['page']));
if(empty($page) or $page < 0) $page = 1;
// выполняем запрос, который узнает число записей в таблице
$res = mysql_query('SELECT COUNT(*) FROM 'table');
// сохраняем результат в переменную
$kv = mysql_result($res, 0);
// узнаём общее число страниц
// round не подходит, т.к. иногда количество страниц будет определяться не правильно
$num = ceil($kv / max);
// выбираем записи, принадлежащие текущей странице
// не забываем отсортировать новости по дате добавления
$res = mysql_query('SELECT * FROM table
WHERE hide="show"
ORDER BY puttime DESC
LIMIT '.(($page - 1) * max).', '.max);
echo "<br>";
?>
<table class="table" border="1" cellpadding="3" cellspacing="0" width="90%" bordercolordark="white" bordercolorlight="silver">
<tr align="center">
<td height="20" class="title">
Дата</td>
<td class="title">Производитель</td>
<td class="title">Тип памяти</td>
<td class="title">Цена</td>
<td class="title">Телефон</td>
<td class="title">&nbsp;</td>
</tr>
<?
// выводим данные
while ($par = mysql_fetch_array($res))
{
echo "<tr class=row align=center onmouseover=trtover(this) onmouseout=trtout(this)>
<td>".$par['puttime']."</td>
<td>".$par['firm']."</td>
<td>".$par['tip']."</td>
<td>".$par['price']." (".$par['valyta'].")</td>
<td>(".$par['kod'].")".$par['tel']."</td>
</tr>";
}
echo "</table>";
echo "<br>";
echo "<center>";
// смотрим за тем, чтобы номер страницы не вылетел за диапазоны
if ($page < 1 || $page > $num) {
$page = 1;
}
print '<<';
// в цикле выводим ссылки на страницы
for ($i = 1; $i <= $num; $i++)
{
if ($page != $i)
{
print '<a href="index.php?page='.$i.'">'.$i.'</a> ';
}
else
{
// ссылку на текущею страницу не выводим
print '<font color="red">['.$i.']</font> ';
}
}
print '>>';
echo "</center>";
?>

   
 
 автор: mikha   (26.04.2007 в 18:11)   письмо автору
 
   для: maxfade   (26.04.2007 в 15:01)
 

Именно по этому примеру изучал постраничную навигацию.
Всё работало. Ищи где ошибаешься.

   
 
 автор: maxfade   (27.04.2007 в 18:50)   письмо автору
 
   для: mikha   (26.04.2007 в 18:11)
 

Спасибо, постраничная навигация получилась, только вот не выходит сделать объединение таблиц, которое у меня было сделано в запросе ранее:


"SELECT `news`.`id_news` AS `id_news`, 
            `news`.`name` AS `name`, 
            `news`.`body` AS `body`, 
            `news`.`intro` AS `intro`, 
             DATE_FORMAT(putdate,'%d.%m.%Y') AS putdate_format, 
            `news`.`url` AS `url`, 
            `news`.`url_text` AS `url_text`, 
            `news`.`url_pict` AS `url_pict`, 
            `news`.`cat_id` AS `cat_id`, 
            `news`.`autor` AS `autor`, 
            `cat`.`cat_name` AS `cat_name` 
             FROM `news`,`cat` 
             WHERE `news`.`cat_id`=`cat`.`cat_id` AND hide='show' AND putdate <= NOW() 



Подскажите где копать?

   
 
 автор: kviki   (27.04.2007 в 19:30)   письмо автору
 
   для: maxfade   (27.04.2007 в 18:50)
 

а точнее? что именно не получается? пример можно увидеть?

   
 
 автор: maxfade   (28.04.2007 в 06:13)   письмо автору
73.8 Кб
 
   для: kviki   (27.04.2007 в 19:30)
 

Вроде получилось все сделать использую статью: http://www.softtime.ru/info/articlephp.php?id_article=33 , только подправил вот эти строки:


$result = mysql_query("SELECT * FROM news");
$posts = mysql_num_rows($result);


Но в итоге получается что вродебы все верно, но вот косяк в следующем. На каждой странице выводиться по пять новостей.
Допустим всего их 6-ть, значит на первой странице 5-ть на второй выводиться 1-на, но после нее выводяться в цикле пустые поля остальных 4-х.

Вот код:



<?php
  
///////////////////////////////////////////////////
  // Блок "Новости"
  // 2003-2006 (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
  
// Выставляем уровень обработки ошибок (http://www.softtime.ru/info/articlephp.php?id_article=23)
  
Error_Reporting(E_ALL & ~E_NOTICE);

  
// Этот файл выводит первые $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' AND putdate <= NOW()");
  if (
$tot)
  {
    
$total mysql_result($tot,0);
    
// Если в базе новостей меньше чем $pnumber
    // выводим их без вывода ссылки "Все новости".
    
if($pnumber $total) echo "<p class='linkblock'><a href=news.php class='linkblock'>Все новости</a>";
  }
  else 
puterror("Ошибка при обращении к блоку новостей");
  
// Запрашиваем все видимые новости, т.е. те, у которых в базе данных hide='show',
  // если это поле будет равно 'hide', новость не будет отображаться на странице

$query "SELECT `news`.`id_news` AS `id_news`,
            `news`.`name` AS `name`,
            `news`.`body` AS `body`,
            `news`.`intro` AS `intro`,
             DATE_FORMAT(putdate,'%d.%m.%Y') AS putdate_format,
            `news`.`url` AS `url`,
            `news`.`url_text` AS `url_text`,
            `news`.`url_pict` AS `url_pict`,
            `news`.`cat_id` AS `cat_id`,
            `news`.`autor` AS `autor`,
            `cat`.`cat_name` AS `cat_name`
             FROM `news`,`cat`
             WHERE `news`.`cat_id`=`cat`.`cat_id` AND hide='show' AND putdate <= NOW()
             ORDER BY putdate DESC
             LIMIT 
$pnumber";




   
?>
<br /><br />

<?php
// Устанавливаем соединение с базой данных
include "../config.php";
// Переменная хранит число сообщений выводимых на станице
$num 5;
// Извлекаем из URL текущую страницу
$page $_GET['page'];
// Определяем общее число сообщений в базе данных

$result mysql_query("SELECT * FROM news");
$posts mysql_num_rows($result);
// Находим общее число страниц
$total floor (($posts 1) / $num) + 1;
// Определяем начало сообщений для текущей страницы
$page floor ($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 `news`.`id_news` AS `id_news`,
            `news`.`name` AS `name`,
            `news`.`body` AS `body`,
            `news`.`intro` AS `intro`,
             DATE_FORMAT(putdate,'%d.%m.%Y') AS putdate_format,
            `news`.`url` AS `url`,
            `news`.`url_text` AS `url_text`,
            `news`.`url_pict` AS `url_pict`,
            `news`.`cat_id` AS `cat_id`,
            `news`.`autor` AS `autor`,
            `cat`.`cat_name` AS `cat_name`
             FROM `news`,`cat`
             WHERE `news`.`cat_id`=`cat`.`cat_id` AND hide='show' AND putdate <= NOW()
             ORDER BY putdate DESC

 LIMIT 
$start$num");
// В цикле переносим результаты запроса в массив $postrow
while ( $postrow[] = mysql_fetch_array($result))
?>

<?php
echo "<table>";
for(
$i 0$i $num$i++)
{


      
// Выводим заголовок новости
      
echo "<tr><td><a class=anewsblock href=news.php?id_news=".$postrow[$i]['id_news']."><p class=newsblockzag><b>".$postrow[$i]['name']."</b></p></a></td></tr>";
      echo 
"<tr><td><p id=bottom_text>Категория: &nbsp;<b>".$postrow[$i]['cat_name']."</b>&nbsp;|&nbsp;&nbsp;Создано:<em class=datanews>&nbsp;".$postrow[$i]['putdate_format']."</em></p></td></tr>";


      
// Выводим анонс
      
echo "<tr><td class=newsblock>".$postrow[$i]['intro'];

      echo 
"<tr><td><br /><p id=bottom_text>Автор:&nbsp;<b>".$postrow[$i]['autor']."</b>&nbsp;&nbsp;|&nbsp;&nbsp;<a class=anewsblock href=news.php?id_news=".$postrow[$i]['id_news'].">Подробнее...</a></td></tr>";




}
echo 
"</table><br /> <br />";
?>


<?php
// Проверяем нужны ли стрелки назад
if ($page != 1$pervpage '<a href= ./index.php?page=1><<</a>
                               <a href= ./index.php?page='
. ($page 1) .'><</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total$nextpage ' <a href= ./index.php?page='. ($page 1) .'>></a>
                                   <a href= ./index.php?page=' 
.$total'>>></a>';

// Находим две ближайшие станицы с обоих краев, если они есть
if($page 0$page2left ' <a href= ./index.php?page='. ($page 2) .'>'. ($page 2) .'</a> | ';
if(
$page 0$page1left '<a href= ./index.php?page='. ($page 1) .'>'. ($page 1) .'</a> | ';
if(
$page <= $total$page2right ' | <a href= ./index.php?page='. ($page 2) .'>'. ($page 2) .'</a>';
if(
$page <= $total$page1right ' | <a href= ./index.php?page='. ($page 1) .'>'. ($page 1) .'</a>';

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

<br /> <br />





В качестве примера прикрепил картинку: http://softtime.ru/forum/files/36587-20070428062204.JPG

Подскажите в чем косяк?

   
 
 автор: kviki   (28.04.2007 в 08:49)   письмо автору
 
   для: maxfade   (28.04.2007 в 06:13)
 

в своем примере я использовал такого рода конструкцию для вы вода данных
<td>".$par['puttime']</td>
попробуй убрать цикл for($i = 0; $i < $num; $i++)
и не использоваться массив $postrow[$i]['intro']; ,
а воспользоваться
echo "<tr><td class=newsblock>".$postrow['intro'];

   
 
 автор: maxfade   (28.04.2007 в 09:57)   письмо автору
 
   для: kviki   (28.04.2007 в 08:49)
 

Действительно :)

Вот правильный код с постраниченой навигацией, который работает на 100%:


<?php
  
///////////////////////////////////////////////////
  // Блок "Новости"
  // 2003-2006 (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
  
// Выставляем уровень обработки ошибок (http://www.softtime.ru/info/articlephp.php?id_article=23)
  
Error_Reporting(E_ALL & ~E_NOTICE);

  
// Этот файл выводит первые $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' AND putdate <= NOW()");
  if (
$tot)
  {
    
$total mysql_result($tot,0);
    
// Если в базе новостей меньше чем $pnumber
    // выводим их без вывода ссылки "Все новости".
    
if($pnumber $total) echo "<p class='linkblock'><a href=news.php class='linkblock'>Все новости</a>";
  }
  else 
puterror("Ошибка при обращении к блоку новостей");
  
// Запрашиваем все видимые новости, т.е. те, у которых в базе данных hide='show',
  // если это поле будет равно 'hide', новость не будет отображаться на странице


// Переменная хранит число сообщений выводимых на станице
$num 5;
// Извлекаем из URL текущую страницу
$page $_GET['page'];
// Определяем общее число сообщений в базе данных

$result mysql_query("SELECT * FROM news");
$posts mysql_num_rows($result);
// Находим общее число страниц
$total floor (($posts 1) / $num) + 1;
// Определяем начало сообщений для текущей страницы
$page floor ($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 `news`.`id_news` AS `id_news`,
            `news`.`name` AS `name`,
            `news`.`body` AS `body`,
            `news`.`intro` AS `intro`,
             DATE_FORMAT(putdate,'%d.%m.%Y') AS putdate_format,
            `news`.`url` AS `url`,
            `news`.`url_text` AS `url_text`,
            `news`.`url_pict` AS `url_pict`,
            `news`.`cat_id` AS `cat_id`,
            `news`.`autor` AS `autor`,
            `cat`.`cat_name` AS `cat_name`
             FROM `news`,`cat`
             WHERE `news`.`cat_id`=`cat`.`cat_id` AND hide='show' AND putdate <= NOW()
             ORDER BY putdate DESC

 LIMIT 
$start$num");
// В цикле переносим результаты запроса в массив $postrow
echo "<table>";
while ( 
$postrow mysql_fetch_array($result))

{


      
// Выводим заголовок новости
      
echo "<tr><td><a class=anewsblock href=news.php?id_news=".$postrow['id_news']."><p class=newsblockzag><b>".$postrow['name']."</b></p></a></td></tr>";
      echo 
"<tr><td><p id=bottom_text>Категория: &nbsp;<b>".$postrow['cat_name']."</b>&nbsp;|&nbsp;&nbsp;Создано:<em class=datanews>&nbsp;".$postrow['putdate_format']."</em></p></td></tr>";


      
// Выводим анонс
      
echo "<tr><td class=newsblock>".$postrow['intro'];

      echo 
"<tr><td><br /><p id=bottom_text>Автор:&nbsp;<b>".$postrow['autor']."</b>&nbsp;&nbsp;|&nbsp;&nbsp;<a class=anewsblock href=news.php?id_news=".$postrow['id_news'].">Подробнее...</a></td></tr>";




}
echo 
"</table><br /> <br />";


// Проверяем нужны ли стрелки назад
if ($page != 1$pervpage '<a href= ./index.php?page=1><<</a>
                               <a href= ./index.php?page='
. ($page 1) .'><</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total$nextpage ' <a href= ./index.php?page='. ($page 1) .'>></a>
                                   <a href= ./index.php?page=' 
.$total'>>></a>';

// Находим две ближайшие станицы с обоих краев, если они есть
if($page 0$page2left ' <a href= ./index.php?page='. ($page 2) .'>'. ($page 2) .'</a> | ';
if(
$page 0$page1left '<a href= ./index.php?page='. ($page 1) .'>'. ($page 1) .'</a> | ';
if(
$page <= $total$page2right ' | <a href= ./index.php?page='. ($page 2) .'>'. ($page 2) .'</a>';
if(
$page <= $total$page1right ' | <a href= ./index.php?page='. ($page 1) .'>'. ($page 1) .'</a>';

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

<br /> <br />




Всем спасибо, тему можно считать закрытой. :)

   
 
 автор: Trianon   (28.04.2007 в 10:06)   письмо автору
 
   для: maxfade   (28.04.2007 в 06:13)
 

Корень Ваших бед - вот эта конструкция


while ( $postrow[] = mysql_fetch_array($result)) 
?> 
<?php 


Она, хотя и взята из примера, но содержит сразу два подводных камня, и автору этого примера за такой код очень хочется кое-что прищемить.
Первый камень - отсутствие оператора тела цикла. Только волюнтаризм синтаксиса php разрешает неоднозначность в пустой оператор.
Второй камень - то, что в последний элемент массива $postrow попадает значение false, нахрен там никому не сдавшееся.
корректный код выглядит примерно так:

for($postrow=array(); $row = mysql_fetch_array($result); ) 
    $postrow[]=$row;

либо так:

for($postrow=array(); $row = mysql_fetch_array($result); $postrow[]=$row) 
  ;


Администраторы форума, почему то эту статью очень любят. Настолько, что не исправляют даже явный баг в строке $posts = mysql_fetch_row($result); не смотря на то, что им указывали на него неоднократно. Интересно, кто, всё ж таки, автор этой статьи?

   
Rambler's Top100
вверх

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