Система комментариев блога работает не правильно

Я делаю комментарии для блога. Система частично работает, но если сделать ответ на ответ кометария, то последний ответ не сохраняется в бд.

введите сюда описание изображения

 <?php
 session_start();
 
 $loggedIn = false;
 
 if (isset($_SESSION['loggedIn']) && isset($_SESSION['name'])) {
     $loggedIn = true;
 }
 
 $conn = new mysqli('localhost', 'root', '', 'ytCommentSystem');
 
 function createCommentRow($data) {
     global $conn;
 
     $response = '
             <div class="comment">
                 <div class="user">'.$data['name'].' <span class="time">'.$data['createdOn'].'</span></div>
                 <div class="userComment">'.$data['comment'].'</div>
                 <div class="reply"><a href="javascript:void(0)" data-commentID="'.$data['id'].'" onclick="reply(this)">REPLY</a></div>
                 <div class="replies">';
 
     $sql = $conn->query("SELECT replies.id, name, comment, DATE_FORMAT(replies.createdOn, '%Y-%m-%d') AS createdOn FROM replies INNER JOIN users ON replies.userID = users.id WHERE replies.commentID = '".$data['id']."' ORDER BY replies.id DESC ");
     while($dataR = $sql->fetch_assoc())
         $response .= createCommentRow($dataR);
 
     $response .= '
                         </div>
             </div>
         ';
 
     return $response;
 }
 
 if (isset($_POST['getAllComments'])) {
     $start = $conn->real_escape_string($_POST['start']);
 
     $response = "";
     $sql = $conn->query("SELECT comments.id, name, comment, DATE_FORMAT(comments.createdOn, '%Y-%m-%d') AS createdOn FROM comments INNER JOIN users ON comments.userID = users.id ORDER BY comments.id DESC LIMIT $start, 20");
     while($data = $sql->fetch_assoc())
         $response .= createCommentRow($data);
 
     exit($response);
 }
 
 if (isset($_POST['addComment'])) {
     $comment = $conn->real_escape_string($_POST['comment']);
     $isReply = $conn->real_escape_string($_POST['isReply']);
     $commentID = $conn->real_escape_string($_POST['commentID']);
 
     if ($isReply != 'false') {
         $conn->query("INSERT INTO replies (comment, commentID, userID, createdOn) VALUES ('$comment', '$commentID', '".$_SESSION['userID']."', NOW())");
         $sql = $conn->query("SELECT replies.id, name, comment, DATE_FORMAT(replies.createdOn, '%Y-%m-%d') AS createdOn FROM replies INNER JOIN users ON replies.userID = users.id ORDER BY replies.id DESC ");
     } else {
         $conn->query("INSERT INTO comments (userID, comment, createdOn) VALUES ('".$_SESSION['userID']."','$comment',NOW())");
         $sql = $conn->query("SELECT comments.id, name, comment, DATE_FORMAT(comments.createdOn, '%Y-%m-%d') AS createdOn FROM comments INNER JOIN users ON comments.userID = users.id ORDER BY comments.id DESC ");
     }
 
     $data = $sql->fetch_assoc();
     exit(createCommentRow($data));
 }
 
 if (isset($_POST['register'])) {
     $name = $conn->real_escape_string($_POST['name']);
     $email = $conn->real_escape_string($_POST['email']);
     $password = $conn->real_escape_string($_POST['password']);
 
     if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
         $sql = $conn->query("SELECT id FROM users WHERE email='$email'");
         if ($sql->num_rows > 0)
             exit('failedUserExists');
         else {
             $ePassword = password_hash($password, PASSWORD_BCRYPT);
             $conn->query("INSERT INTO users (name,email,password,createdOn) VALUES ('$name', '$email', '$ePassword', NOW())");
 
             $sql = $conn->query("SELECT id FROM users ORDER BY id DESC ");
             $data = $sql->fetch_assoc();
 
             $_SESSION['loggedIn'] = 1;
             $_SESSION['name'] = $name;
             $_SESSION['email'] = $email;
             $_SESSION['userID'] = $data['id'];
 
             exit('success');
         }
     } else
         exit('failedEmail');
 }
 
 if (isset($_POST['logIn'])) {
     $email = $conn->real_escape_string($_POST['email']);
     $password = $conn->real_escape_string($_POST['password']);
 
     if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
         $sql = $conn->query("SELECT id, password, name FROM users WHERE email='$email'");
         if ($sql->num_rows == 0)
             exit('failed');
         else {
             $data = $sql->fetch_assoc();
             $passwordHash = $data['password'];
 
             if (password_verify($password, $passwordHash)) {
                 $_SESSION['loggedIn'] = 1;
                 $_SESSION['name'] = $data['name'];
                 $_SESSION['email'] = $email;
                 $_SESSION['userID'] = $data['id'];
 
                 exit('success');
             } else
                 exit('failed');
         }
     } else
         exit('failed');
 }
 
 $sqlNumComments = $conn->query("SELECT id FROM comments");
 $numComments = $sqlNumComments->num_rows;
 ?>
 <!doctype html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta name="viewport"
           content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <title>YouTube Comment System</title>
     <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
     <style type="text/css">
         .comment {
             margin-bottom: 20px;
         }
 
         .user {
             font-weight: bold;
             color: black;
         }
 
         .time, .reply {
             color: gray;
         }
 
         .userComment {
             color: #000;
         }
 
         .replies .comment {
             margin-top: 20px;
 
         }
 
         .replies {
             margin-left: 20px;
         }
 
         #registerModal input, #logInModal input {
             margin-top: 10px;
         }
     </style>
 </head>
 <body>
 <div class="modal" id="registerModal">
     <div class="modal-dialog">
         <div class="modal-content">
             <div class="modal-header">
                 <h5 class="modal-title">Registration Form</h5>
             </div>
             <div class="modal-body">
                 <input type="text" id="userName" class="form-control" placeholder="Your Name">
                 <input type="email" id="userEmail" class="form-control" placeholder="Your Email">
                 <input type="password" id="userPassword" class="form-control" placeholder="Password">
             </div>
             <div class="modal-footer">
                 <button class="btn btn-primary" id="registerBtn">Register</button>
                 <button class="btn btn-default" data-dismiss="modal">Close</button>
             </div>
         </div>
     </div>
 </div>
 
 <div class="modal" id="logInModal">
     <div class="modal-dialog">
         <div class="modal-content">
             <div class="modal-header">
                 <h5 class="modal-title">Log In Form</h5>
             </div>
             <div class="modal-body">
                 <input type="email" id="userLEmail" class="form-control" placeholder="Your Email">
                 <input type="password" id="userLPassword" class="form-control" placeholder="Password">
             </div>
             <div class="modal-footer">
                 <button class="btn btn-primary" id="loginBtn">Log In</button>
                 <button class="btn btn-default" data-dismiss="modal">Close</button>
             </div>
         </div>
     </div>
 </div>
 
 <div class="container" style="margin-top:50px;">
     <div class="row">
         <div class="col-md-12" align="right">
             <?php
             if (!$loggedIn)
                 echo '
                         <button class="btn btn-primary" data-toggle="modal" data-target="#registerModal">Register</button>
                         <button class="btn btn-success" data-toggle="modal" data-target="#logInModal">Log In</button>
                 ';
             else
                 echo '
                     <a href="logout.php" class="btn btn-warning">Log Out</a>
                 ';
             ?>
         </div>
     </div>
     <div class="row" style="margin-top: 20px;margin-bottom: 20px;">
         <div class="col-md-12" align="center">
             <iframe width="560" height="315" src="https://www.youtube.com/embed/u2O_QyPfdpE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
         </div>
     </div>
     <div class="row">
         <div class="col-md-12">
             <textarea class="form-control" id="mainComment" placeholder="Add Public Comment" cols="30" rows="2"></textarea><br>
             <button style="float:right" class="btn-primary btn" onclick="isReply = false;" id="addComment">Add Comment</button>
         </div>
     </div>
     <div class="row">
         <div class="col-md-12">
             <h2><b id="numComments"><?php echo $numComments ?> Comments</b></h2>
             <div class="userComments">
 
             </div>
         </div>
     </div>
 </div>
 
 <div class="row replyRow" style="display:none">
     <div class="col-md-12">
         <textarea class="form-control" id="replyComment" placeholder="Add Public Comment" cols="30" rows="2"></textarea><br>
         <button style="float:right" class="btn-primary btn" onclick="isReply = true;" id="addReply">Add Reply</button>
         <button style="float:right" class="btn-default btn" onclick="$('.replyRow').hide();">Close</button>
     </div>
 </div>
 
 <script src="http://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
 <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
 <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
 <script type="text/javascript">
     var isReply = false, commentID = 0, max = <?php echo $numComments ?>;
 
     $(document).ready(function () {
         $("#addComment, #addReply").on('click', function () {
             var comment;
 
             if (!isReply)
                 comment = $("#mainComment").val();
             else
                 comment = $("#replyComment").val();
 
             if (comment.length > 5) {
                 $.ajax({
                     url: 'index.php',
                     method: 'POST',
                     dataType: 'text',
                     data: {
                         addComment: 1,
                         comment: comment,
                         isReply: isReply,
                         commentID: commentID
                     }, success: function (response) {
                         max++;
                         $("#numComments").text(max + " Comments");
 
                         if (!isReply) {
                             $(".userComments").prepend(response);
                             $("#mainComment").val("");
                         } else {
                             commentID = 0;
                             $("#replyComment").val("");
                             $(".replyRow").hide();
                             $('.replyRow').parent().next().append(response);
                         }
                     }
                 });
             } else
                 alert('Please Check Your Inputs');
         });
 
         $("#registerBtn").on('click', function () {
             var name = $("#userName").val();
             var email = $("#userEmail").val();
             var password = $("#userPassword").val();
 
             if (name != "" && email != "" && password != "") {
                 $.ajax({
                     url: 'index.php',
                     method: 'POST',
                     dataType: 'text',
                     data: {
                         register: 1,
                         name: name,
                         email: email,
                         password: password
                     }, success: function (response) {
                         if (response === 'failedEmail')
                             alert('Please insert valid email address!');
                         else if (response === 'failedUserExists')
                             alert('User with this email already exists!');
                         else
                             window.location = window.location;
                     }
                 });
             } else
                 alert('Please Check Your Inputs');
         });
 
         $("#loginBtn").on('click', function () {
             var email = $("#userLEmail").val();
             var password = $("#userLPassword").val();
 
             if (email != "" && password != "") {
                 $.ajax({
                     url: 'index.php',
                     method: 'POST',
                     dataType: 'text',
                     data: {
                         logIn: 1,
                         email: email,
                         password: password
                     }, success: function (response) {
                         if (response === 'failed')
                             alert('Please check your login details!');
                         else
                             window.location = window.location;
                     }
                 });
             } else
                 alert('Please Check Your Inputs');
         });
 
         getAllComments(0, max);
     });
 
     function reply(caller) {
         commentID = $(caller).attr('data-commentID');
         $(".replyRow").insertAfter($(caller));
         $('.replyRow').show();
     }
 
     function getAllComments(start, max) {
         if (start > max) {
             return;
         }
 
         $.ajax({
             url: 'index.php',
             method: 'POST',
             dataType: 'text',
             data: {
                 getAllComments: 1,
                 start: start
             }, success: function (response) {
                 $(".userComments").append(response);
                 getAllComments((start+20), max);
             }
         });
     }
 </script>
 </body>
 </html> 

