php build личный блог

Я не знаю, что делать в последние несколько дней, поэтому думаю о том, чтобы улучшить свой блог.

Реализована основная функция публикации, так что, думаю, будет интереснее добавить комментарий и ответить, чтобы общаться с другими людьми.

Затем запустил Baidu php, чтобы реализовать функцию ответа на комментарий, и посмотрел на нее, но не хотел на нее смотреть. . . Просто откройте гостевую книгу реализации php экспериментального здания, которое вы собрали ранее, чтобы  увидеть, как реализовать ответ на сообщение.Ответ на комментарий почти такой же, как и ответ на сообщение.

Сначала загрузите исходный код, посмотрите на дизайн базы данных  

*** Когда я хочу реализовать эту функцию в наши дни, я обнаружил, что для реализации функции мы должны спроектировать таблицу данных. В процессе разработки таблицы данных логика и детали программы будут постепенно проясняться в моем понимании. ум. Это отличная вещь. Процесс ***

 

 

 

 

Интернет был отключен вчера. . . , Школа отключается в 12 часов. Больно. Сегодня наверстываю. . .

 

Прочитав его, я обнаружил, что основные поля id, псевдоним, контент и время создания бесполезны, но ответ и время ответа бесполезны. Как можно сохранить ответ, когда ответят многие другие? status требуется для фонового управления для просмотра и комментирования, но сначала я хочу реализовать простейшую функцию.

 

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

Пойдите в группу, чтобы спросить, великий бог, всего одно предложение, бесконечная классификация, но я выгляжу ошеломленным, такой длинный словарный запас.

Продолжайте спрашивать великого бога, великий бог объяснил мне, что у класса может быть бесконечное количество подкатегорий, ах, в недоумении, не так ли? Я напрямую искал такую ​​статью php неограниченная классификация на Baidu

http://www.cnblogs.com/php-js/p/php-classify.html

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

 

Так уж вышло, что я могу сначала реализовать классификацию статей и воспользоваться возможностью, чтобы изучить классификацию Infinitus. Классификация статей заняла одну ночь, в основном, чтобы увидеть, как реализованы другие блоги. Я изучил  Startblog  .

Когда я впервые нашел этот блог в сообществе с открытым исходным кодом, я был в восторге от простого и легкого блога с функциями ci. Хехехе, это экономит много усилий. Я даже могу улучшить все следующие функции в соответствии с Startblog, но это не очень хорошо., основная цель - учиться и тренироваться, а не просто копировать предшественников. Это не принесет никакой пользы

Хорошо, код хороший, структура получена, войдите в каталог / application / models / и откройте Category_model.php, да, это тот тип, который я хочу

(Кажется бессовестным хххххх)

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

 

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

Моя таблица категорий:

Так низко, QAQ, я не могу больше этого терпеть, задушу себя до смерти

Кажется, что ничего, просто выберите * из категории, чтобы запросить все категории

Также есть функция для запроса блога, принадлежащего этой категории, в соответствии с категорией, это очень просто

 

Category_model.php

class Category_Model расширяет CI_Model {общедоступная функция __construct () {parent :: __ construct (); $ this-> load-> database ();} общедоступная функция getAllCategory () {$ sql = "select * from category"; $ data_tmp = $ this-> db-> query ($ sql) -> result_array (); foreach ($ data_tmp как $ value) {$ category_id = $ value ['id']; $ data ["$ category_id"] ['id'] = $ value ['id']; $ data ["$ category_id"] ['category'] = $ value ['category'];} return $ data;} общедоступная функция getAllBlogs ($ category_id) {$ sql = "select * из блогов, где category = {$ category_id} "; $ data = $ this-> db-> query ($ sql) -> result_array (); return $ data;}}

 

 

Затем управляйте классом и выводите данные в соответствии с содержимым, запрошенным категорией_модель.


Categoy.php

 

class Category расширяет CI_Controller {public function show ($ id) {$ this-> load-> helper ('url'); $ this-> load-> model ('category_model'); $ data ['data'] = $ this-> category_model-> getAllBlogs ($ id); $ data ['cur_category'] = $ this-> category_model-> getCategory ($ id); $ data ['all_category'] = $ this-> category_model-> getAllCategory ( ); $ this-> load-> view ('templates / header', $ data); $ this-> load-> view ('pages / category_show', $ data); $ this-> load-> view (' шаблоны / нижний колонтитул ');}}

