27
Фев
2016

Вывод комментариев на PHP для текущего пользователя

Есть 2 таблицы в БД: users и comments.

Таблицы связаны JOIN-ом. Комментарии выводятся, всё работает. Проблема лишь в том, что из базы выводятся все зарегистрированные пользователи.

Например: заходит В. Пупкин, написать - "привет", а из базы выводятся все: и Васи, и Коли, и Вани с сообщением "привет". В общем, дублируются комментарии.

Я так понимаю, нужно написать проверку на то, что пользователь действительно вошел на сайт, чтобы комментарий схватывал текущую сессию. В БД добавил current_user_id, а в php WHERE current_user_id='$_SESSION[login]'.

Не хватает проверки или еще чего-то?

$date = $_POST["date"];
  $user_id = $_POST["user_id"];
  $text_comment = $_POST["text_comment"];
  $name = $_POST["name"];
  $page_id = $_POST["page_id"];
  $art_id = $_POST["art_id"];
  $current_user_id = $_POST["current_user_id"];

        $text_comment = htmlspecialchars($text_comment);
        $name = htmlspecialchars($name); 


        $date = date("d.m.Y в H:i:s");

  $mysqli = new mysqli("localhost","root","12345","base");
  $mysqli->query("INSERT INTO `comments` (`date`, `user_id`, `text_comment`, `name`, `page_id`, `art_id`, `current_user_id`) VALUES (NOW(), '$user_id', '$text_comment', '$name', '$page_id', '$art_id', '$current_user_id')");
  header("Location: ".$_SERVER["HTTP_REFERER"]);

index.php

 <div style="display:none" id="comment_form">
                    <form action="comment.php" method="post" name="comment" >
                        <textarea name="text_comment" cols="30" rows="5" ></textarea>
                        <input type="hidden" name="page_id" value="1"  />
                        <input name="send" type="submit" value="Добавить"  class="f-r btn" onclick="this.disabled=true; comment.submit();" />
                    </form>
                </div>



$page_id = (int)$_GET['id'];
$result = mysql_query("SELECT * FROM users JOIN comments ON users.login = comments.user_id WHERE art_id='$_SESSION[login]' ORDER BY date DESC" ,$db); 
$comment = mysql_fetch_array($result);

do{
echo "<div class='comment'><h5 style='font-weight:normal;'>".$comment['date']."</h5><strong>".$comment['login']."</strong><br><br>".$comment['text_comment']."<br></div>";
}while($comment = mysql_fetch_array($result));                                                  

Источник: https://ru.stackoverflow.com/questions/497565/%D0%92%D1%8B%D0%B2%D0%BE%D0%B4-%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B5%D0%B2-%D0%BD%D0%B0-php-%D0%B4%D0%BB%D1%8F-%D1%82%D0%B5%D0%BA%D1%83%D1%89%D0%B5%D0%B3%D0%BE-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F

Share

Тебе может это понравится...