Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Paginacja
plej
post
Post #1





Grupa: Zarejestrowani
Postów: 264
Pomógł: 11
Dołączył: 9.05.2011
Skąd: Gdańsk

Ostrzeżenie: (10%)
X----


Witam (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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ć (IMG:style_emoticons/default/smile.gif)
Ma ktoś na to jakąś rade?
Go to the top of the page
+Quote Post
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


"paginacje wszystkich rekordów"?(IMG:style_emoticons/default/questionmark.gif) chodzi ci o to, że wyświetla Ci strony od 1 do 75 w paginacji?
Go to the top of the page
+Quote Post
plej
post
Post #3





Grupa: Zarejestrowani
Postów: 264
Pomógł: 11
Dołączył: 9.05.2011
Skąd: Gdańsk

Ostrzeżenie: (10%)
X----


Nie nie rozumieszz (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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:)

Ten post edytował plej 25.05.2011, 06:33:37
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$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
Go to the top of the page
+Quote Post
plej
post
Post #5





Grupa: Zarejestrowani
Postów: 264
Pomógł: 11
Dołączył: 9.05.2011
Skąd: Gdańsk

Ostrzeżenie: (10%)
X----


No to nie zrozumiałeś(IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$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.
Go to the top of the page
+Quote Post
plej
post
Post #7





Grupa: Zarejestrowani
Postów: 264
Pomógł: 11
Dołączył: 9.05.2011
Skąd: Gdańsk

Ostrzeżenie: (10%)
X----


Może to IN da się zamienić na inne? bo nieza bardzo znam jeszcze bazy danych:> jak coś to zrobie z każdej strony (IMG:style_emoticons/default/haha.gif) nowości (IMG:style_emoticons/default/haha.gif)
a dopiero jak wybierze kategorie mu wybierze (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/haha.gif) --------------------------




Dobra dało rade jakoś(IMG:style_emoticons/default/biggrin.gif) działa:D!

Ten post edytował plej 25.05.2011, 06:59:18
Go to the top of the page
+Quote Post

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: 23.08.2025 - 05:39