PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Как вывести на страницу из базы данных книгу по главам
Ishan
Отправлено: 13 Августа, 2017 - 07:56:10
Post Id



Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




Меня попросили сделать для приходского храма сайт и я столкнулся с такой проблемой.

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

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

Но я помню, что несколько лет назад встречал где-то, что есть возможность, с помощью 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>


А при нажатии на ссылку другой главы, текст заменялся.
 
 Top
dcc0
Отправлено: 13 Августа, 2017 - 09:48:59
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 985
Дата рег-ции: Июль 2014  


Помог: 7 раз(а)




Если главы в базе данных каждая имеет запись свою и свой id, то
в ссылку можно прописать номер главы, например:

При нажатии на ссылку сию номер будет передаваться в массиве GET

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



Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




Цитата:
При нажатии на ссылку сию номер будет передаваться в массиве GET



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


Можно подробнее, если не трудно. Честно говоря я новичок во всем этом, а по книгам не всегда удается понять, что нужно делать. Мне проще на примерах.
 
 Top
dcc0
Отправлено: 13 Августа, 2017 - 10:22:55
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 985
Дата рег-ции: Июль 2014  


Помог: 7 раз(а)




Принцип.
Ссылка:
CODE (html):
скопировать код в буфер обмена
  1. <a href="index.php?id=1">


Вставь в код для проверки

Получишь вывод массива:

Т.е. номер - 1 - хранится в массиве, а именно так:


Можешь еще одну переменную ввести, чтобы с кавычками не заворачиваться
в sql запросе и как-то обработать переменную:

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

Синтаксис SQL смотри подробнее в справочниках, я примерно написал.
А дальше все по стандартной схеме вывода на страницу, можно без цикла, так как страницу надо одну вывести:

(Отредактировано автором: 13 Августа, 2017 - 10:23:55)

 
 Top
Ishan
Отправлено: 13 Августа, 2017 - 10:33:57
Post Id



Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




Спасибо, теперь я понял. И, если я не ошибаюсь, нечто подобное делается при проверке авторизации пользователя.
В любом случае принцип я понял. Еще раз спасибо.
 
 Top
LIME
Отправлено: 13 Августа, 2017 - 11:16:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 9990
Дата рег-ции: Нояб. 2010  


Помог: 296 раз(а)




и про sql инъекции не забудь


-----
вау
я кажется понял жастЮзера!!!
 
 Top
dcc0
Отправлено: 13 Августа, 2017 - 11:48:20
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 985
Дата рег-ции: Июль 2014  


Помог: 7 раз(а)




Да, и как тов. Lime написал на всякий случай сделай приведение к типу int (целому).
Правда, если мне память не изменяет, там есть нюансы - в плане, какой драйвер используется mysqly или mysqli
 
 Top
Строитель
Отправлено: 13 Августа, 2017 - 13:51:02
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 1011
Дата рег-ции: Февр. 2014  


Помог: 35 раз(а)




Ishan, вам надо гуглить "постраничная навигация php mysql"
 
 Top
LIME
Отправлено: 13 Августа, 2017 - 18:54:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 9990
Дата рег-ции: Нояб. 2010  


Помог: 296 раз(а)




ну где же тут пагинация? все просто


-----
вау
я кажется понял жастЮзера!!!
 
 Top
dcc0
Отправлено: 13 Августа, 2017 - 19:24:04
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 985
Дата рег-ции: Июль 2014  


Помог: 7 раз(а)




LIME, теперь ты меня удивляешь. Строитель не стал глубоко вникать в суть темы и включать телепатию. : )
 
 Top
Ishan
Отправлено: 20 Августа, 2017 - 09:56:08
Post Id



Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




LIME пишет:
$myid= (int)$_GET['id'];


А для чего это нужно?

(Отредактировано автором: 20 Августа, 2017 - 09:57:04)

 
 Top
LIME
Отправлено: 20 Августа, 2017 - 11:09:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 9990
Дата рег-ции: Нояб. 2010  


Помог: 296 раз(а)




ты стебешь чтоли?
написано же
LIME пишет:
и про sql инъекции не забудь

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

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

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

(Отредактировано автором: 20 Августа, 2017 - 11:11:34)



-----
вау
я кажется понял жастЮзера!!!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB