![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
mam taki mały problemik ze stronicowaniem wyników.
Jak wcisne szukaj to stronicuje mi ok. Pokazuje wszystkie rekordy i dzieli ładnie na strony np: 27 rekordów po 5 na stronie czyli pokazuje 1 strona z 6. Jeślii wezme wybiorę warunki wyszukiwania również jest wszystko ok. Problem pojawia się jak wciisnę warunki wyszukiwania dla drugiej tabeli. Przykład: Zaznacze prawo jazdy 1 i 2 pokazuje mi ładnie 6 wyników, a stronicowanie 1 strona z 5 lub zaznacze pj 1 pokazuje 8 rekordów , a stronicowanie 1 z 3 stron. Zapytanie odpowiedzialne za stronicowanie-nie do końca działa ok
i skrypt z zapytania które jest ok, a słuzy do wyswietlania wyników
|
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Problem z mysql nie ma wiekszego zwiazku. Przenosze.
Juz ci poza tym tlumaczylem kilkukrotnie, ze zapytanie do zliczania rekordow ma byc takie samo co zapytanie do wyswietlania rekordow, gdyz w przeciwnym wypadku bedą przeklamane dane.... ale jak zwykle w ogole mnie nie sluchasz... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
no to tak robiłem i klapa. kombinowałem na wszelkie sposoby i nic (IMG:style_emoticons/default/sad.gif)
Ten post edytował peklo 12.05.2014, 18:54:59 |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
W kodzie co tu pokazales raczej nie widac bys tak wlasnie zrobil. Jak dla mnie zapytanie do zliczania jest rozne od zapytania do wyswietlania.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
tak bo to zapytanie działa mi najlepiej z posród tych które zkleiłem wcześniej (IMG:style_emoticons/default/smile.gif) . Nospor ja Cię zawsze słucham (IMG:style_emoticons/default/smile.gif)
jak wezmę to samo zapytanie co do wyświetlania wyników to wyświetla mi 1 wynik. Jak wykasuje grupowanie tj jeszcze gorzej niż w pierwszym zapytaniu na poczatku postu |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
tak już próbowałem wcześnie Trueblue i na stornie pokazuje tylko 1 wynik
jak usuwam group to znowu mam w ciul stron 1 z np 20 Ten post edytował peklo 12.05.2014, 19:55:08 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
A jak pobierasz z tego zapytania ilość wszystkich rekordów?
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
jak pobieram wszystkie rekordy tj ok tym zapytaniem
Jak wezme szukaj z zaznaczonymi opcjami w tabeli głownej to tez jest ok. Dopiero jak dołącze te prawo jazdy to sie krzaczy |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Chciałem abyś pokazał jakim kodem pobierasz z zapytania, które Ci podałem ilość wszystkich rekordów.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
a i jeszcze
Ten post edytował peklo 12.05.2014, 20:07:09 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
A jak z zapytania, które Ci podałem pobierasz wartość?
Zapytanie to zwraca jeden rekord z jednym polem, i jest to liczba wszystkich rekordów, które spełniają podane warunki. Obecnie pokazujesz mi jak budujesz warunki do tego zapytania. Pokaż co robisz gdy je uruchomisz. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
tj pager autorstwa nospor, a wygląda mniej więcej tak
kodu pagera raczej nie bede wklejać http://nospor.pl/download/idfolder/20/ i wyświetlenie ilosci stron Ten post edytował peklo 12.05.2014, 20:20:08 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
wszytkich rekordow=18
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
I z takim kodem (już bez tego echo) nie działa stronicowanie?
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
działa stronicowanie ale tylko dla warunkóww wyszukiwania z tabeli głownej. Jak zaznacze przykladowo 1 checkbox pj to pokazuje tylko 1 rekord
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
A co pokazuje powyższe echo kiedy zaznaczysz ten jeden checkbox?
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
wszytkich rekordow=1
|
|
|
![]()
Post
#20
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Pozwole sobie się znowu wtrącić:
Jesli dodajecie do zapytania GROUP BY to wowczas select COUNT(*) nie działa już tak samo jak bez GROUP BY (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#21
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście, że masz rację nospor.
count(distinct o.id) zamiast count(*) i bez group by o.id |
|
|
![]()
Post
#22
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
całe zapytanie mam teraz tak lecz źle wyszukuje z zaznaczeniem prawa jazdy (1 rekord)
Ten post edytował peklo 13.05.2014, 08:26:28 |
|
|
![]()
Post
#23
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nic to nie zmieni.
Zostało GROUP BY, ale usunięcie GROUP BY musi skutkować usunięciem HAVING. Zapytanie jest do przeróbki. Lub mała podpowiedź dla Ciebie: http://dev.mysql.com/doc/refman/5.0/en/inf...tion_found-rows Nie musisz dla powyższego tworzyć odrębnego zapytania zliczającego wszystkie rekordy. Umieszczasz to w zapytaniu, które ma wbudowany LIMIT. Ten post edytował trueblue 13.05.2014, 08:33:32 |
|
|
![]()
Post
#24
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
niby juz wszystko działa z jednym wyjątkiem. Jak zaznaczę dwa lub więcej checkbox to pokazuje mi więcej stron
lub nie pokazuje rekordów, a dzieli strony ponadto po zaznaczeniu wszystkich checkbox wywala błąd Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))' at line 2' in /home/cxr86679/public_html/:126 Stack trace: #0 /home/cxr86679/public_html/(126): PDOStatement->execute(Array) #1 {main} thrown in /home/cxr86679/public_html/ on line 126 coś chyba w tym jest namieszane $sql.=" and o.id not in (select o2.id from ogloszenia as o2,pj as p2 where o2.id=p2.id_ogloszenia AND p2.id_prawo_jazdy in(".implode(',',$idpj_all)."))"; Ten post edytował peklo 13.05.2014, 09:50:42 |
|
|
![]()
Post
#25
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Ok, ale nie chodziło o przebudowanie na zasadzie wyrzucenia GROUP BY wraz z HAVING.
Spróbuj rozwiązania które podałem Ci w mojej poprzedniej wiadomości. |
|
|
![]()
Post
#26
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
dobra może i nospor ma rację odnosnie zakładania nowego tematu ale zmieniło mi sie troszke zapytanie. ok to zaczne pisac tutaj.
Twoje rozwiązanie nospor o którym mowiłeś, że zapytanie ma być takie samo do stronicowania jak i wyświetlania wyników w ogóle nie działa. W moim przypadku działało jak miałem jedna tabele ale jak ja połączyłem w zapytaniu z inną to stronicowanie juz mi nie działa poprawnie |
|
|
![]()
Post
#27
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nie chodzilo o dołączenie drugiej tabeli, tylko o stosowanie group by. Wyjasnialem to w jednym z postow tutaj.
|
|
|
![]()
Post
#28
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
chyba najlepiej będzie jak wkleje to zapytanie które mam do wyświetlania wyników i już
Do stronicowania wyników mam teraz coś takiego i owszem może i dobrze stronicuje ale chyba chodzi o group by bo pokazuje mi 1 rekord
i jeszcze warunek do prawa jazdy
jak wyrzuce group by to pokazuje rekordy ale cos znowu przekłamuje ze stronicowaniem Ten post edytował peklo 20.05.2014, 14:05:11 |
|
|
![]()
Post
#29
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Do stronicowania obiektów posiadających relację jeden-do-wielu lub wiele-do-wielu musimy wykonać do trzech zapytań:
1. Zliczające łączą ilość obiektów, jakie będziemy wyświetlać wykorzystujące COUNT(DISTINCT id) czy coś podobnego. Możemy je ewentualnie pominąć, jeżeli łączną ilość obiektów mamy już gdzieś zapisaną - częste np. przy komentarzach, gdzie ich łączną ilość i tak mamy zapisaną w tabeli z postami/obrazami/czymkolwiek co da się komentować. Dla MySQL: Klauzule WHERE, GROUP BY itp. powinny być identyczne jak w zapytaniu z punktu drugiego. 2. Wybierające unikalne ID rekordów, które przypadają na daną stronę - to tutaj lądują obowiązkowo klauzule ORDER BY ... oraz OFFSET ... LIMIT .... 3. Wybierające faktyczne obiekty z bazy danych. Tutaj modyfikujemy klauzulę WHERE: oraz usuwamy klauzulę OFFSET ... LIMIT .... Bardzo istotne jest by drugie i trzecie zapytanie miały obowiązkowo klauzurę ORDER BY. Ten post edytował Crozin 20.05.2014, 14:03:30 |
|
|
![]()
Post
#30
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]()
Post
#31
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Jkabys mial dobrze, to by ci poprawnie stronicowalo (IMG:style_emoticons/default/wink.gif)
@Crozin nie jestes w kontekscie problemu i tutaj naprawde nie o to chodzi (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#32
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
witam ponownie
Już mi ręce opadaja z tym stronicowaniem. Poprostu wkleje to co mam i mam nadzieje że ktoś miał podobny problem i mi pomoże
Ten post edytował peklo 21.05.2014, 16:11:09 |
|
|
![]()
Post
#33
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Problem nie jest ze skryptem stronicowania, tylko z zapytaniem pobierającym liczbę wszystkich rekordów. Błędny wynik tego zapytania psuje wszystko inne. Staraj się uścislać problem (IMG:style_emoticons/default/wink.gif)
Skoro masz taki problem z tym zapytaniem, to rekordy policz przez podzapytanie czyli:
Nie jest to może najoptymalniejsze, ale lepsze niz nic (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#34
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
Ja wiem że problem nie jest z pagerem tylko z moim zapytaniem do stronicowania. Ok więc jest tak:
-jesli nie zaznaczę żadnych kryteriów wyszukiwania tylko warunek where aktywne=1 i id_kategoria=1 to stronicuje i wyswietla OK - jesli wybiore jakieśs kryteria + np 1 checkbox równiez jest wszystko OK - stronicuje i wyświetla dobrze) - jeśli natomiast zaznaczę 2 lub więcej checkbox lub wszystkie wówczas pokazuje rekordy dobrze wg żądanych kryteriów lecz przekłamuje ze stronicowaniem. Pokazuje więcej stron niż potrzeba. Ten post edytował peklo 21.05.2014, 16:52:18 |
|
|
![]()
Post
#35
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
PIsales to juz wielokrotnie. Po co powtarzasz? Podalem ci najmniej problemowe rozwiązanie.
|
|
|
![]()
Post
#36
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
zmieniłem zapytanie i teraz mi dobrze stronicuje ale pokazuje po jednym rekordzie (IMG:style_emoticons/default/sad.gif)
Jak pusciłem echo $sql to nie wiem czemu ale mam limit 0,1, a w pager mam ustawiony limit 5 Ten post edytował peklo 26.05.2014, 21:14:37 |
|
|
![]()
Post
#37
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Zamien
limit ".$start.",".($end - $start + 1); na: limit ".$start.",5"; Jesli to nie pomoze, pokaz caly kod po zmianach, wlacznie z inicjalizacją pagera |
|
|
![]()
Post
#38
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
cześć nospor
Sory za maila ale juz nie wytrzymuje z tym zapytaniem Teraz pokazuje mi po 5 na stronie ale jak przerzuce na następną mam te same rekordy. Zaraz wkleje całość oto kod. Tylko muszę dwa razy inicjować pagera bo jak dam go tylko na samym końcu to wtedy nie działa mi warunek do stronicowaniaten z limit
Ten post edytował peklo 26.05.2014, 21:30:16 |
|
|
![]()
Post
#39
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Za pierwszym razem dla pagera ustawiasz zmienną $recordsCount, ktora nie istnieje, wiec trudno oczekiwać by pager zwracał ci poprawne indeksy do stronicowania... Pomysl przez chwilę jak to można obejsc (IMG:style_emoticons/default/smile.gif)
|
|
|
![]() ![]()
Post
#40
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
nospor i znowu będe musiał kolejny miesiąc kombinować. Ale chyba jestem coraz bliżej (IMG:style_emoticons/default/smile.gif)
muszę jeszcze dać jednego selecta na samej górze przed inicjacją pagera? w linii 20 przed try dałem
i teraz niby działa dobrze ale mam 3 selecty i dwa razy zainicjowany pager. czy tak może być? |
|
|
![]()
Post
#41
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
ech....
Po prostu za pierwszym razem zamiast $pager->SetTotalRecords($recordsCount); daj $pager->SetTotalRecords(1000000); i juz |
|
|
![]()
Post
#42
|
|
Grupa: Zarejestrowani Postów: 420 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (10%) ![]() ![]() |
ok dzięki mam nadzieje że juz nie będe mieć problemów z tym stronicowaniem:)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 20:49 |