Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разбивка на страницы, что-то я малец запутался 
:(
    Опции темы
Kirill Baranov
Дата 10.5.2006, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: нет
Всего: -2



Есть у меня текст и внутри текста стоят тэги {pagebreak}. Как сделать, чтобы эти тэги разбивали текст на части и делали хотя б простейшее оглавление?! ЗАпутался просто уже. 
PM MAIL   Вверх
Kirill Baranov
Дата 10.5.2006, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: нет
Всего: -2



Вот что у меня получается пока что:
Код

$text_do='weoiufhweif hweiu{pagebreak} fhweiufhiwuehiuweh fiuwe hfiuwehuif {pagebreak} weoiwe jiowje riowjoi ';

$regex = '/{(pagebreak)\s*(.*?)}/i';

// найти все образцы разрыва страницы и вставить в $matches
$matches = array();
preg_match_all( $regex, $text_do, $matches, PREG_SET_ORDER );

// тэги разрыва текста
$text = preg_split( $regex, $text_do );

// подсчет числа страниц
$n = count( $text );


Добавлено @ 21:44 
Если кому интересно это или вообще надо, то вот что у меня получилось:
Код

$text_do='Страница 1{pagebreak} Страница 2 {pagebreak} Страница 3';

$regex = '/{(pagebreak)\s*(.*?)}/i';

// найти все образцы разрыва страницы и вставить в $matches
$matches = array();
preg_match_all( $regex, $text_do, $matches, PREG_SET_ORDER );

// тэги разрыва текста
$text = preg_split( $regex, $text_do );

// подсчет числа страниц
$n = count( $text );
$page="0";
echo $text[$page];


Сейчас буду делать систему динамического создания навигации  

Это сообщение отредактировал(а) Kirill Baranov - 12.5.2006, 22:34
PM MAIL   Вверх
Kirill Baranov
Дата 12.5.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: нет
Всего: -2



Код

$text_do='Страница 1{pagebreak title=Начало}Страница 2{pagebreak}Страница 3';

$regex = '/{(pagebreak)\s*(.*?)}/i';

// найти все образцы разрыва страницы и вставить в $matches
$matches = array();
preg_match_all( $regex, $text_do, $matches, PREG_SET_ORDER );

// тэг разрыва текста
$text = preg_split( $regex, $text_do );

// подсчет числа страниц
$n = count( $text );

if (!$page) $page="0";

echo '<table border="1" align="right">
<tr>
<td>Оглавление</td>
</tr>
';
$i=$n-$n;
while ($i<$n) {
    echo '<tr><td><a href="test.php?page='.$i.'">Страница '.($i+1).'</a></td></tr>';
    $i++;;
}
echo '</table>';
echo $text[$page];


В первом тэге разрыва страница поставил title, который по идее будет называть страницы не "Страница 1", "Страница 2", а брать именно называние title из тэга {pagebreak}. Как это лучше реализовать? 
PM MAIL   Вверх
ZlojEzh
Дата 13.5.2006, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 8.10.2005
Где: Киев, Украина

Репутация: 2
Всего: 15



Код

  $regex = '/{(pagebreak)(\s*title=([^}]+))*}/i';
  preg_match_all($regex, $text_do, $matches);
  $titles = $matches[3];
 
PM MAIL ICQ   Вверх
Kirill Baranov
Дата 14.5.2006, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: нет
Всего: -2



Спасибо большое) уставший я - не сразу въехал) фенькс вери мач...  

Это сообщение отредактировал(а) Kirill Baranov - 14.5.2006, 18:47
PM MAIL   Вверх
Kirill Baranov
Дата 14.5.2006, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: нет
Всего: -2



Вот что у меня получилось. Разрыв страницы надо ставить внизу каждой страницы.
ТЭГ разрыва страницы {pagebreak}, а если хотите, чтобы было название у страницы, то надо сделать так {pagebreak title=Название страницы}

Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
   <META HTTP-EQUIV="Pragma" CONTENT="no-cache"><?
include ("../../functions/mysql.php");

// Вывод конкретной новости
 
$sql = MySQL_Query("SELECT * FROM td_newspaper WHERE id='$arr[3]' OR id='$_GET[n]'") or die ("Select error");
$sqrtc=mysql_num_rows($sql);

    if ($sqrtc > 0) {
        while ($line = mysql_fetch_array($sql)) {
            if($_GET[n]) {
                echo "<title>".$line["zagolovok"]."</title>";
            }
$date_num=explode(".", $line["date"]);
?>
<link href="sft.css" rel="stylesheet" type="text/css">
</head>
<body style="font-family:Verdana, Arial, Helvetica, sans-serif">
<?
            
// == НАЧАЛО ПАГИНАЦИИ
$text_do=$line[text];

$regex = '/{(pagebreak)(\s*title=([^}]+))*}/i';

// найти все образцы разрыва страницы и вставить в $matches
$matches = array();
preg_match_all( $regex, $text_do, $matches);
$titles = $matches[3];

// место разрыва текста
$text = preg_split( $regex, $text_do );

// подсчет числа страниц
$n = count( $text );
$n=$n-1;
if (!$page) $page="0";

// if ($n=='0') {
echo '<table width="200" border="0" align="right" cellspacing="3" cellpadding="5" style="border:1px solid #cccccc; margin:10px;">
<tr>
<td><strong>Содержание номера</strong></td>
</tr>';

$pagenextext=$text[$n];

$i=$n-$n;
while ($i<$n) {
    if ($titles[$i]!="") {
        $pagetitle=$titles[$i];
    } else {
        $pagetitle='Страница '.($i+1).'';
    }
    if ($page==$i) { $bgolor='bgcolor="#EEEEEE" style="border:1px dashed #333333"'; } else { $bgolor='style="border:1px solid #FFFFFF"'; }
//    if ($i=="0") { $pagetitle="Начало"; }
    echo '<tr><td '.$bgolor.' valign="middle"><a href="read.php?n='.$line["id"].'&page='.($i).'">'.$pagetitle.'</a></td></tr>';
    $i++;
    $pagetitle="";
}
echo '</table>';

//}
// == КОНЕЦ ПАГИНАЦИИ
            
            echo "<div style=\"padding-left:15px;padding-right:15px;\" align=\"justify\"><font size=2 color=#333333 face=Verdana>$text[$page]</font></span>";
}
///////////////////////////////////////
    } else {
        echo "<font color=red><b>Извините, но такой новости не существует $arr[4]</b></font>";
    }
?>
</body></html>


Если будут какие идеи и соображения, пишите.  

Это сообщение отредактировал(а) Kirill Baranov - 16.5.2006, 23:03
PM MAIL   Вверх
Kirill Baranov
Дата 17.5.2006, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: нет
Всего: -2



Вопрос к профи: правильно ли сделан скрипт и сильно ли он тормозит генерацию страницы? 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0627 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.