Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Paginacja
Forum PHP.pl > Forum > Przedszkole
plej
Witam haha.gif
Bo mam kod paginacji i pobiera mi wszystkie dane z tabeli tzn. je zlicza i na każdej stronie jest paginacja wszystkich rekordów choć mam warunek to ja lepiej kod dam smile.gif
view.php:
  1. <?php
  2. $tytul = "Życzenia";
  3. include('naglowek.php');
  4. include('gora.php');
  5. include('db.php');
  6. ?>
  7.  
  8. <div id="templatemo_background_section_mid">
  9. <div class="templatemo_container">
  10. <div id="templatemo_content_area">
  11. <div id="templatemo_left_section">
  12.  
  13. <div class="templatemo_left_section_box">
  14.  
  15. <?php
  16.  
  17. $subpage = $_GET['page'];
  18. $perPage = 15;
  19. if (!empty($_GET['subpage']) && (is_numeric($_GET['subpage'])))
  20. {
  21. $subpage = (int) $_GET['subpage'];
  22. }
  23. if ($subpage < 1)
  24. {
  25. $subpage = 1;
  26. }
  27.  
  28. $start = ($subpage - 1) * $perPage;
  29.  
  30. // $query = "SELECT * FROM wszystko WHERE id_kategori=$id_kate";
  31. // $result = mysql_query($query) or die(mysql_error());
  32. // $idd = mysql_fetch_array($result);
  33. // $iddd = $idd["id"];
  34. $id_kate = $_GET["id_kategorii"];
  35. $zapytanie = 'SELECT * FROM wszystko WHERE id_kategorii='.$id_kate.' ORDER BY id DESC LIMIT '.$start.', '.$perPage.'';
  36. $idzapytania = mysql_query($zapytanie)or die(mysql_error());
  37. $max = "SELECT COUNT(*) as max FROM wszystko";
  38. $max_query = mysql_query($max);
  39. $maxrecords = mysql_fetch_array($max_query);
  40.  
  41. if(mysql_real_escape_string((!isset($_GET['id'])) or empty($_GET['id'])))
  42. {
  43.  
  44. while ($wiersz = mysql_fetch_array($idzapytania))
  45. {
  46. $id = $wiersz["id"];
  47. $id_kategorii = $wiersz["id_kategorii"];
  48. $tytul = $wiersz["tytul"];
  49. $uzytkownik = $wiersz["uzytkownik"];
  50. $data = $wiersz["data"];
  51. $tresc = $wiersz["tresc"];
  52.  
  53. echo '<a href="pokaz.php?id='.$id.'&tytul='.$tytul.'"><div class="templatemo_left_section_box_top">'.$tytul.'</div></a>';
  54. echo '<div class="templatemo_left_section_box_body">'.substr($tresc, 0, 50).'... <a href="">Czytaj dalej</a><br/>';
  55. echo '<span class="post"><b>Dodał:</b> <a href="#">'.$uzytkownik.'</a></span>';
  56. echo '<span class="post"><b>Dodano:</b> '.$data.'</span>';
  57. echo '</div>';
  58. }
  59.  
  60. }
  61. $prev = $subpage - 1;
  62. $next = $subpage + 1;
  63. $id_kate = $_GET["id_kategorii"];
  64. $prevLink = 'view.php?page='.$prev.'&id_kategorii='.$id_kate;
  65. $nextLink = 'view.php?page='.$next.'&id_kategorii='.$id_kate;
  66. $ilosc_wierszy = $maxrecords['max'];
  67. if($subpage > 1)
  68. echo'<center><a style="text-decoration: none;" href="'.$prevLink.'">Poprzednia strona </a>';
  69. $stron=ceil($ilosc_wierszy/$perPage);
  70. for($i=1; $i<=$stron; ++$i)
  71. {
  72. if($i==$subpage)
  73. echo '<b>'.$i.'</b> ';
  74. else
  75. echo '<a style="text-decoration: none;" href="view.php?page='.$i.'&id_kategorii='.$id_kate.'">'.$i.' </a>';
  76. }
  77. if($subpage < $stron)
  78. echo '<a style="text-decoration: none;" href="'.$nextLink.'"> Następna strona</a>';
  79.  
  80. ?>
  81. </center>
  82. </div>
  83. </div>
  84. </div><!-- End Of left Section -->
  85. <?php
  86. $id = (int) $_GET["id_kategorii"];
  87. if ($id >= 1 && $id <= 43) {
  88. include('kategorie.php');
  89. }
  90. if ($id >= 44 && $id <= 69) {
  91. include('kategorie-wiersze.php');
  92. }
  93. if ($id >= 70 && $id <= 90) {
  94. include('kategorie-cytaty.php');
  95. }
  96. if ($id >= 91 && $id <= 104) {
  97. include('kategorie-sms.php');
  98. }
  99. if ($id >= 105 && $id <= 142) {
  100. include('kategorie-opisy.php');
  101. }
  102.  
  103. include('prawa-strona.php');
  104. include('stopka.php');
  105. ?>
  106.  
  107.  
  108.  

tabela:
  1. CREATE TABLE wszystko (
  2. `id` INT(11) NOT NULL AUTO_INCREMENT,
  3. `id_kategorii` INT(11) NOT NULL,
  4. `tytul` VARCHAR(50) NOT NULL,
  5. `tresc` TEXT NOT NULL,
  6. `uzytkownik` VARCHAR(30) NOT NULL,
  7. `data` TEXT NOT NULL,
  8. PRIMARY KEY (`id`)
  9. );


A tu jest screnn : http://zapodaj.net/4f27d48a8309.png.html

