0
The best way to implement 2 nested comments system.
like a Facebook, Twitter, or even sololearn did. Could you told me how? in php? just for basic stuff. thanks
3 Answers
+ 1
If you want to make one from scratch, you could use the following MySQL script and render the comment tree with nested div elements. I would give each div a small margin-left or padding-left so that the more nested ones are indented more.
You could model the comments and users that write them like this:
create table users
(
id int primary key auto_increment
);
create table comments
(
id int primary key auto_increment,
parent_comment_id int references comments(id), -- nullable parent comment for nesting
commenter_user_id int not null references users(id), -- who commented
message varchar(255) not null, -- what the comment says
created_at timestamp -- when the comment was made
);
That script assumes you have just 1 nested comment section. If you have multiple blogs of comments, you could add a blog table and include a reference to it in your comments table. A top-level/unnested comment is the only kind that would critically need to reference the blog but specifying a copy of it in nested comments should simplify querying and joining comments on a specific blog.
+ 1
Josh Greig
Is it possible for 'parent_comment_id' column to introduce a circular reference issue?
+ 1
Ipang, yes, the schema I suggested won't complain if a cycle is introduced.
Something like that could be prevented by not implementing any feature that updates the parent_comment_id of an existing comment. The only way a cycle could be introduced is if an existing comment got its parent_comment_id changed to point at one of its descendants.
Anyone with access to the write changes to the SQL database could represent a cycle but a malicious user with that access could do a lot more damage anyway.