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

Форум PHP

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

 

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

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

тема: Взаимодействие постраничной навигации со Smarty
 
 автор: testreal@i.ua   (13.12.2010 в 16:23)   письмо автору
 
 

Доброго времени суток!
Возникла такая проблема:
Делаю сайт с шаблонами Smarty. Всё чудесно но не могу понять одну вещь.
Задача следующая: Используя шаблоны смарти нужно реализовать постраничную навигацию.

Но сама навигация работает не совсем правильно. Работает нормально только в том случае, если на одной странице выводить одну запись.

Дело в том что когда на страницу выводить больше чем одну запись, то на последней странице навигация не выводиться. Без смарти навигация работает чудесно.

И так, есть файлы:
config.php в котором производиться подключение к базе;
view_sect.php код которого ниже:
<?
include("../../config.php");
$smartyA2 = new Smarty;
$smartyA2->register_function("BODY""getCatlist");
function 
getCatlist()
{
include(
"function/cat_list.php");
}
$smartyA2->display('TPL_BL_CAT');
?>


и cat_list.php
(не обращайте внимание на то что здесь логика и представление в перемешку, для чего смарти я знаю:))
<?php
include("../../config.php");
if (isset(
$_GET['id'])) {$id $_GET['id']; }
if (!isset(
$id)) {$id 1;}

/* Проверяем, является ли переменная числом */
if (!preg_match("|^[\d]+$|"$id)) {
$i_uri 1;
}

$smartyA = new Smarty;
$smartyA->register_function("CAT_ID""get_CatID");
$smartyA->register_function("TITLE""get_CatTitle");
$smartyA->register_function("DESCRIPTION""get_CatDescription");
$smartyA->register_function("KEYWORDS""get_CatMeta_k");
$smartyA->register_function("TEXT""get_CatText");
$smartyA->register_function("SECTION""get_CatSect");
         
      function 
get_CatID()
      {   
         return 
$GLOBALS['id'];
      }
      function 
get_CatTitle()
      {   
         
$title $myrow['title'];
         
$smarty = new Smarty;
         
$title $smarty->display('cat_title:'.$GLOBALS['id']);
         return 
$title;
      }
      function 
get_CatDescription()
      {      
         
$meta_d $myrow['meta_d'];
         
$smarty = new Smarty;
         
$meta_d $smarty->display('cat_meta_d:'.$GLOBALS['id']);
         return 
$meta_d;
      }
      function 
get_CatMeta_k()
      {   
         
$meta_k $myrow['meta_k'];
         
$smarty = new Smarty;
         
$meta_k $smarty->display('cat_meta_k:'.$GLOBALS['id']);
         return 
$meta_k;
      }
      function 
get_CatText()
      {   
         
$text $myrow['text'];
         
$smarty = new Smarty;
         
$text $smarty->display('cat_text:'.$GLOBALS['id']);
         return 
$text;
      }
      function 
get_CatSect()
      {   
         
$title $GLOBALS['sect_title'];
         
$smarty = new Smarty;
         
$title $smarty->display('sect_title:'.$id);
         return 
$title;
      }
      
   @
$result2 mysql_query("SELECT * FROM section"$pos_db);
      if (@
mysql_num_rows($result2) > 0)
   {
      
$myrow2 mysql_fetch_array($result2);
   }
   else
   {
      
$not 1;
   }
   if(!
$result2)
   {
      unset(
$not);
      return 
'';
   }
   if(isset(
$i_uri))
   {
   echo 
$pos_invalid_format_qwery;
   }   
   if(isset(
$not) && $result2)
   {
      return 
'';
   }   
   if(
$result2 && !isset($not))
   {
      
      
$GLOBALS['sect_title'] = $myrow2['title'];
   }

$result77 mysql_query("SELECT str FROM options"$pos_db);
$myrow77 mysql_fetch_array($result77);
$num $myrow77["str"];
// Извлекаем из URL текущую сторінку
@$page $_GET['page'];
// Определяем общее число сообщений в базе данных
$result00 mysql_query("SELECT COUNT(*) FROM categories WHERE sect='$id'");
if (!
$result00)
{
$not 1;

}
$temp mysql_fetch_array($result00);
$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;
$num2 $num;
$num4 = ($page $num) - 1;
// Выбираем $num сообщений начиная с номера $start
/*----------------------------------------------------------------------*/   
      
for($i $start$i <= $num4$i++)
      {
         @
$result mysql_query("SELECT * FROM categories WHERE sect='$id' LIMIT $i$num2"$pos_db);
   if (@
mysql_num_rows($result) > 0)
   {
      
$myrow mysql_fetch_array($result);
   }
   else
   {
      
$not 1;
   }
   if(!
$result)
   {
      unset(
$not);
      return 
'';
   }
   if(isset(
$not) && $result)
   {
      return 
'';
   }   
   if(
$result && !isset($not))
   {
      
$GLOBALS['id'] = $myrow['id'];
      
$smartyA->display('TPL_BL_CAT_LIST');
   }
      
   }
/*--------------------------------------------------------------*/   
/* ПОСТРАНИЧНАЯ НАВИГАЦИЯ */
// Проверяем нужны ли стрелки назад
if ($page != 1){ $pervpage '<a href=view_sect.php?id='.$id.'&page=1>Перша</a> | <a href=view_sect.php?id='.$id.'&page='. ($page 1) .'>Попередня</a> | '; }
// Проверяем нужны ли стрелки вперед
if ($page != $total){ $nextpage ' | <a href=view_sect.php?id='.$id.'&page='. ($page 1) .'>Наступна</a> | <a href=view_sect.php?id='.$id.'&page=' .$total'>Остання</a>'; }

// Находим две ближайшие станицы с обоих краев, если они есть
if($page 0$page5left ' <a href=view_sect.php?id='.$id.'&page='. ($page 5) .'>'. ($page 5) .'</a> | ';
if(
$page 0$page4left ' <a href=view_sect.php?id='.$id.'&page='. ($page 4) .'>'. ($page 4) .'</a> | ';
if(
$page 0$page3left ' <a href=view_sect.php?id='.$id.'&page='. ($page 3) .'>'. ($page 3) .'</a> | ';
if(
$page 0$page2left ' <a href=view_sect.php?id='.$id.'&page='. ($page 2) .'>'. ($page 2) .'</a> | ';
if(
$page 0$page1left '<a href=view_sect.php?id='.$id.'&page='. ($page 1) .'>'. ($page 1) .'</a> | ';

if(
$page <= $total$page5right ' | <a href=view_sect.php?id='.$id.'&page='. ($page 5) .'>'. ($page 5) .'</a>';
if(
$page <= $total$page4right ' | <a href=view_sect.php?id='.$id.'&page='. ($page 4) .'>'. ($page 4) .'</a>';
if(
$page <= $total$page3right ' | <a href=view_sect.php?id='.$id.'&page='. ($page 3) .'>'. ($page 3) .'</a>';
if(
$page <= $total$page2right ' | <a href=view_sect.php?id='.$id.'&page='. ($page 2) .'>'. ($page 2) .'</a>';
if(
$page <= $total$page1right ' | <a href=view_sect.php?id='.$id.'&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>";
}
/* /// ПОСТРАНИЧНАЯ НАВИГАЦИЯ */

?>

Собственно работать надо именно над ним.
Подскажите пожалуйста, кто знает.;)

  Ответить  
 
 автор: sim5   (13.12.2010 в 17:00)   письмо автору
 
   для: testreal@i.ua   (13.12.2010 в 16:23)
 

Зачем вам Смарти, если вы практически его не используете?

  Ответить  
 
 автор: kosta_in_net   (13.12.2010 в 18:41)   письмо автору
 
   для: testreal@i.ua   (13.12.2010 в 16:23)
 

Шаблоны смерти - это костыли. Отбрось их, чтобы научиться ходить самостоятельно

  Ответить  
Rambler's Top100
вверх

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