Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem ze stronicowaniem
peklo
post
Post #1





Grupa: Zarejestrowani
Postów: 420
Pomógł: 0
Dołączył: 27.07.2011

Ostrzeżenie: (10%)
X----


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

  1. $sql="SELECT count(*) as `ile` FROM ogloszenia o WHERE ". implode( ' AND ', $where ) ;
  2. if(!empty($formData['id_prawo_jazdy']))
  3. $sql="SELECT count(*) as `ile` FROM ogloszenia o LEFT OUTER JOIN pj p on o.id=p.id_ogloszenia WHERE ". implode( ' AND ', $where )."";
  4. $row = $stmt=$pdo->prepare($sql);
  5. $row = $stmt->execute( $bind );
  6. $row = $stmt->fetch();
  7. $recordsCount = $row['ile'];



i skrypt z zapytania które jest ok, a słuzy do wyswietlania wyników
  1. $sql="SELECT o.miasto,o.id_kraj,o.id_wojewodztwo,o.wyroznione,o.aktywne,o.id,o.za,o.cena,o.id
    _kategoria,o.data_dod,o.nazwa_ogloszenia,o.czas,
  2. z.id_ogloszenia,z.thumb,z.uploads,z.im,p.id_ogloszenia,p.id_prawo_jazdy FROM ogloszenia o LEFT OUTER JOIN zdjecia z on o.id=z.id_ogloszenia LEFT OUTER JOIN pj p on o.id=p.id_ogloszenia
  3. WHERE ". implode( ' AND ', $where);
  4. if(!empty($formData['id_prawo_jazdy']))
  5. $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)."))
  6. group by o.id having count(o.id)=".count($where_idpj)." order by o.wyroznione DESC,o.id DESC limit ".$start.",".($end - $start + 1);
  7. else
  8. $sql.=" group by o.id order by o.wyroznione DESC,o.id DESC limit ".$start.",".($end - $start + 1);
  9. $stmt=$pdo->prepare($sql);
  10. $stmt->execute( $bind );
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
peklo
post
Post #2





Grupa: Zarejestrowani
Postów: 420
Pomógł: 0
Dołączył: 27.07.2011

Ostrzeżenie: (10%)
X----


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

  1. $where = array(
  2. 'aktywne = :aktywne',
  3. 'id_kategoria = :id_kategoria'
  4. );
  5. $idpj_all=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
  6.  
  7. if (!empty($formData['id_prawo_jazdy']))
  8. {
  9. $where_idpj=array();
  10. $i=0;
  11. foreach($formData['id_prawo_jazdy'] as $idpj){
  12. $where_idpj[]=':id_prawo_jazdy_'.$i;
  13. $bind[':id_prawo_jazdy_'.$i++]=$idpj;
  14. $idpj_all=array_diff($idpj_all,array($idpj));
  15. }
  16. $where[] = 'id_prawo_jazdy IN('.implode(',',$where_idpj).')';
  17. }
  18. require_once('pager.class.php');
  19. //I TU MAM WŁAŚNIE PROBLEM Z TYM ZAPYTANIEM
  20. //mam takie zapytanie do stronicowania. Jak zaznaczę więcej jak jeden checkbox źle stronicuje (pokazuje więcej stron niż jest potrzebne) lecz wyswietla wyszukane rekordy OK
  21. $sql="SELECT count(distinct o.id) FROM ogloszenia o LEFT OUTER JOIN pj p on o.id=p.id_ogloszenia WHERE ". implode( ' AND ', $where);
  22. if(!empty($formData['id_prawo_jazdy']) && count($idpj_all))
  23. $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)."))";
  24.  
  25. $stmt=$pdo->prepare($sql);
  26. $stmt->execute( $bind );
  27. $recordsCount =$stmt->fetchColumn(0);
  28.  
  29. try{
  30. $pager = new Pager('idPagera', null);
  31. $pager->SetTotalRecords($recordsCount);
  32. $pager->Make(true);
  33. $pag = $pager->Render();
  34. $start = $pager->GetIndexRecordStart();
  35. $end = $pager->GetIndexRecordEnd();
  36. }
  37. catch (Exception $e) {
  38. echo $e->getMessage();
  39. }
  40.  
  41. //i tutaj zapytanie do wyswietlenia wyników. Działa i wyświetla wyszukane rekordy OK.
  42.  
  43. $sql="SELECT o.miasto,o.id_kraj,o.id_wojewodztwo,p.id_ogloszenia,p.id_prawo_jazdy FROM ogloszenia o LEFT OUTER JOIN pj p on o.id=p.id_ogloszenia
  44. WHERE ". implode( ' AND ', $where);
  45. if(!empty($formData['id_prawo_jazdy']) && count($idpj_all))
  46. $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)."))
  47. group by o.id having count(o.id)=".count($where_idpj)." order by o.wyroznione DESC,o.id DESC limit ".$start.",".($end - $start + 1);
  48. elseif(!empty($formData['id_prawo_jazdy']))
  49. $sql.=" group by o.id having count(o.id)=".count($where_idpj)." order by o.wyroznione DESC,o.id DESC limit ".$start.",".($end - $start + 1);
  50. else
  51. $sql.=" group by o.id order by o.wyroznione DESC,o.id DESC limit ".$start.",".($end - $start + 1);


