Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]specyficzne porcjowanie
Pcbecaw
post
Post #1





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


Witam, potrzebuję skrypt stronicowania, ale bez możliwości przechodzenia na kolejne podstrony. Mam już skrypt paginacji i chciałbym wyświetlać zawartość w zależności od podstrony. Jeśli podstrona 1 - pewna zawartość, jeśli podstrona 2 - inna pewna zawartość. Chciałbym wyświetlać na jednej podstronie 10 rekordów. Obecnie mam coś takiego:
  1. <?php
  2. $dbhost = "localhost";
  3. $dbuser = "root";
  4. $dbpass = "";
  5. $dbname = "smf";
  6.  
  7. $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ("Error connecting to database");
  8. mysql_select_db($dbname);
  9. $sql = "SET CHARSET utf8";
  10. // include your code to connect to DB.
  11.  
  12. $wynik = mysql_query("SELECT `keywords` FROM `newsy`")
  13. or die('Błąd zapytania');
  14.  
  15. /*
  16. wyświetlamy wyniki, sprawdzamy,
  17. czy zapytanie zwróciło wartość większą od 0
  18. */
  19. if(mysql_num_rows($wynik) > 0) {
  20. /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
  21. while($r = mysql_fetch_assoc($wynik)) {
  22. echo " ".$r['keywords']." ";
  23. }
  24. }
  25. ?>

Chciałbym dodać do tego porcjowanie w zależności od podstrony, czyli podstrona 1 - 10 rekordów, podstrona 2 - kolejne 10 rekordów. Jak to zrobić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
aeaeae
post
Post #2





Grupa: Zarejestrowani
Postów: 117
Pomógł: 23
Dołączył: 5.03.2011

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


1. Ile ogólnie jest elementów pobierasz po to, żeby wyświetlić odsyłacze do wszystkich podstron (ten fragment, który usunąłeś) i tylko do nich, oraz po to, żeby na ostatniej stronie zrobić ograniczenie (np, masz 15 elementów, wyświetlasz po 10, więc na drugiej stronie powinno być tylko 5, przy dobrze sformułowanym zapytaniu nie jest to konieczne).
  1. <?php
  2. $o=120; //liczba przedmiotow ogolnie
  3. ...
  4. else
  5. for($i=1;$i<=$is;$i++)
  6. echo '<a href="index.php?p='.$i.'">['.$i.']'.'</a>'.' ';
  7. ?>


2. Ten skrypt, który wkleiłem służy przedstawieniu idei paginacji. Jeśli chcesz pracować na bazie danych a nie na tablicy najwygodniej jest wyliczyć min i max rekord do wyświetlenia na stronie. Już pokazuję.

  1. <?php
  2. /*
  3. liczbę przedmiotów trzeba pobrać z bazy danych, nie jest to kosztowna operacja,
  4. zamiast tworzyć zmienną można użyć define(), a jeśli nie będziesz niegdzie więcej
  5. z tej liczby korzystał, to wrzuć wartość bezpośrednio do wyświetlania odnośników
  6. stron
  7. */
  8. $o=120;
  9.  
  10. /*
  11. liczba przedmiotow na strone, tu też powinno być define()
  12. */
  13. $ile=7;
  14.  
  15. /*
  16. pobranie numeru strony
  17. zabezpieczenie przed pustym, tekstowym i niedodatnim p
  18. */
  19. $n=$_GET['p'];
  20. if($n<1)
  21. $n=1;
  22.  
  23. /*
  24. obliczenie minimalnego i maksymalnego rekordu,
  25. który ma być wyświetlony
  26. (przy zalożeniu, że kolumna identyfikatorów rekordów
  27. jest ciągiem liczb naturalnych),
  28. tu podaję zmienne, ale najwygodniej wstawić do zapytania do bazy
  29. */
  30. $max=$n*$ile;
  31. $min=($n-1)*$ile+1;
  32.  
  33. /*
  34. W tym miejscu wysyłasz zapytanie dla minimalnej i maksymalnej
  35. wartości, zwróć uwagę na obsługę tego czy min i max nie przekraczają
  36. ogólnej ilości rekordów.
  37. Tutaj też wyświetlasz rekordy.
  38. */
  39.  
  40. /*
  41. Wyświetlenie odnośników do podstron paginacji
  42. */
  43. $is=(int)(ceil($o/$ile));
  44. if(!$is)
  45. echo 'brak przedmiotow';
  46. else
  47. for($i=1;$i<=$is;$i++)
  48. echo '<a href="index.php?p='.$i.'">['.$i.']'.'</a>'.' ';
  49. ?>


Edycja: teraz zwróciłem uwagę, że nie chcesz mieć odnośników do podstron. W takim razie ilość rekordów w tabeli nie jest potrzebna, a ten fragment, który wyrzuciłeś też. (IMG:style_emoticons/default/tongue.gif)

Ten post edytował aeaeae 9.06.2011, 12:08:24
Go to the top of the page
+Quote Post

Posty w temacie


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: 27.12.2025 - 10:21