[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод из MySQL
aries
Здравствуйте.
Подскажите как сделать вывод статей из MySQL не в полном виде, а только начальный текст с сылкой "читать дальше"?
И привязать это к постраничной навигации.
Постраничная навигация есть, если надо - код напишу.


_____________
Patrick
Или обрезай строку(что не лучший вариант) или сделай ищё одно поле "краткое описание" - вот его и выводи...
levis
извлекаете весь текст,а потом обрезаете с substr и выводите
aries
Цитата(levis @ 25.2.2007, 9:21) [snapback]14198[/snapback]

извлекаете весь текст,а потом обрезаете с substr и выводите

Просто я новичек и мне не понять как это все сделать, Вы ведь понимаете вэтом, объясните как обрезать и еще привязать это к постраничной навигации.
Постраничная навигация такая:

PHP
  1. <?php
  2. function yandex_link_bar($page, $count, $pages_count, $show_link)
  3.  
  4. {
  5. // $show_link - это количество отображаемых ссылок;
  6. // нагляднее будет, когда это число будет парное
  7. // Если страница всего одна, то вообще ничего не выводим
  8. if ($pages_count == 1) return false;
  9. $sperator = ' '; // Разделитель ссылок; например, вставить "|" между ссылками
  10. // Для придания ссылкам стиля
  11. $style = 'style="color: #003399; text-decoration: none;"';
  12. $begin = $page - intval($show_link / 2);
  13. unset($show_dots); // На всякий случай
  14. // Сам постраничный вывод
  15. // Если количество отображ. ссылок больше кол. страниц
  16. if ($pages_count <= $show_link + 1) $show_dots = 'no';
  17. // Вывод ссылки на первую страницу
  18. if (($begin > 2) && ($pages_count - $show_link > 2)) {
  19. echo '<a '.$style.' href='.$_SERVER['PHP_SELF'].'?page=1> |< </a> ';
  20. }
  21. for ($j = 0; $j <= $show_link; $j++) // Основный цикл вывода ссылок
  22. {
  23. $i = $begin + $j; // Номер ссылки
  24. // Если страница рядом с началом, то увеличить цикл для того,
  25. // чтобы количество ссылок было постоянным
  26. if ($i < 1) continue;
  27. // Подобное находится в верхнем цикле
  28. if (!isset($show_dots) && $begin > 1) {
  29. echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.($i-1).'><b>...</b></a> ';
  30. $show_dots = "no";
  31. }
  32. // Номер ссылки перевалил за возможное количество страниц
  33. if ($i > $pages_count) break;
  34. if ($i == $page) {
  35. echo ' <a '.$style.' ><b>'.$i.'</b></a> ';
  36. } else {
  37. echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.$i.'>'.$i.'</a> ';
  38. }
  39. // Если номер ссылки не равен кол. страниц и это не последняя ссылка
  40. if (($i != $pages_count) && ($j != $show_link)) echo $sperator;
  41. // Вывод "..." в конце
  42. if (($j == $show_link) && ($i < $pages_count)) {
  43. echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.($i+1).'><b>...</b></a> ';
  44. }
  45. }
  46. // Вывод ссылки на последнюю страницу
  47. if ($begin + $show_link + 1 < $pages_count) {
  48. echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.$pages_count.'> >| </a>';
  49. }
  50. return true;
  51. } // Конец функции
  52.  
  53. // Подключение к базе данных
  54. mysql_connect('localhost', 'test', '1977') or die('Error! Нет соединения с сервером MySQL!');
  55. mysql_select_db('testhome') or die('Error! Нет соединения с базой данных!');
  56.  
  57. // Подготовка к постраничному выводу
  58. $perpage = 1; // Количество отображаемых данных из БД
  59. if (empty($_GET['page']) || ($_GET['page'] <= 0)) {
  60. $page = 1;
  61. } else {
  62. $page = (int) $_GET['page']; // Считывание текущей страницы
  63. }
  64. // Общее количество информации
  65. $count = mysql_num_rows(mysql_query('SELECT * FROM home')) or die('Error! Записей не найдено!');
  66. $pages_count = ceil($count / $perpage); // Количество страниц
  67. // Если номер страницы оказался больше количества страниц
  68. if ($page > $pages_count) $page = $pages_count;
  69. $start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД
  70. // Вызов функции, для вывода ссылок на экран
  71.  
  72. yandex_link_bar($page, $count, $pages_count, 10);
  73.  
  74. // Вывод информации из базы данных
  75. echo '<p><b>Постраничный вывод информации</b></p>';
  76. $result = mysql_query('SELECT * FROM home LIMIT '.$start_pos.', '.$perpage) or die('Error!');
  77. while ($row = mysql_fetch_array($result)) {
  78. echo '<p>'.$row['text'].'</p>';
  79. }
  80. ?>


_____________
loginsan
Можно предложить такой вариант>> Вытаскиваешь текст новости в $news_text. Пропускаешь от начала символов 300 и ищешь конец предложения (". ") с этой позиции (задача в том, чтобы выцепить из текста 1-2 предложения для предварительного просмотра):
PHP
  1. $end_pos = strpos ($news_text, ". ", 300);
  2. /* ищем конец предложения начиная с позиции 300, получаем позицию конца предложения */
  3. $short_text = substr($news_text, 0, 300 + $end_pos); //копируем подстроку длиной 300 + $end_pos - это и будет превью

aries
Мне не разобраться. Помогите сделать готовое решение.
Где почитать про это можно?

_____________
Patrick
нафиг что то обрезать? Вы думаете это будет нормально смотреться? создай одно поле кракое описание и не парся... Чём придумывать различные алгоритмы, где почитать... Запрос по слову pager
aries
Хорошо, можно создать в таблице поле с кратким описанием, а как сделать, что бы с этого краткого описания перейти на саму статью? Код постраничной навигации тот, что выше.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.