Как сделать систему комментариев для конкретного поста и получить его?

0

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

Изображение 174551

    //code for insert comments to the tables 
    function setComments($connection) {
        if (isset($_POST['commentSubmit'])) {
            $uid = $_POST['uid'];
            $date = $_POST['date'];
            $message = $_POST['message'];

            //sql connection 
            $sql = "INSERT INTO comments (uid,date,message) VALUES ('$uid','$date','$message')";
            $result = $connection ->query($sql);
        }
    }
    //function for get comments from the databse 
    function getComments($connection) {
        $sql = "SELECT * FROM comments";
        $result = $connection ->query($sql);
        while($row = $result->fetch_assoc()) {
            //showing records 
            echo '<div id="comment_box">';
            echo $row['uid'].'<br>';
            //echo $row['cid'].'<br>';
            echo nl2br($row['message']).'<br>';
            echo $row['date'];
            echo '</div>';
            echo '<hr>';
        }
    }

Здесь я сделал две функции setComments для комментария вставки
другая функция для getComments

ОБНОВЛЕНО

эта таблица вопросов задает вопрос, чтобы пользователи могли задавать вопросы.

Изображение 174551

Теги:
database

1 ответ

1

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

И тогда обе функции set_comments и get_comments должны иметь параметр post_id который будет вставлен в таблицу комментариев и запросить эти комментарии для определенной записи:

INSERT INTO comments (uid,date,message, post_id) VALUES ('$uid','$date','$message', '$post_id');

После этого, используя этот post_id вы можете запросить эти комментарии под определенным сообщением этим идентификатором.

Обратите внимание: попробуйте использовать подготовленные инструкции для операций с базой данных.


Обновить:

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

Итак, предположим, что у вас есть таблица вопросов, с Id как integer. Затем столбец внешнего ключа, который вы должны добавить в таблицу комментариев, должен быть следующим:

ALTER TABLE comments ADD question_id INT NOT NULL;
ALTER TABLE comments ADD CONSTRAINT fk_question_id FOREIGN KEY (question_id) REFERENCES questions(id);
  • 0
    привет @Kennard R, спасибо за твой ответ. Можете ли вы сказать мне, какой тип данных я должен использовать в этой области? Я получаю сообщение об ошибке SQL. ALTER TABLE comments ADD question_id VARCHAR (11) NOT NULL AUTO_INCREMENT ПОСЛЕ message , ADD PRIMARY KEY ( question_id );
  • 0
    @PrinceJay - Вы объявляете его как первичный ключ, а не как внешний ключ. Смотрите мой обновленный ответ.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню