Форумы портала PHP.SU » » Работа с СУБД » Вывод текста по главам

Страниц (1): [1]
 

1. Ishan - 13 Августа, 2017 - 07:56:10 - перейти к сообщению
Меня попросили сделать для приходского храма сайт и я столкнулся с такой проблемой.

Необходимо разместить на сайте полное жизнеописание святого, которому посвящен храм. Текст большой, это полноценная книга. Чтобы текст не занимал много места на странице я разбил текст на главы и здесь возникла проблема. Как вывести на страницу текст по главам?

В-принципе, самый простой и очевидный способ, это создать для каждой главы отдельную страницу, а на главной странице вывести ссылки к этим страницам. Я даже могу текст глав поместить в таблицу в базе данных, это не сложно.

Но я помню, что несколько лет назад встречал где-то, что есть возможность, с помощью php и баз данных, получить тот же результат, не создавая десятки лишних страниц.

Подскажите, как создав одну страницу с ссылками на главы книги и выводом определенной главы на этой же странице.

То-есть, есть файл index.php с таким кодом:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. /**
  3.  * @author Ishan
  4.  * @copyright 2017
  5.  */
  6. error_reporting (E_ALL);//Сообщать обо всех ошибках PHP.
  7. $title='Православный Приход храма Прп. Сергия Радонежского г. Борзя, Нерчинской Епархии';//Титул.
  8. $category='<h2>Полное житие преподобного Сергия Радонежского</h2><br/><p>Составитель жития Сергия Радонежского архимандрит Никон Рождественский</p>';//Заголовок страницы.
  9. define('ROOT', $_SERVER['DOCUMENT_ROOT']);
  10. include(ROOT."/system/inc/system.php");//Потключаем файл системы
  11.  
  12.  
  13.  
  14. include(ROOT."/system/theme/header.php");//Потключаем шапку страницы страницы.
  15.  
  16. //Изменяемое тело страницы. Анонс статей обернём элементом <article id="post-1" class="post">.
  17.  
  18.  
  19. echo '<article id="post-1" class="post">
  20.  
  21.  <div class="post-content">
  22.    <h3 class="post-title-pod">Память: 5/18 июля (обретение мощей),</br>
  23.    25 сентября / 8 октября</h3>
  24.    <p>Перед Вами житие великого русского подвижника преподобного Сергия Радонежского. Составитель архимандрит Никон Рождественский, а будущем архиепископ Вологодский и Тотемский (1851 - 1919). Житие оформлено многими иконами преподобного Сергия Радонежского, соответственно теме жития миниатюрами, картинами и фотографиями. Предисловие архимандрита Никона Рождественского приведено дореволюционном написании.</p></br>
  25.    <h3 class="post-title-pod">Содержание жития преподобного Сергия Радонежского:</h3>
  26.    <p><a href="/">Предисловие</a></br>
  27.    <a href="/">Глава I. Сын радости</a></br>
  28.    <a href="/">Глава II. Благодатный отрок</a></br>
  29.    <a href="/">Глава III. Покорный юноша</a></br>
  30.    <a href="/">Глава IV. Братья в пустыне</a></br>
  31.    <a href="/">Глава V. Юный постриженник</a></br>
  32.    <a href="/">Глава VI. Наедине с Богом</a></br>
  33.    <a href="/">Глава VII. Первые сподвижники</a></br>
  34.    <a href="/">Глава VIII. Власть за послушание</a></br>
  35.    <a href="/">Глава IX. Смиренный игумен</a></br>
  36.    <a href="/">Глава X. Пустынная нищета</a></br>
  37.    <a href="/">Глава XI. Смиренный чудотворец</a></br>
  38.    <a href="/">Глава XII. Пророческое видение и дальние посланцы</a></br>
  39.    <a href="/">Глава XIII. Внезапная буря</a></br>
  40.    <a href="/">Глава XIV. Друг святителей</a></br>
  41.    <a href="/">Глава XV. Печальник Русской Земли</a></br>
  42.    <a href="/">Глава XVI. Умиротворитель князей</a></br>
  43.    <a href="/">Глава XVII. Благодатный старец</a></br>
  44.    <a href="/">Глава XVIII. Кончина праведника</a></br>
  45.    <a href="/">Глава XIX. Ученики Сергиевы в родной обители</a></br>
  46.    <a href="/">Глава XX. Ученики и собеседники Сергиевы в своих обителях</a></br>
  47.    <a href="/">Глава XXI. Жития родителей преподобного Сергия, схимонаха Кирилла и схимонахини Марии</a></p>
  48.  
  49.    <div class="post-footer"></div>
  50.  
  51.  </div>
  52.  
  53. </article>
  54.  
  55. <article id="post-2" class="post">
  56.    ...
  57. </article>';
  58.  
  59. include(ROOT."/system/theme/footer.php");//Потключаем тело страницы.
  60.  
  61. ?>
  62.  


