Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sesje w paginacji przy wyborze liczby wyświetlanych rekordów
Forum PHP.pl > Forum > PHP
slawekxx
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.  


kilab
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";
Ociu
Taki sam temat znalazłem w przedszkolu.

Ten zostawiam, bo jest odpowiedź na pytanie. Tamten usuwam.
slawekxx
Masz na myśli aktualnie wyświetlaną stronę ?
kilab
Tak, jeśli parametr strony nie jest ustawiony (wybrana jest pierwsza strona), offset ustawiasz na 0;
slawekxx
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 ?
PanGuzol
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>
slawekxx
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
PanGuzol
Zapisz $criteria w sesji i sprawdzaj czy istnieje (isset) jeśli formularz nie był wysłany czyli musisz dodać else do pierwszego if.
phpion
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.
slawekxx
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.