|
|
|
| Здравствуйте.
Подскажите ка большой текст разбить по страницам.
Текст берется из БД.
<?
$sql_text = mysql_fetch_assoc(mysql_query("SELECT text FROM cat WHERE id='$id_cat' LIMIT 1"));
$text = nl2br(htmlspecialchars(trim($sql_text['text'])));
echo $text;
?>
|
Выводит большой объем текста, вот его необходимо разбить по страницам. | |
|
|
|
|
|
|
|
|
для: oliss
(05.03.2010 в 08:37)
| | Перечитайте моё сообщение ещё раз и посмотрите на код. | |
|
|
|
|
|
|
|
для: class
(05.03.2010 в 07:32)
| | Сам разобрался =)
Тему можно закрыть. | |
|
|
|
|
|
|
|
для: class
(05.03.2010 в 08:59)
| | тему можно будет закрыть, когда Вы покажете решение. | |
|
|
|
|
|
|
|
для: Trianon
(05.03.2010 в 10:25)
| |
<?
$sql_text = mysql_fetch_assoc(mysql_query("SELECT text FROM cat WHERE id='$id_cat' LIMIT 1"));
$text = htmlspecialchars(trim($sql_text['text']));
$page = abs(intval(@$_GET['p']));
$content = wordwrap($text, 1000, "%%");
$text = preg_split("|%%|", $content);
$c = count($text);
if($page < 0 || $page >= $c){
$page = 0;
}
echo nl2br($text[$page]);
if($c > 1){
echo '<b>Страницы:</b> ';
for($i=0;$i<$c;$i++){
if($page != $i){
echo '<a href="?p='.$i.'">'.($i+1).'</a> ';
}else{
echo '<b>'.($i+1).'</b> ';
}
}
?>
|
| |
|
|
|
|
|
|
|
для: class
(05.03.2010 в 10:52)
| | это плохое решение.
Корректное решение выполнит разбиение один раз при загрузке контента, и в дальнейшем будет полагаться на его результаты - разделение на страницы будет посчитано заранее, а составленный индекс сохранен в таблице. Это
а) не потребует загружать весь текст в оперативную память - только нужный кусок.
б) не потребует гонять preg при каждом обращении к постраничке и тексту
Нечто подобное, помнится, проделывала здесь Лена энное количество времени назад. | |
|
|
|