Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CSS][PHP]Paginacja ogłoszeń.
Forum PHP.pl > Forum > Przedszkole
miras
Witam, mam następujący problem: mam w bazie danych dajmy na to 1000 ogłoszeń, na stronę chcę wyświetlać 6 ogłoszeń, a co do 'numerków' stron to mam takie coś :


  1.  
  2. <div class="nr"><a href="">1</a></div>
  3. <div class="nr"><a href="">2</a></div>
  4. <div class="nrt"><a href="">3</a></div> // <--- to jest strona na której obecnie się znajduje.
  5. <div class="nr"><a href="">4</a></div>
  6. <div class="nr"><a href="">5</a></div>


i chcę zrobić tak, żeby wyświetlało numery stron 2+ i 2- czyli np. jestem na stronie 4 to wyświetla mi numerki stron: 2,3,4,5,6

Proszę o jakieś rady / wskazówki, bo nie mam pojecia jak się za to wziąć..

Dzięki z góry!

@@@@@@


Dodam jeszcze, że teraz te ogłoszenia tak wyświetlam:


  1.  
  2. <?php
  3. $wynik = mysql_query("SELECT * FROM `tabela`") or die('Błąd zapytania');
  4. if(mysql_num_rows($wynik) > 0) {
  5. while($r = mysql_fetch_assoc($wynik)) {
  6.  
  7. echo $r['ogloszenie'];
  8. }
  9. }
  10. ?>
johnyMajster
jezeli jestes na stronie pierwszej i chcesz widziec 2 3 4 5. To musisz przesłąc do twojego dokumentu jedynkę za pomocą np GET lub POST. Wtedy w pętli wypisujesz wszystko co nie jest przesłana cyfrą.
miras
tak, tyle to rozumiem, z tym, że dajmy na to zrobię tak: np. odnośnik do strony numer 2 będzie: index.php?page=2, i jak to teraz zrobić ? dać ORDER BY id DESC LIMIT NUMERSTRONY*6 questionmark.gif
johnyMajster
jak juz wejdziesz na strone np nr 2 to co konkretnie chcesz wyswietlic?? Bo nie wiem czy Cie rozumiem
miras
jak już pisałem, to chcę wyświetlać po 6 ogłoszeń na stronę, więc na pierwszej stronie będą ogłoszenia z przedziału 1-6 a na drugiej stronie z przedziału 7-13
johnyMajster
musisz zrobic pewien przelicznik w zapytaniu bedzie to tak:
$select = 'SELECT * FROM `tabela` ORDER BY `id` desc LIMIT '.$count.' offset '.$offset
$count ilosc wyników czyli 6
$offset np 6*2
miras
no dobrze, mam tak:


  1.  
  2. $strona=$_GET['page']*6;
  3. $wyniki=6;
  4.  
  5. $wynik = mysql_query("SELECT * FROM `tabela` ORDER BY `id` desc LIMIT $wyniki,$strona") or die('Błąd zapytania');


I błąd zapytania ?

tzn, już jest dobrze:


  1.  
  2. $wyniki=6;
  3. if (!$_GET['page']) {
  4. $strona=1;
  5. } else {
  6. $strona=$_GET['page']*6;
  7. }
  8.  
  9.  
  10. $wynik = mysql_query("SELECT * FROM `anons` ORDER BY `id` desc LIMIT $wyniki,$strona") or die('Błąd zapytania');
  11.  


dajmy na to page=4 daje nam 24 ogłoszenia na stronie..
johnyMajster
zamiast przecinka daj polecenie OFFSET
miras
Ok, dzięki, a co jeszcze radzisz zrobić z tym numerowaniem stron:

biorąc pod uwagę taki 'układ':
  1. <div class="nr"><a href="">1</a></div>
  2. <div class="nr"><a href="">2</a></div>
  3. <div class="nrt"><a href="">3</a></div> // <--- to jest strona na której obecnie się znajduje.
  4. <div class="nr"><a href="">4</a></div>
  5. <div class="nr"><a href="">5</a></div>
johnyMajster
Z klasami dobrze wymysliłes tylko nie w divach lecz w

  1. <ul>
  2. <li><a href="vs1.html" title="Vertical Menu - Page 1">Stage 1</a></li>
  3. <li><a href="vs2.html" title="Vertical Menu - Page 2">Stage 2</a></li>
  4. <li><a href="vs3.html" title="Vertical Menu - Page 3">Stage 3</a></li>
  5. <li><a href="vs4.html" title="Vertical Menu - Page 4">Stage 4</a></li>
  6. <li><a href="vs5.html" title="Vertical Menu - Page 5">Stage 5</a></li>
  7. <li><a href="vs6.html" title="Vertical Menu - Page 6">Stage 6</a></li>
  8. </ul>

i drukuj to w php wtedy mozesz wydrukowac zawsze inna klase tam gdzie masz aktywny numerek czyli inaczej go ostylowac
miras
Ok, dzięki - problem rozwiązany.
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.