Нужно, чтобы при нажатии на ссылку главы книги, из базы данных была взята указанная глава и полученный текст размещался на этой же странице вместо троеточия:

PHP:
скопировать код в буфер обмена
  1. <article id="post-2" class="post">
  2.     ...
  3. </article>


А при нажатии на ссылку другой главы, текст заменялся.
2. dcc0 - 13 Августа, 2017 - 09:48:59 - перейти к сообщению
Если главы в базе данных каждая имеет запись свою и свой id, то
в ссылку можно прописать номер главы, например:

При нажатии на ссылку сию номер будет передаваться в массиве GET
PHP:
скопировать код в буфер обмена
  1. Array ( [id] => 1 )

Далее номер этот в виде переменной можно передать в функцию вывода из базы данных по id.
3. Ishan - 13 Августа, 2017 - 10:07:14 - перейти к сообщению
Цитата:
При нажатии на ссылку сию номер будет передаваться в массиве GET



Далее номер этот в виде переменной можно передать в функцию вывода из базы данных по id.


Можно подробнее, если не трудно. Честно говоря я новичок во всем этом, а по книгам не всегда удается понять, что нужно делать. Мне проще на примерах.
4. dcc0 - 13 Августа, 2017 - 10:22:55 - перейти к сообщению
Принцип.
Ссылка:
CODE (html):
скопировать код в буфер обмена
  1. <a href="index.php?id=1">


Вставь в код для проверки
PHP:
скопировать код в буфер обмена
  1. print_r($_GET)

Получишь вывод массива:
PHP:
скопировать код в буфер обмена
  1. Array ( [id] => 1 )

Т.е. номер - 1 - хранится в массиве, а именно так:
PHP:
скопировать код в буфер обмена
  1. $_GET['id']


Можешь еще одну переменную ввести, чтобы с кавычками не заворачиваться
в sql запросе и как-то обработать переменную:
PHP:
скопировать код в буфер обмена
  1. $myid= $_GET['id'];
  2.  

Вот эту переменную подставляешь в SQL запрос:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. $result = _query("SELECT * FROM your_table WHERE id='$myid'",$db);
  3.  

Синтаксис SQL смотри подробнее в справочниках, я примерно написал.
А дальше все по стандартной схеме вывода на страницу, можно без цикла, так как страницу надо одну вывести:
PHP:
скопировать код в буфер обмена
  1. $myrow = _fetch_array($result);

PHP:
скопировать код в буфер обмена
  1. echo $myrow["text"];
5. Ishan - 13 Августа, 2017 - 10:33:57 - перейти к сообщению
Спасибо, теперь я понял. И, если я не ошибаюсь, нечто подобное делается при проверке авторизации пользователя.
В любом случае принцип я понял. Еще раз спасибо.
6. LIME - 13 Августа, 2017 - 11:16:48 - перейти к сообщению
и про sql инъекции не забудь
7. dcc0 - 13 Августа, 2017 - 11:48:20 - перейти к сообщению
Да, и как тов. Lime написал на всякий случай сделай приведение к типу int (целому).
Правда, если мне память не изменяет, там есть нюансы - в плане, какой драйвер используется mysqly или mysqli
8. Строитель - 13 Августа, 2017 - 13:51:02 - перейти к сообщению
Ishan, вам надо гуглить "постраничная навигация php mysql"
9. LIME - 13 Августа, 2017 - 18:54:15 - перейти к сообщению
ну где же тут пагинация? все просто
10. dcc0 - 13 Августа, 2017 - 19:24:04 - перейти к сообщению
LIME, теперь ты меня удивляешь. Строитель не стал глубоко вникать в суть темы и включать телепатию. : )
11. Ishan - 20 Августа, 2017 - 09:56:08 - перейти к сообщению
LIME пишет:
$myid= (int)$_GET['id'];


А для чего это нужно?
12. LIME - 20 Августа, 2017 - 11:09:44 - перейти к сообщению
ты стебешь чтоли?
написано же
LIME пишет:
и про sql инъекции не забудь

вот и погугли что это такое
ну если не стебешь получи более подробный ответ
PHP:
скопировать код в буфер обмена
  1. DB::query('SELECT * FROM tbl WHERE id = ' . $_GET['id']);

ну примерно
и тогда получи
/site.ru?id=1;DROP+SCHEMA+information_schema

а вообще я бы не трогал тут бд вовсе
тут тебе юные горячие головы насоветуют
просто разбей текст на главы
сохрани в разных файлах
в каждом подключай хедер и футер
жестко пропиши ссылки в оглавлении
и забудь все печали
(Добавление)
dcc0 блин
ну хрен с тобой отвечу
дело в том что навигация нужна там где из большой коллекции сущностей надо отобразить не все а часть
и разбиваем на страницы
ну каким таким раком тут трогать постраничную навигацию? что вы тут собрались на страницы разбивать? а?
один ляпнул ...второй решил поддержать))
еще и удивился))

 

Powered by ExBB FM 1.0 RC1