Изображение эффекта:

Похоже, не действует

Это такая простая вещь, и я работал над этим целый день 

 

Фактически, весь процесс поиска и понимания медленно занял много времени, прежде чем применить 

После завершения классификации я обнаружил, что бесконечная классификация уровней бесполезна. . . QAQ

Ничего страшного, теперь можно начинать писать комментарии и ответы, давайте подумаем день или два  

Что ж, разработайте техпаспорт,

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

Я пошел, родной php, старший брат, я не хочу читать его напрямую, его данные показывают следующее:

 

id содержание псевдонима create_time, как правило, это так, ключ в том, что parent_id использует этот идентификатор для поиска дочерних комментариев комментария, то есть ответа

В соответствии с моими собственными исследованиями я разработал таблицу комментариев.

Вставить:

blog_id используется для обозначения статьи, к которой он принадлежит, и я совмещаю его с моделью

Как и в случае с категорией, передайте blog_id, чтобы узнать все комментарии к статье с идентификатором blog_id. Это функция getComment, 

Функция getTreeComment реализует бесконечную классификацию ответов на комментарии посредством рекурсии.

Параметр $ parent передается в cid комментария как идентификатор верхнего уровня, если родительский элемент комментария равен cid верхнего уровня, то есть это ответ комментария верхнего уровня, он хранится в дереве $

Исходный $ parent = 0.

Comments_model.php

 

class Comments_Model расширяет CI_Model {общедоступная функция __construct () {parent :: __ construct (); $ this-> load-> database ();} общедоступная функция addComment ($ data) {$ this-> db-> insert ('comments' , $ data); return $ this-> db-> insert_id ();} общедоступная функция getComment ($ blog_id) {$ sql = "select * from comments where blog_id = {$ blog_id} order by created ASC"; $ query = $ this-> db-> query ($ sql) -> result_array (); return $ query;} частная функция getTreeComments ($ comments, $ parent,) {global $ tree; foreach ($ comments as $ comment) {if ( $ comment ['parent'] == $ parent) {$ tree [] = $ comment; $ this-> getTreeComments ($ comments, $ comment ['cid'],);}} return $ tree;}}


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

 

 

Дождитесь урока физкультуры и возвращайтесь вечером помириться. . .

 

По коду,

comment.php

 

<? phpif (count ($ comments)> 0) {function ListComments ($ comments, $ parent) {foreach ($ comments as $ row) {if ($ row ['parent'] == $ parent) {?> < div class = "col-md-11 col-md-offset-1"> <div class = "row"> <div class = "col-md-10"> <p> <strong> <? php echo $ row ['nickname'];?> </strong> сказано в <? php echo date ('dmY h: i A', strtotime ($ row ['created']));?> <br> <? php echo $ строка ['содержание']; ?> </p> </div> <div class = "col-md-2"> <a class = "comment-reply-link" href = "# comment-reply" οnclick = "commentReply (<? php echo $ row ['cid'];?>, это) "> ответ < / a> </div> </div> <hr> <? php ListComments ($ comments, $ row ['cid']); эхо '</div>'; }}} ListComments ($ comments, 0); }?>

Это кажется беспорядочным. . . .

 

Плохой код 

Изображение эффекта:

 


 

Ключом к достижению эффекта пошагового представления ответа на комментарий является точка выхода из бесконечной рекурсии классификации уровней.

Выберите правильную точку выхода для достижения

Прямо над ним также есть эффект поля для комментариев:

После нажатия на ответ:

 

Затем отменить ответ продолжает восстанавливать исходное положение, для этой реализации требуется js 

comment_reply.js

 

function commentReply (parent, c) {var response = document.getElementById ('comment-post'); document.getElementById ('comment-parent'). value = parent; document.getElementById ('отменить-ответ'). style = ''; c.parentNode.parentNode.appendChild (response);} function cancelReply () {var commentPlace = document.getElementById ('comment-place'), response = document.getElementById ('comment-post'); document.getElementById ('родитель-комментарий'). значение = 0; document.getElementById ('отменить-ответ'). style = 'display: none'; commentPlace.appendChild (response);}

Что ж, на данный момент ответ на комментарий в основном завершен.

 

рекомендация

отblog.csdn.net/an17822307871/article/details/114006900
рекомендация