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

Форум PHP

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

 

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

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

тема: Большой текст на страницы
 
 автор: MaxTax   (07.01.2008 в 21:06)   письмо автору
 
 

Есть задача разбить большой текст на страницы (текст из базы данных)
Как вариант идеально подходит разбивка по специальному маркету (тега) типа [pagebreak] <-- pagebleak -->
Перерыл И-нет но решения не нашел, хотя во многих популярных CMS это импользуется
Спасибо!

   
 
 автор: Unkind   (07.01.2008 в 21:10)   письмо автору
 
   для: MaxTax   (07.01.2008 в 21:06)
 

А это separator нужен затем, что страницы разного веса могут быть? То есть разделять текст Вы будете сами? По-моему, проще каждую страницу хранить в отдельной записи в таблице.
В противном случае можно воспользоваться explode()

   
 
 автор: MaxTax   (07.01.2008 в 22:04)   письмо автору
 
   для: Unkind   (07.01.2008 в 21:10)
 

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

Вот нашел и попытался под свои нужды переделать
все хорошо но при переходе на следующую страницу все остается на местах


## CUSTOMIZE ##
$delimiter = '{BREAK}';
$tplLinkNext = '<a href="[+link+]">наступна</a>';
$tplLinkPrev = '<a href="[+link+]">попередня</a>';
$tplLinkNav = '
  <div style="margin-top: 10px;font-size: small;">
  [+linkprev+]
  &nbsp;Page [+current+] of [+total+]&nbsp;
  [+linknext+] 
  </div>';

    $pip_content = $row_art['body'];
    $pip_pagecontent = explode($delimiter,$pip_content);
    $pip_pagecount = count($pip_pagecontent);
    
    if ($pip_pagecount > 1)
    {
      $pip_currentpage = isset($_GET["page"]) ? $_GET["page"]: 1;
      if ($pip_currentpage > $pip_pagecount || $pip_currentpage < 1) { $pip_currentpage = 1; }
    
      $char = "?";
      $url = $char.'page=';
      
      $prevpage = $pip_currentpage-1;
      $nextpage = $pip_currentpage+1;
      
      $linkprev = ($prevpage>0) ? str_replace("[+link+]",$url.$prevpage,$tplLinkPrev) : '';
      $linknext = ($nextpage>$pip_pagecount) ? '' : str_replace("[+link+]",$url.$nextpage,$tplLinkNext);
      
      $pip_template = str_replace("[+linkprev+]",$linkprev,$tplLinkNav);
      $pip_template = str_replace("[+linknext+]",$linknext,$pip_template);
      $pip_template = str_replace("[+total+]",$pip_pagecount,$pip_template);
      $pip_template = str_replace("[+current+]",$pip_currentpage,$pip_template);
    
      $pip_content= $pip_pagecontent[$pip_currentpage-1].$pip_template;
    }
    echo $pip_content;

   
 
 автор: Unkind   (07.01.2008 в 22:08)   письмо автору
 
   для: MaxTax   (07.01.2008 в 22:04)
 

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

   
 
 автор: MaxTax   (07.01.2008 в 22:53)   письмо автору
 
   для: Unkind   (07.01.2008 в 22:08)
 

Может и надо было так сделать. Да уже поздно все готово работу надо сдавать. А требование появилось недавно

   
 
 автор: MaxTax   (09.01.2008 в 01:25)   письмо автору
 
   для: MaxTax   (07.01.2008 в 22:04)
 

Разобрался в коде все впорядке. Это моя невнимательность.

   
 
 автор: MaxTax   (08.01.2008 в 22:10)   письмо автору
 
   для: MaxTax   (07.01.2008 в 21:06)
 

Подскажите по коду что не так. Почему не формируется вторая страница

   
 
 автор: Unkind   (08.01.2008 в 22:18)   письмо автору
 
   для: MaxTax   (08.01.2008 в 22:10)
 

Грязноватый код. Быстрее написать новый, чем копаться в этом.

<?php
// ...

$text 'Page #1{SEPARATOR}Page #2{SEPARATOR}Page #3';
$text explode('{SEPARATOR}'$text);

$page = isset( $_GET['page'] ) ? (int) $_GET['page'] : 0;

if( 
$page $page 0;
if( 
$page count($text) - $page count($text) - 1;

echo 
nl2br(htmlspecialchars($text$page ])) . "<br />\r\n";

if( isset(
$text$page ]) )
{
    echo 
"<a href='" $_SERVER['PHP_SELF'] . "?page=" . ($page 1) . "'>Далее</a><br />\r\n";
}

if( isset(
$text$page ]) )
{
    echo 
"<a href='" $_SERVER['PHP_SELF'] . "?page=" . ($page 1) . "'>Назад</a><br />\r\n";
}

// ...
?>

   
Rambler's Top100
вверх

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