Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Stronicowanie a ostatnia strona
Forum PHP.pl > Forum > Przedszkole
Lethys
Witam, mam działający skrypt stronicowania wyników. Ale nie mogę sobie poradzić z ostatnią stroną. Kod wyświetla na stronę 10 wyników.

powiedzmy ze w bazie jest 27 recordów. Czyli powinno wyświetlić 3 strony a na trzeciej stronie powinien być brak linku "Następna strona"

Nie wiem właśnie jak coś takiego zrobić.


Kod :

  1. <?php
  2.  
  3. $policz = @mysql_num_rows(mysql_query("SELECT * FROM link"));
  4. $perPage = 10;
  5. if (is_numeric($_REQUEST['page'])) {
  6. $page = (int) $_REQUEST['page'];
  7. if ($page < 1) {
  8. $page = 1;
  9. }
  10. } else {
  11. $page = 1;
  12. }
  13. $start = ($page - 1) * $perPage;
  14. $query = "SELECT * FROM link order by klikniecia LIMIT $start, $perPage";
  15. $result = mysql_query($query);
  16. while ($record = mysql_fetch_array($result)) {
  17. // wyswietlanie wpisow
  18. echo '
  19. <DIV CLASS="box">
  20. <DIV CLASS="box_inner">
  21.  
  22. <b><h1>'.$record['nazwa'].'</h1></b>Opis: '.$record['opis'].'<br/><br/>Data dodania: 12.03.2004<br/>Zobacz szczegóły wpisu';
  23.  
  24. echo '</DIV></DIV>';
  25. }
  26.  
  27. $prev = $page - 1;
  28. $next = $page + 1;
  29. $prevLink = $_SERVER['PHP_SELF'] . '?pokaz='.$pokaz[nazwa].'&page=' . $prev;
  30. $nextLink = $_SERVER['PHP_SELF'] . '?pokaz='.$pokaz[nazwa].'&page=' . $next;
  31. echo '<br><center><a href='.$prevLink.'>Poprzednia strona</a> | <a href='.$nextLink.'>Następna strona</a></center>';
  32.  
  33.  
  34.  
  35.  
  36. ?>


Podejrzewam że można to zrobić licząc rekordy a następnie zablokować link następnej strony. Ale nie wiem jak tego dokonać.
Otto
Nie jestem pewien czy dobrze liczę ale może się przydać tongue.gif

Rozumiem że $page=2 to ostatnia strona:

  1. $a = $page * 10;
  2. $b = mysql_num_rows($zapytanie);
  3. $c = $b - $a;
  4. if($c >= 10) {
  5. pokaż link
  6. } else {
  7. nie pokazuj linku
  8. }


Pewnie da sie zrobić lepiej i szybciej no ale może będzie starczyć coś takiego
Gość
Ciężko jest znaleźć działający skrypt stronicowania, dlatego postanowiłem wkleić gotowy z mojej strony tak jak jest, może komuś się przyda. To nie ja go napisałem, a jedynie posklejałem z kilku źle działających, co znalazłem w internecie i trochę zmodyfikowałem pod moje potrzeby. Jak działa można sprawdzić tutaj http://www.fxfunciak.pl/analizy.htm



<?php
//Połączenie z mysql i wybranie bazy
$link = mysql_connect('xxxxxxxxxxxx','xxxxxxxxx','xxxxxxxxxx');
mysql_select_db('xxxxxxxxxxxx',$link);

//Domyślne wartości, odpowiednio liczby rekordów na strone i przesunięcia
$count=2;
$offset=0;

//Pobranie danych z $_GET jezsli ustawione
if(isset($_GET['count']))$count = $_GET['count'];
if(isset($_GET['offset']))$offset = $count*$_GET['offset']; //numer strony

//Pobranie liczby rekordów
$sql = 'Select count(*) from analizy';
$result = mysql_query($sql,$link);
$r = mysql_fetch_array($result);
//Liczba stron, użycie ceil - zaokrąglenie w górę, w celu zapewnienia, że żadna strona się nie straci
$pages = ceil($r[0]/$count);

//Pobranie odpowieniej paczki w kolejności od najnowszego wpisu
$sql = 'Select * from analizy order by id desc Limit '.$count.' offset '.$offset.';';
$result = mysql_query($sql,$link);

//Początek pętli wyświetlającej na stronie zawartość bazy
if(mysql_num_rows($result) > 0){
while($wiersz=mysql_fetch_assoc($result)){

/* Tutaj należy podać treść jaka ma się ukazać na stronie */
echo '<h4>'.$wiersz['tytul'].'</h4><p>'.$wiersz['tresc1'].'</p><p><a href="data/pictures/'.$wiersz['wykresd'].'" rel="gb_imageset[nice_pics]" title="Wykres '.$wiersz['tytul'].'"><img src="data/pictures/'.$wiersz['wykresm'].'" alt="Wykres '.$wiersz['tytul'].'"/></a><br/><center><font size="1">Nie możesz wyświetlić? Kliknij <a href="data/pictures/'.$wiersz['wykresd'].'"> tutaj!</a></font></center></p><p>'.$wiersz['tresc2'].'</p>';
echo ' ';
/* Tutaj należy podać treść jaka ma się ukazać na stronie */
}
} //Koniec pętli wyświetlającej
echo '<p><center>';

//Pętla po stronach
for($i=0;$i<$pages;$i++){
//jeśli obecna strona, nie twórz linku do strony
if($i*$count==$offset){
echo ' '.$i.' ';
}else{
echo '<a href="analizy.htm?count='.$count.'&offset='.$i.'"> '.$i.' </a>';
}
}
echo '</center></p>'
?>
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.