![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 1.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
Proszę o pomoc w rozwiązaniu następującego problemu.
Jest sobie strona, niech będzie to: www.mojadomena/aktualnosci na której wyświetla się pięć newsów z bazy danych (każdy news ma dodany atrybut id=”news-1”, id=”news-2”… id=”news-5” wartości liczbowe są kolejnymi wierszami gdzie id jest kluczem głównym w MySQL). Jako że podstrona aktualności pobiera newsy z bazy, oczywiste jest, że będzie ich coraz więcej, zatem wykorzystuję paginację, w której kolejne pięć nowości będzie znajdowało się na stronie www.mojadomena/aktualnosci,2 , następne na www.mojadomena/aktualnosci,3 itd. Sortowanie rzecz jasna jest malejące, ponieważ każdy nowy wpis otrzymuje wyższy numer id który musi wyświetlać się na pierwszej podstronie www.mojadomena/aktualnosci , co za tym idzie, news o id=”news-6”, czyli ten najnowszy powoduje, że id=”news-1”, który jeszcze przed chwilą był na podstronie www.mojadomena/aktualnosci teraz przeskakuje na www.mojadomena/aktualnosci,2 Nie byłoby w tym nic niepokojącego mnie, gdyby nie fakt, że chciałbym móc odnosić się do poszczególnych nowości z innych podstron (tudzież z kanału RSS/Atom) za pomocą kotwic do nich (na zasadzie www.mojadomena/aktualnosci#news-3 itp.) Problem mam nadzieje jest zrozumiały. Ponieważ przy pięciu newsach w bazie wiem, że odnośnik www.mojadomena/aktualnosci#news-3 zadziała prawidłowo, ale gdy ilość wpisów w bazie będzie już dajmy na to 9, to prawidłowo odnośnik powinien wskazywać na www.mojadomena/aktualnosci,2#news-3 przy 15 wpisach w bazie ten znów nie zadziała, bo należy użyć wówczas www.mojadomena/aktualnosci,3#news-3. Czyli prawidłowy adres jest zależny od ilości wpisów w bazie. Jakie widzicie rozwiązanie takiego problemu? Zaznaczam, że zależy mi na tym, żeby móc odnieść się do poszczególnych newsów zarówno z innych podstron, jak i kanału RSS/Atom. Za wszelkie sugestie dziękuję ![]() |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli odnosisz się tylko do jednego wpisu to po co ci w url'u paginacja?? zamiast www.mojadomena/aktualnosci,2#news-3 wystarczy www.mojadomena/aktualnosci#news-3
Twój system paginacji chyba nie działa jak należy? w jaki sposób nowy wpis, może powodować przesunięcie wpisu starszego?? np. aktualnosci,2 news-10 news-9 news-8 news-7 news-6 aktualnosci,1 news-5 news-4 news-3 news-2 news-1 jest prawidłowym zapisem - id powinno pozostać unikalne tak aby łatwo, można było operować na danych Ten post edytował CuteOne 23.07.2011, 01:42:33 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 1.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za reakcję
![]() ![]() Cytat Jeżeli odnosisz się tylko do jednego wpisu to po co ci w url'u paginacja?? Chodzi mi o to, żeby pomimo, że odnoszę się do na przykład wpisu o id="news-3" osoba widziała również wpisy przed nim i po nim (czyli cztery pozostałe na tej podstronie wynikającej z paginacji). A dzięki efektowi "kotwiczenia" #news-3 przeglądarka zjechała do tego wpisu i na przykład za pomocą odpowiedniego ostylowania id tego wpisu postawić tam jakiś znacznik - ale to nie jest tematem postu ![]() Cytat Twój system paginacji chyba nie działa jak należy? w jaki sposób nowy wpis, może powodować przesunięcie wpisu starszego?? np. aktualnosci,2 news-10 ... news-6 aktualnosci,1 news-5 ... news-1 jest prawidłowym zapisem - id powinno pozostać unikalne tak aby łatwo, można było operować na danych Zgadza się, i tak by było, gdyby nie sortowanie malejące w bazie za pomocą zapytania Kod "select * from news order by id DESC limit $strona, $iloscNaStronie"; Gdy zmienię na sortowanie rosnące Kod "select * from news order by id ASC limit $strona, $iloscNaStronie"; wówczas wszystko zachowuje się prawidłowo, tak jak w cytowanym przez Ciebie fragmencie... tyle że idea newsów się trochę chwieje, wszak najświeższe wpisy są wyższymi numerami www.mojadomena/aktualnosci,2 ![]() Jakieś dodatkowe sugestie? ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Chyba załapałem w czym masz problem ;D sprawdź
Pobierasz dane tak jak się to zazwyczaj robi przy paginacji czyli od najmniejszego do największego a potem dzięki funkcji krsort sortujesz już pobrane dane wg. klucza Ten post edytował CuteOne 24.07.2011, 00:17:03 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 1.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
Wielkie dzięki!
Faktycznie rozwiązuje to poniekąd mój problem. Widzę jednak, że nie da się pogodzić rozwiązania, które mi zaproponowałeś z numeracją wynikającą z paginacji. Teraz jest faktycznie tak jak pisałeś Cytat aktualnosci,2 news-10 news-9 news-8 news-7 news-6 aktualnosci,1 news-5 news-4 news-3 news-2 news-1 A zatem, im nowszy wpis, tym wyższy numer, tak więc przybywa wartości aktualnosci,2, aktualnosci,3, aktualnosci,4 (jest to prawidłowe). Borykam się więc z problemem nie do rozwiązania, bo z jednej strony chciałbym mieć najnowsze wpisy dla aktualnosci,1 (wszak ta strona otwiera się domyślnie, a dokładniej po prostu aktualności bez parametru, co jest równe aktualności,1), ale wyklucza to unikalność adresu dla wpisu o określonym id. Zatem wędrują one do aktualnosci,x (gdzie x, to ostatnia strona z najnowszymi wpisami) Jak to się mówi, albo rybki, albo akwarium ![]() ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 18:32 |