Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sesje w paginacji przy wyborze liczby wyświetlanych rekordów
slawekxx
post 4.11.2012, 10:21:07
Post #1





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


Witam,

napisałem skrypt paginacji rekordów w bazie mam możliwość ustawiania wyświetlanych rekordów na stronie 5 10 15 ale przechodząc na kolejne podstrony paginacji ta zmienna nie jest przenoszona próbuje robić to za pomocą sesji ale mi nie wychodzi taki mam kod do zmiany rekordów na stronie

  1. foreach (array(5,10,15) as $size) {
  2.  
  3. if ($_GET['size'] <> $size) {
  4. echo "<a href='?size=$size";
  5. echo (isset($_GET["page"])) ? '&page='.$_GET["page"] : '';
  6. echo "'>$size</a>";
  7. }else{
  8. echo "<span class='current'>$size</span>";
  9. }
  10. }
  11.  
  12.  


a podstrony paginacji tworzą się za pomocą


  1. for($j=$num_pages; $j<=$num_pages;$j++) {
  2. echo"<li>...</li>";
  3. if($j==$page){
  4. echo'<li class="active">'.$j.'</li>';}
  5. else{
  6. echo'<li><a href="?page='.$j.'">'.$j.'</a></li>';
  7. }
  8. }
  9. }
  10.  


Go to the top of the page
+Quote Post
kilab
post 4.11.2012, 10:38:15
Post #2





Grupa: Zarejestrowani
Postów: 180
Pomógł: 19
Dołączył: 4.11.2007

Ostrzeżenie: (0%)
-----


Użycia sesji to ja tu nie widzę. Ogólnie nie masz kodu, który pobiera wyniki dla innych podstron, masz tylko samego pagera. Musisz w zapytaniu ustawiać offset na podstawie numeru aktualnej strony.


  1. $offset = $strona*$ile_wynikow;
  2.  
  3. $query = "SELECT * FROM tabela LIMIT $offset, $ile_wynikow";


--------------------
Go to the top of the page
+Quote Post
Ociu
post 4.11.2012, 10:47:02
Post #3





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Taki sam temat znalazłem w przedszkolu.

Ten zostawiam, bo jest odpowiedź na pytanie. Tamten usuwam.
Go to the top of the page
+Quote Post
slawekxx
post 4.11.2012, 11:12:43
Post #4





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


Masz na myśli aktualnie wyświetlaną stronę ?
Go to the top of the page
+Quote Post
kilab
post 4.11.2012, 11:15:22
Post #5





Grupa: Zarejestrowani
Postów: 180
Pomógł: 19
Dołączył: 4.11.2007

Ostrzeżenie: (0%)
-----


Tak, jeśli parametr strony nie jest ustawiony (wybrana jest pierwsza strona), offset ustawiasz na 0;


--------------------
Go to the top of the page
+Quote Post
slawekxx
post 4.11.2012, 11:28:18
Post #6





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


takie mam zapytanie obecnie
  1. $sql='SELECT * FROM webacm_test ORDER BY `webacm_test`.`date` '.$_SESSION['order_direction'].' LIMIT '.(int)$start.','.(int)$per_page ;
stworzyłem sobie zmienne
  1. $no_of_paginations;
jest liczbą wszystkich rekordów po wyniku sortowania np.5 a
  1. $page_os
jest liczbą aktualnej wyświetlanej strony jak mam napisać zapytanie ?
Go to the top of the page
+Quote Post
PanGuzol
post 7.11.2012, 00:03:30
Post #7





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

Ostrzeżenie: (0%)
-----


Mógłbyś użyć sesji ale lepiej będzie jeśli użyjesz get. Dodaj parametr size do linków z numerem strony.
  1. <a href="?page='.$j.'&size='.$size.'">'.$j.'</a>


--------------------
Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej"
"NIE kradnij, rząd nielubi konkurencji"
Go to the top of the page
+Quote Post
slawekxx
post 7.11.2012, 06:12:12
Post #8





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


Jak dodałem to do linków to działa , a teraz mam inny problem z checkboksami chce nimi wybierać kryteria , które zostaną wysłane do zapytania udało mi się to zrobić takim kodem
  1. if(isset($_POST['wybierz']) && !empty($_POST['wybierz'])){
  2. foreach($_POST['wybierz'] as $key=>$value){
  3. if($value==1) $criteria[] = "region='".mysql_escape_string($key)."'";
  4. }
  5. $criteria = implode(' OR ', $criteria);
  6. }
  7. if(!empty($criteria)){
  8. $num_rows=mysql_num_rows(mysql_query("SELECT * FROM webacm_test WHERE $criteria"));
  9. }
  10. else {
  11. $num_rows=mysql_num_rows(mysql_query("SELECT * FROM webacm_test "));
  12. }
  13. >


  1. <input type="checkbox" name="wybierz[1] value=1">
  2. <input type="checkbox" name="wybierz[2] value=1">
  3. <input type="checkbox" name="wybierz[3] value=1">
  4. <input type="checkbox" name="wybierz[4] value=1">
  5. <input type="submit" name="submit">
  6. </form>


filtrowanie następuje tylko jak np. powstanie 10 stroń paginacji to po klknięciu w jakiś link wyskakuje mi wszystkie odnośniki do całej bazy , próbuje to zrobić za pomocą sesji ale nie umie napisać poprawnie kodu

Ten post edytował slawekxx 7.11.2012, 06:16:38
Go to the top of the page
+Quote Post
PanGuzol
post 7.11.2012, 08:32:19
Post #9





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

Ostrzeżenie: (0%)
-----


Zapisz $criteria w sesji i sprawdzaj czy istnieje (isset) jeśli formularz nie był wysłany czyli musisz dodać else do pierwszego if.


--------------------
Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej"
"NIE kradnij, rząd nielubi konkurencji"
Go to the top of the page
+Quote Post
phpion
post 7.11.2012, 11:56:39
Post #10





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Stronicowanie i filtrowanie danych NIE powinno korzystać z sesji. Wszelkie dane (numer strony, ew. liczba rekordów na stronę, ustalone filtry) przekazuj GETem. Dlaczego? Ukrywając te dane w sesji uniemożliwiasz przekazanie komuś linka do danej strony wyszukiwania, a przekazując je GETem masz je zapisane w samym adresie.
Go to the top of the page
+Quote Post
slawekxx
post 23.11.2012, 16:37:27
Post #11





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


Możesz mi napisać ten kawałek kodu bo z sesjami sobie nie radzę co_jest.gif

Próbowałem GETem raczej odpada nie przenosi wszystkiego w moim skrypcie

Witam , wyskoczył mi problem z GETem gdy zaznaczam checkboxy a mianowicie gdy zaznaczę jeden jest wszystko ok
  1. ?region%5B4%5D=1
a gdy zaznaczę parę
  1. ?region%5B1%5D=1&region%5B2%5D=1&region%5B4%5D=1&region%5B5%5D=1
mam taki link w przeglądarce a uzyskuje to tak
  1. echo'<li><a href="?region[4]D=1&size=5&page='.$i.'">'.$i.'</a></li>';
nie wiem jak napisać ten kawałek kodu aby uzyskać za pomocą <a href> ten kawałek linku
  1. ?region%5B1%5D=1&region%5B2%5D=1&region%5B4%5D=1&region%5B5%5D=1
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 5.07.2025 - 16:46