Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Bazy danych _ Miejsce rekordu w zapytaniu

Napisany przez: loczek111 2.07.2018, 11:55:30

Zacznę od wprowadzenia w temat, wyświetlam komentarze techniką Ajax. Po 10 kolejnych komentarzy gdy użytkownik dojedzie scrollem do dołu strony (skryptem wysyłam zmienną limit i offset do php).
Gdy ktoś polubi komentarz danego użytkownika, ten dostaje powiadomienie i klikając w nie przekierowuje go do danej strony gdzie skomentował treść.
Chcę zrobić system który zjedzie stroną do danego komentarza i go podświetli, aby użytkownik nie musiał go szukać (animacje zrealizowałem za pomocą JQuery).

Problem natomiast mam tu że animacja działa dla pierwszych 10 komentarzy (kolejne się jeszcze nie wyświetliły więc nie istnieją dla js na stronie), nie wiem jak ustawić odpowiedni limit (liczba która mówi ile wyświetlić komentarzy po załadowaniu strony), dobrze by było znać na którym miejscu jest szukany komentarz.
Mam do dyspozycji id komentarza w bazie. Miałem pomysł aby wykonać wcześniej uproszczone zapytanie do komentarzy i w pętli policzyć na którym miejscu jest dany id ale przy załóżmy 500 komentarzach jest do dosyć ciężka dla serwera metoda.
Zastanawiam się czy można jakoś użyć zapytania SELECT aby wyświetlił rekordy dopóki nie napotka danego id (sortowanie komentarzy jest dosyć złożone, po polubieniach od odpowiedniej liczby i po dacie) lub aby wyświetlał liczbę porządkową dla każdego rekordu i wtedy wyciągnął bym tą liczbę i wstawił jako limit.
Macie może jakieś lepsze pomysły lub podpowiedzi co do moich?

PS. chwilę się zastanawiałem ale myślę że dobrze dopasowałem kategorie na forum

Napisany przez: trueblue 2.07.2018, 12:10:11

A nie może być tak, że w tym przypadku ten wskazany komentarz pojawi na początku listy, jako swego rodzaju wyróżniony?

Napisany przez: loczek111 2.07.2018, 12:13:07

Prosta a jakże pomocna odpowiedź, bije się w pierś że sam na to nie wpadłem wink.gif Dzięki!

Napisany przez: Crozin 2.07.2018, 13:06:27

Na dobrą sprawę jest to dosyć proste do zrealizowania.

1. Link powinien zawierać w sobie jakieś ID komentarza, np. http://my-website/resouce-x?findComment=123.
2. Na pow. stronie wykonujesz zapytanie ustalające pozycję danego wiersza w ów liście komentarzy. Zrobisz to korzystając z ROW_NUMBER (w różnych silnikach baz może to widnieć pod inną nazwą). Tutaj przykład: https://stackoverflow.com/questions/1079480/how-to-determine-position-of-row-in-sql-result-set
3. Mając pozycję jesteś wstanie przekierować na odpowiednią stronę w listingu komentarzy, np. http://my-webiste/resource-x?commentsPage=23

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)