a teraz po zobaczeniu wszystkiego lepiej wiadomo o co chodzi i jeszcze wytłumaczę
linia 36
  1. $zapytanie = 'SELECT * FROM wszystko WHERE id_kategorii='.$id_kate.' ORDER BY id DESC LIMIT '.$start.', '.$perPage.'';


Ma spełnić warunek i pobrać ilość id ale jeśli warunek jest okey aaa choć warunek jest to na pierwszej stronie jest wszystko dobrze itd.
ale jak już wejdę na inną kategorie to już nie jest dobrze bo wyświetla mi paginacje wszystkich rekordów i nie wiem jak to zrobić smile.gif
Ma ktoś na to jakąś rade?
CuteOne
"paginacje wszystkich rekordów"?questionmark.gif chodzi ci o to, że wyświetla Ci strony od 1 do 75 w paginacji?
plej
Nie nie rozumieszz smile.gif
Mam podstrony Zyczniea, wiersze itd...
I mam dodane do zyczeń kolo 1200 zyczeń niby i jak wejde na wiersze to fakt nie widac tych rzyczeń ale paginacja jest rozumiesz?

czyli że na każdej stronie robi mi paginacje z wszystkich rekordów a powinno z np. id_kategorii = 2

Sprawdzałem w bazie danych sobie zapytania i "SELECT * FROM wszystko WHERE id_kategorii = 2" i wyświetla prawidłowe mi rekordy smile.gif ale żeby zrobic paginacje musi zliczyć rekordy i jak jest w zapytaniu w lini 36 cała reszta coś jest złe:)

-------------------------------------------------------------------------


  1. $id_kate = $_GET["id_kategorii"];
  2. $zapytanie = 'SELECT * FROM wszystko WHERE id_kategorii='.$id_kate.' ORDER BY id DESC LIMIT '.$start.', '.$perPage.'';
  3. $idzapytania = mysql_query($zapytanie)or die(mysql_error());
  4. $max = "SELECT COUNT(*) as max FROM wszystko WHERE id_kategorii=$id_kate";


Jakoś działa narazie:) żeby tak dalej heh

Dzięki że próbowałeś mi pomoc smile.gif

----------------------------------------------------------------------------------------

mam jeszcze pytanie bo mam kod:

  1. $zapytanie = 'SELECT * FROM wszystko WHERE id_kategorii IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43) ORDER BY id DESC LIMIT '.$start.', '.$perPage.'';
  2. $idzapytania = mysql_query($zapytanie);
  3. $max = "SELECT COUNT(*) as max FROM wszystko";

Który nie działa:)

a ten działa:
  1. $zapytanie = 'SELECT * FROM wszystko WHERE id_kategorii='.$id_kate.' ORDER BY id DESC LIMIT '.$start.', '.$perPage.'';
  2. $idzapytania = mysql_query($zapytanie)or die(mysql_error());
  3. $max = "SELECT COUNT(*) as max FROM wszystko WHERE id_kategorii=$id_kate";



I teraz jak przerobić górny kod tzn. pierwszy że wszystkie te liczby bo takie pisanie jest nudne były w jednej zmiennej?
ten drugi przyjmuję getem id a 1 muszę wpisać bo to jest jak strona główna i ma wyświetlać najnowsze rekordy z wszystkich tych id_kategorii:)
nospor
$zapytanie = 'SELECT * FROM wszystko WHERE id_kategorii='.$id_kate.' ORDER BY id DESC LIMIT '.$start.', '.$perPage.'';
$max = "SELECT COUNT(*) as max FROM wszystko";
Rekordy pobierasz z kategorii ale liczbę rekordów liczysz ze wszystkich rekordów. No nie widzisz tu bezsensu? Skoro masz operować na danej kategorii to i liczbę rekordów masz pobierać dla danej kategorii

Cytat
I teraz jak przerobić górny kod tzn. pierwszy że wszystkie te liczby bo takie pisanie jest nudne były w jednej zmiennej?
ten drugi przyjmuję getem id a 1 muszę wpisać bo to jest jak strona główna i ma wyświetlać najnowsze rekordy z wszystkich tych id_kategorii:)

Czy te wszystkie kategorie co tu wypisałeś to wszystkie jakie masz w bazie? Jeśli tak to po grzyba w ogóle robisz z tego warunek? Po prostu nie umieszczaj tego w warunku i po sprawie
plej
No to nie zrozumiałeśsmile.gif Nie, id_kategorii jest kolo 150
i ma pobierać z danych id_kategori właśnie z tych co tam jest ich rekordy rozumiesz?
a pobiera na głównej stronie wierszy itd. wszystkie:) a jeśli operuje na jednej kategorii to działa:) ale jak już na paru to nie:/ i tak właśnie próbuje to zrobić ale mi nie wychodzi
nospor
$zapytanie = 'SELECT * FROM wszystko WHERE id_kategorii IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43) ORDER BY id DESC LIMIT '.$start.', '.$perPage.'';
$max = "SELECT COUNT(*) as max FROM wszystko";

No ale znowu masz to co ci napisałem wcześniej: rekordy pobierasz z wybranych kategorii ale liczysz już z całej tabeli... no bez sensu.
plej
Może to IN da się zamienić na inne? bo nieza bardzo znam jeszcze bazy danych:> jak coś to zrobie z każdej strony haha.gif nowości haha.gif
a dopiero jak wybierze kategorie mu wybierze haha.gif ale wolałbym żeby pobierało dane tylko z podanych kategorii a wgl to chodzi o drugi warunek tan
$max = "SELECT COUNT(*) as max FROM wszystko";

bo pobiera dobre dane ale robi paginacje z wszystkich:)
a jak dodam górny warunek to nie pokazuje juz wtedy paginacji tylko liczbe '1' dziwne:D


----------- ciąg dalszy haha.gif --------------------------




Dobra dało rade jakośbiggrin.gif działa:D!
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.