Приветствую всех гуру PHP. Вопрос в следующем: имеется таблица в БД, в ней есть текстовое поле, которое содержит текст статьи с примерным количеством символов 5000-30000 или больше-меньше, текст разбит на несколько параграфов. Саму пагинацию я делать научился по кол-ву записей в таблице, а вот какой функцией воспользоваться для определения длины извлеченной строки из таблицы - не знаю. И другой вопрос, допустим я хочу разбить текст по 5000 символов на страницу, как сделать так, чтоб если этот пятитысячный символ заканчивается в середине параграфа, этот параграф печатался полностью на 1 странице, а 2 страница начиналась со следующего параграфа.
продолжу тему, вот тут немного накалякал: PHP: <?php include ("blocks/bd.php"); $result = mysql_query ("SELECT str FROM options WHERE id = '2'", $db); $myrow = mysql_fetch_array ($result); $num = $myrow["str"]; //получили число (1000) // Извлекаем из URL текущую страницу @$page = $_GET['page']; $result1 = mysql_query ("SELECT text FROM glavnaya WHERE id = '1'", $db); $myrow1 = mysql_fetch_array ($result1); $posts = strlen($myrow1['text']); //посчитали символы в тексте $total = (($posts - 1) / $num) + 1; $total = intval($total); $page = intval($page); if(empty($page) or $page < 0) $page = 1; if($page > $total) $page = $total; $start = $page * $num - $num; $result = mysql_query("SELECT text FROM glavnaya ORDER BY id LIMIT $start, $num" , $db); if (!$result) { echo "<p>К сожалению статьи нет.<br></p>"; } while (@$myrow = mysql_fetch_array ($result)) { printf("<p>%s</p>", $myrow['text']); } // Проверяем нужны ли стрелки назад if ($page != 1) $pervpage = '<a href=un-1.php?page=1>Первая</a> | <a href=un-1.php?page='. ($page - 1) .'>Предыдущая</a> | '; // Проверяем нужны ли стрелки вперед if ($page != $total) $nextpage = ' | <a href=un-1.php?page='. ($page + 1) .'>Следующая</a> | <a href=un-1.php?page=' .$total. '>Последняя</a>'; // Находим две ближайшие станицы с обоих краев, если они есть if($page - 5 > 0) $page5left = ' <a href=un-1.php?page='. ($page - 5) .'>'. ($page - 5) .'</a> | '; if($page - 4 > 0) $page4left = ' <a href=un-1.php?page='. ($page - 4) .'>'. ($page - 4) .'</a> | '; if($page - 3 > 0) $page3left = ' <a href=un-1.php?page='. ($page - 3) .'>'. ($page - 3) .'</a> | '; if($page - 2 > 0) $page2left = ' <a href=un-1.php?page='. ($page - 2) .'>'. ($page - 2) .'</a> | '; if($page - 1 > 0) $page1left = ' <a href=un-1.php?page='. ($page - 1) .'>'. ($page - 1) .'</a> | '; if($page + 5 <= $total) $page5right = ' | <a href=un-1.php?page='. ($page + 5) .'>'. ($page + 5) .'</a>'; if($page + 4 <= $total) $page4right = ' | <a href=un-1.php?page='. ($page + 4) .'>'. ($page + 4) .'</a>'; if($page + 3 <= $total) $page3right = ' | <a href=un-1.php?page='. ($page + 3) .'>'. ($page + 3) .'</a>'; if($page + 2 <= $total) $page2right = ' | <a href=un-1.php?page='. ($page + 2) .'>'. ($page + 2) .'</a>'; if($page + 1 <= $total) $page1right = ' | <a href=un-1.php?page='. ($page + 1) .'>'. ($page + 1) .'</a>'; // Вывод меню если страниц больше одной if ($total > 1) { Error_Reporting(E_ALL & ~E_NOTICE); echo "<div class=\"pstrnav\" align = \"center\">"; echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage; echo "</div>"; } ?> в пробном тексте примерно 17500 знаков, пагинатор выводит 18 страниц но загвоздка в том, что весь текст выводит на 1 странице, а остальные страницы пустые помогите добрым советом