Ten post edytował peklo 21.05.2014, 16:11:09
Go to the top of the page
+Quote Post

Posty w temacie
- peklo   problem ze stronicowaniem   12.05.2014, 18:49:51
- - nospor   Problem z mysql nie ma wiekszego zwiazku. Przenosz...   12.05.2014, 18:52:58
- - peklo   no to tak robiłem i klapa. kombinowałem na wszelki...   12.05.2014, 18:53:56
- - nospor   W kodzie co tu pokazales raczej nie widac bys tak ...   12.05.2014, 18:56:16
- - peklo   tak bo to zapytanie działa mi najlepiej z posród t...   12.05.2014, 19:14:35
- - trueblue   [PHP] pobierz, plaintext $sql="SELECT count...   12.05.2014, 19:49:31
- - peklo   tak już próbowałem wcześnie Trueblue i na stornie ...   12.05.2014, 19:52:48
- - trueblue   A jak pobierasz z tego zapytania ilość wszystkich ...   12.05.2014, 19:57:00
- - peklo   jak pobieram wszystkie rekordy tj ok tym zapytanie...   12.05.2014, 19:59:03
- - trueblue   Chciałem abyś pokazał jakim kodem pobierasz z zapy...   12.05.2014, 20:00:41
- - peklo   [PHP] pobierz, plaintext $idpj_all=array(1,2,3...   12.05.2014, 20:05:39
- - trueblue   A jak z zapytania, które Ci podałem pobierasz wart...   12.05.2014, 20:10:38
- - peklo   tj pager autorstwa nospor, a wygląda mniej więcej ...   12.05.2014, 20:15:51
- - trueblue   Spróbuj tak: [PHP] pobierz, plaintext $stmt=$pdo-...   12.05.2014, 20:29:15
- - peklo   wszytkich rekordow=18   12.05.2014, 20:32:45
- - trueblue   I z takim kodem (już bez tego echo) nie działa str...   12.05.2014, 20:34:15
- - peklo   działa stronicowanie ale tylko dla warunkóww wyszu...   12.05.2014, 20:36:30
- - trueblue   A co pokazuje powyższe echo kiedy zaznaczysz ten j...   12.05.2014, 20:39:53
- - peklo   wszytkich rekordow=1   12.05.2014, 20:42:10
- - nospor   Pozwole sobie się znowu wtrącić: Jesli dodajecie d...   13.05.2014, 06:37:04
- - trueblue   Oczywiście, że masz rację nospor. count(distinct ...   13.05.2014, 07:09:43
- - peklo   całe zapytanie mam teraz tak lecz źle wyszukuje z ...   13.05.2014, 08:21:31
- - trueblue   Nic to nie zmieni. Zostało GROUP BY, ale usunięcie...   13.05.2014, 08:32:10
- - peklo   niby juz wszystko działa z jednym wyjątkiem. Jak z...   13.05.2014, 08:37:39
- - trueblue   Ok, ale nie chodziło o przebudowanie na zasadzie w...   13.05.2014, 14:13:43
- - peklo   dobra może i nospor ma rację odnosnie zakładania n...   20.05.2014, 13:46:17
- - nospor   Nie chodzilo o dołączenie drugiej tabeli, tylko o ...   20.05.2014, 13:48:32
- - peklo   chyba najlepiej będzie jak wkleje to zapytanie któ...   20.05.2014, 13:55:36
- - Crozin   Do stronicowania obiektów posiadających relację je...   20.05.2014, 14:01:47
- - peklo   czyli jedno zapytanie już mam które działa mi dobr...   20.05.2014, 14:19:30
- - nospor   Jkabys mial dobrze, to by ci poprawnie stronicowal...   20.05.2014, 14:22:15
- - peklo   witam ponownie Już mi ręce opadaja z tym stronicow...   21.05.2014, 16:09:15
- - nospor   Problem nie jest ze skryptem stronicowania, tylko ...   21.05.2014, 16:39:14
- - peklo   Ja wiem że problem nie jest z pagerem tylko z moim...   21.05.2014, 16:49:48
- - nospor   PIsales to juz wielokrotnie. Po co powtarzasz? Pod...   21.05.2014, 16:50:42
- - peklo   zmieniłem zapytanie i teraz mi dobrze stronicuje a...   26.05.2014, 21:12:04
- - nospor   Zamien limit ".$start.",".(...   26.05.2014, 21:17:14
- - peklo   cześć nospor Sory za maila ale juz nie wytrzymuje ...   26.05.2014, 21:29:14
- - nospor   Za pierwszym razem dla pagera ustawiasz zmienną ...   26.05.2014, 21:32:18
- - peklo   nospor i znowu będe musiał kolejny miesiąc kombino...   26.05.2014, 21:51:39
- - nospor   ech.... Po prostu za pierwszym razem zamiast ...   27.05.2014, 07:09:11
- - peklo   ok dzięki mam nadzieje że juz nie będe mieć proble...   27.05.2014, 08:15:16


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 21:00