и бд

-- phpMyAdmin SQL Dump
-- version 4.8.5
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Jul 26, 2019 at 08:23 AM
-- Server version: 10.1.38-MariaDB
-- PHP Version: 7.2.17

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `ytCommentSystem`
--

-- --------------------------------------------------------

--
-- Table structure for table `comments`
--

CREATE TABLE `comments` (
  `id` int(11) NOT NULL,
  `userID` int(11) NOT NULL,
  `comment` text COLLATE utf8_unicode_ci NOT NULL,
  `createdOn` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Dumping data for table `comments`
--

INSERT INTO `comments` (`id`, `userID`, `comment`, `createdOn`) VALUES
(1, 2, 'asdfasdfasdf', '2019-07-15 15:40:10'),
(2, 2, 'dfasdfasdf', '2019-07-18 08:15:38'),
(3, 2, 'dfasdfasdf', '2019-07-18 08:15:51'),
(4, 2, 'another one', '2019-07-18 08:25:48'),
(5, 2, 'aaaaaaaaaaaaaa', '2019-07-18 08:27:35'),
(6, 2, 'bbbbbbbbbbb', '2019-07-18 08:28:50'),
(7, 2, 'aaaaaaaaccccvcvvv', '2019-07-18 08:28:56'),
(8, 2, 'zzzzzzzzzzzz', '2019-07-18 08:36:29'),
(9, 2, 'yyyyyyyyyyyyyyyyyy', '2019-07-18 08:36:35'),
(11, 2, 'aaaaaaaaaaaaaaaaaa', '2019-07-18 08:39:11'),
(12, 2, 'aaaaaaaaaaaaa', '2019-07-18 08:43:56'),
(20, 2, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', '2019-07-25 11:45:59');

-- --------------------------------------------------------

--
-- Table structure for table `replies`
--

CREATE TABLE `replies` (
  `id` int(11) NOT NULL,
  `commentID` int(11) NOT NULL,
  `comment` text COLLATE utf8_unicode_ci NOT NULL,
  `createdOn` datetime NOT NULL,
  `userID` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Dumping data for table `replies`
--

INSERT INTO `replies` (`id`, `commentID`, `comment`, `createdOn`, `userID`) VALUES
(1, 12, 'reply to 12', '2019-07-18 08:49:07', 2),
(2, 11, 'reply to 11', '2019-07-18 08:52:18', 2),
(18, 1, 'reply to \"reply to 12\"', '2019-07-25 11:45:52', 2),
(19, 20, 'bbbbbbbbbbbb', '2019-07-25 11:46:04', 2);

-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `createdOn` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Dumping data for table `users`
--

INSERT INTO `users` (`id`, `name`, `email`, `password`, `createdOn`) VALUES
(1, 'dfasdf', '[email protected]', '$2y$10$SqzYz8CNpQkoAE93ZkWmUeCOXqQ5QPNqcGTEyAvU0MD0JnUT19Nz.', '2019-07-15 15:19:51'),
(2, 'Senaid', '[email protected]', '$2y$10$EJyBBoc0sX3n.fYw/PQ5leJuoHYqv2pxOp9w6z3Tixty7x0iAveDO', '2019-07-15 15:25:34');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `comments`
--
ALTER TABLE `comments`
  ADD PRIMARY KEY (`id`),
  ADD KEY `userID` (`userID`);

--
-- Indexes for table `replies`
--
ALTER TABLE `replies`
  ADD PRIMARY KEY (`id`),
  ADD KEY `commentID` (`commentID`),
  ADD KEY `userID` (`userID`);

--
-- Indexes for table `users`
--
ALTER TABLE `users`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `comments`
--
ALTER TABLE `comments`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=21;

--
-- AUTO_INCREMENT for table `replies`
--
ALTER TABLE `replies`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=20;

--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- Constraints for dumped tables
--

--
-- Constraints for table `comments`
--
ALTER TABLE `comments`
  ADD CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`userID`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Constraints for table `replies`
--
ALTER TABLE `replies`
  ADD CONSTRAINT `replies_ibfk_1` FOREIGN KEY (`commentID`) REFERENCES `comments` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `replies_ibfk_2` FOREIGN KEY (`userID`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    

В чем может быть проблема?


Ответы (0 шт):