Как я могу отобразить самые понравившиеся посты из ленты постов?
У меня есть простой php-скрипт, в котором пользователи могут публиковать сообщения без входа в систему, после того как они отправят сообщение, их сообщения отображаются только ниже в ленте сообщений, что-то вроде сообщения facebook/ленты новостей. Как теперь я могу взять три самых понравившихся сообщения и отобразить их в другом разделе div? Разве это возможно?
index.php
<div class="comment-form-container"> <form id="frm-comment"> <div class="input-row"> <input type="hidden" name="comment_id" id="commentId" placeholder="Name" /> <input class="input-field" type="text" name="name" id="name" placeholder="Name" /> </div> <div class="input-row"> <textarea class="input-field" type="text" name="comment" id="comment" placeholder="Add a Comment"> </textarea> </div> <div> <input type="button" class="btn-submit" id="submitButton" value="Publish" /><div id="comment-message">Comments Added Successfully!</div> </div> </form> </div> <div id="output"></div> <script> var totalLikes = 0; var totalUnlikes = 0; function postReply(commentId) { $('#commentId').val(commentId); $("#name").focus(); } $("#submitButton").click(function () { $("#comment-message").css('display', 'none'); var str = $("#frm-comment").serialize(); $.ajax({ url: "comment-add.php", data: str, type: 'post', success: function (response) { var result = eval('(' + response + ')'); if (response) { $("#comment-message").css('display', 'inline-block'); $("#name").val(""); $("#comment").val(""); $("#commentId").val(""); listComment(); } else { alert("Failed to add comments !"); return false; } } }); }); $(document).ready(function () { listComment(); }); function listComment() { $.post("comment-list.php", function (data) { var data = JSON.parse(data); var comments = ""; var replies = ""; var item = ""; var parent = -1; var results = new Array(); var list = $("<ul class='outer-comment'>"); var item = $("<li>").html(comments); for (var i = 0; (i < data.length); i++) { var commentId = data[i]['comment_id']; parent = data[i]['parent_comment_id']; var obj = getLikesUnlikes(commentId); if (parent == "0") { if(data[i]['like_unlike'] >= 1) { like_icon = "<img src='like.png' id='unlike_" + data[i]['comment_id'] + "' class='like-unlike' onClick='likeOrDislike(" + data[i]['comment_id'] + ",-1)' />"; like_icon += "<img style='display:none;' src='unlike.png' id='like_" + data[i]['comment_id'] + "' class='like-unlike' onClick='likeOrDislike(" + data[i]['comment_id'] + ",1)' />"; } else { like_icon = "<img style='display:none;' src='like.png' id='unlike_" + data[i]['comment_id'] + "' class='like-unlike' onClick='likeOrDislike(" + data[i]['comment_id'] + ",-1)' />"; like_icon += "<img src='unlike.png' id='like_" + data[i]['comment_id'] + "' class='like-unlike' onClick='likeOrDislike(" + data[i]['comment_id'] + ",1)' />"; } comments = "\ <div class='comment-row'>\ <div class='comment-info'>\ <span class='commet-row-label'>from</span>\ <span class='posted-by'>" + data[i]['comment_sender_name'] + "</span>\ <span class='commet-row-label'>at</span> \ <span class='posted-at'>" + data[i]['date'] + "</span>\ </div>\ <div class='comment-text'>" + data[i]['comment'] + "</div>\ <div>\ <a class='btn-reply' onClick='postReply(" + commentId + ")'>Reply</a>\ </div>\ <div class='post-action'>\ " + like_icon + " \ <span id='likes_" + commentId + "'> " + totalLikes + " likes </span>\ </div>\ </div>"; var item = $("<li>").html(comments); list.append(item); var reply_list = $('<ul>'); item.append(reply_list); listReplies(commentId, data, reply_list); } } $("#output").html(list); }); } function listReplies(commentId, data, list) { for (var i = 0; (i < data.length); i++) { var obj = getLikesUnlikes(data[i].comment_id); if (commentId == data[i].parent_comment_id) { if(data[i]['like_unlike'] >= 1) { like_icon = "<img src='like.png' id='unlike_" + data[i]['comment_id'] + "' class='like-unlike' onClick='likeOrDislike(" + data[i]['comment_id'] + ",-1)' />"; like_icon += "<img style='display:none;' src='unlike.png' id='like_" + data[i]['comment_id'] + "' class='like-unlike' onClick='likeOrDislike(" + data[i]['comment_id'] + ",1)' />"; } else { like_icon = "<img style='display:none;' src='like.png' id='unlike_" + data[i]['comment_id'] + "' class='like-unlike' onClick='likeOrDislike(" + data[i]['comment_id'] + ",-1)' />"; like_icon += "<img src='unlike.png' id='like_" + data[i]['comment_id'] + "' class='like-unlike' onClick='likeOrDislike(" + data[i]['comment_id'] + ",1)' />"; } var comments = "\ <div class='comment-row'>\ <div class='comment-info'>\ <span class='commet-row-label'>from</span>\ <span class='posted-by'>" + data[i]['comment_sender_name'] + "</span>\ <span class='commet-row-label'>at</span> \ <span class='posted-at'>" + data[i]['date'] + "</span>\ </div>\ <div class='comment-text'>" + data[i]['comment'] + "</div>\ <div>\ <a class='btn-reply' onClick='postReply(" + data[i]['comment_id'] + ")'>Reply</a>\ </div>\ <div class='post-action'> " + like_icon + " \ <span id='likes_" + data[i]['comment_id'] + "'> " + totalLikes + " likes </span>\ </div>\ </div>"; var item = $("<li>").html(comments); var reply_list = $('<ul>'); list.append(item); item.append(reply_list); listReplies(data[i].comment_id, data, reply_list); } } } function getLikesUnlikes(commentId) { $.ajax({ type: 'POST', async: false, url: 'get-like-unlike.php', data: {comment_id: commentId}, success: function (data) { totalLikes = data; } }); } function likeOrDislike(comment_id,like_unlike) { $.ajax({ url: 'comment-like-unlike.php', async: false, type: 'post', data: {comment_id:comment_id,like_unlike:like_unlike}, dataType: 'json', success: function (data) { $("#likes_"+comment_id).text(data + " likes"); if (like_unlike == 1) { $("#like_" + comment_id).css("display", "none"); $("#unlike_" + comment_id).show(); } if (like_unlike == -1) { $("#unlike_" + comment_id).css("display", "none"); $("#like_" + comment_id).show(); } }, error: function (data) { alert("error : " + JSON.stringify(data)); } }); } </script>
comment-add.php
<?php require_once ("db.php"); $commentId = isset($_POST['comment_id']) ? $_POST['comment_id'] : ""; $comment = isset($_POST['comment']) ? $_POST['comment'] : ""; $commentSenderName = isset($_POST['name']) ? $_POST['name'] : ""; $date = date('Y-m-d H:i:s'); $sql = "INSERT INTO tbl_comment(parent_comment_id,comment,comment_sender_name,date) VALUES ('" . $commentId . "','" . $comment . "','" . $commentSenderName . "','" . $date . "')"; $result = mysqli_query($conn, $sql); if (! $result) { $result = mysqli_error($conn); } echo $result; ?>
comment-list.php
<?php require_once ("db.php"); $memberId = 1; $sql = "SELECT tbl_comment.*,tbl_like_unlike.like_unlike FROM tbl_comment LEFT JOIN tbl_like_unlike ON tbl_comment.comment_id = tbl_like_unlike.comment_id AND member_id = " . $memberId . " ORDER BY tbl_like_unlike.like_unlike DESC, tbl_comment.date DESC"; $result = mysqli_query($conn, $sql); $record_set = array(); while ($row = mysqli_fetch_assoc($result)) { array_push($record_set, $row); } mysqli_free_result($result); mysqli_close($conn); echo json_encode($record_set); ?>
Таким образом, сообщения отображаются наиболее понравившимися, но я хочу взять три лучших понравившихся сообщения и отобразить их в другом div на той же странице. Это то, что я должен сделать в базе данных MySQL, или я могу отобразить его только с помощью кода? Любая помощь будет значить очень много, я понятия не имею, как это сделать. И я знаю, что мой код открыт для SQL-инъекций, но я исправлю его перед запуском.
Что я уже пробовал:
Я вроде как новичок в PHP, и я не очень старался, я пытался перечислять комментарии по идентификатору, но это не сработало.