Вопрос

Мне очень жаль, если этот вопрос уже спросил или ответил, но я не могу, кажется, не могу найти то, что мне нужно.

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

Однако только два способа видеть это:

  1. Выполнение выбора в цикле, который делает каждый элемент (я думаю, что любой, кто может иметь ответ на это, согласится со мной, что это ужасное решение)
  2. Выполнение одного большого выбора, чтобы потянуть все комментарии, где News_ID находится в определенном подмножестве, а затем используйте PHP, чтобы повторить их, выберите X Самые последние и игнорируйте остальные.

    ни один из них кажется хорошим решением;Однако, поскольку они оба включают в себя огромную трату ресурсов.

    У кого-нибудь есть потенциальное предложение для реализации этого?

Это было полезно?

Решение

SELECT * FROM comments_table WHERE article_id = {something} LIMIT {no_of_comments_per_page} SORT BY date DESC
.

Это очень простое, но мощное запрос для комментариев.

Фактический код

<?php
$sql = "SELECT * FROM comments_table WHERE article_id = 24 LIMIT 40 SORT BY date DESC";
$data = mysql_query($sql);
$comments = mysql_fetch_assoc($data);
foreach($comments as $comment){
  $ct++;
  echo "ID: {$ct}";
  echo "<br />";
  echo "Comment: {$comment["comment"]} by {$comment["user"]}";
  echo "Date: {$comment["date"]}";
}
?>
.

Другие советы

Я бы использовал выбор с добавлением пределов в предложение, заказывая с помощью «ID» в порядке DESC.Что-то вроде .. "Выбрать * от предела комментариев 3 desc"

Когда пользователь нажимает кнопку «Загрузить больше комментариев», выполните тип запроса AJAX с помощью запроса, похожими на .. «Выбрать * из пределе комментариев x, 3 desc»

Я бы сделал генеракодицетагкод и сортировать данные после.Что-то вроде:

SELECT articles.id, articles.text, articles.date, 
       comments.id, comments.text, comments.date
FROM articles LEFT JOIN comments ON (comments.article_id = articles.id)
WHERE {some criteria} ORDER BY articles.date, comments.date
.

Проблема производительности иметь дополнительные комментарии, которые будут скрыты, действительно незначительна - и у вас нет дополнительных накладных расходов изготовления запроса AJAX для загрузки других комментариев, когда они нажимают кнопку «Смотреть все» - вы можете простоСкрыть их, а затем отображать их мгновенно.

Если вы хотели только топ-40 сообщений, вам придется добавить это условие в оговорку Where (на самом деле, вы можете обернуть любую фильтрацию, в которой вы тоже работаете):

WHERE articles.id IN (SELECT id FROM articles ORDER by articles.date LIMIT 40)
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top