Создание постоянной ссылки на комментарий на странице с нумерацией страниц - PullRequest
2 голосов
/ 10 июня 2011

Я пытаюсь создать постоянную ссылку на комментарий на странице, которая использует разбиение на страницы и сортировку по релевантности / голосам / большинству обзоров. Это означает, что комментарий может быть на любой из страниц. Теперь я не могу понять, как создать постоянную ссылку для конкретного комментария. Есть идеи?

Я использую PHP / mySQL с Codeigniter.

1 Ответ

1 голос
/ 11 июня 2011

Вы можете использовать временную таблицу для этого.

Допустим, у вас есть контроллер статей с методом show:

article/show/[article_id]/[sort_by_something]/[sort_order]/page/[page_number]/article-magic-seo-friendly-title.html

тогда постоянная ссылка может выглядеть так:

article/show_comment/[article_id]/[sort_by]/[sort_order]/[comment_id]/[comment_dom_id]

Затем вы получаете все, что вам нужно для вашего запроса:

function show_comment($article_id, $sort_by, $sort_order, $comment_id, $comment_dom_id)
{
  // for the sake of example no validation and prepping here - do it in your code ofc
  $this->db->query('CREATE TEMPORARY TABLE tmp_comments (position INT,id INT,sort INT)');
  $this->db->query('SET @pos := 0');
  $this->db->query(
      "INSERT INTO tmp_comments (position, id, sort) 
          SELECT @pos := @pos+1, id, $sort_by
          FROM comments 
          WHERE article_id = $article_id
          ORDER BY $sort_by $sort_order 
      ");
  $result = $this->db->query("SELECT position FROM tmp_comments WHERE id = $comment_id LIMIT 1")->row());
  $position = $result->position;
  // having current comment's position we can easily calculate page number, 
  // eg. for 10 comments per page:
  $page = ceil($position / 10);

  // then just redirect to that page:
  redirect('article/show/$article_id/$sort_by/$sort_order/page/$page/article-magic-seo-friendly-title.html#$comment_dom_id');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...