Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Problem ze stronnicowaniem
Forum PHP.pl > Forum > Przedszkole
kondziu9516
Witam.
Namęczyłem się troche z tym kodem.
Próbowałem kilka razy i nic, bez efektów.
Chcę zrobić stronnicowanie rekordów wyświetlanych z bazy danych.
Aby na jednej stronie było max 10 rekordów.

Jak to zrobić?
Pomoże ktoś?
Wdzięczny będę jak ktoś by to mi przerobił, bo już kilka godzin się mecze i bez efektu ;/

oto kod:

  1. <?
  2.  
  3. $wynik3 = mysql_query("SELECT * FROM $nick ORDER BY id DESC") or die('Błąd zapytania');
  4.  
  5. <table width="800" border="0">
  6.  
  7.  
  8. <td width="150"><center><b><font size="2" color="black">Data operacji</font></center></td>
  9. <td width="350"><center><b><font size="2" color="black">Rodzaj operacji</font></center></td>
  10. <td width="80"><center><b><font size="1" color="black">Kwota operacji</font></center></td>
  11. <td width="80"><center><b><font size="1" color="black">Stan konta po operacji</font></center></td>
  12. <td width="50"><center><b><font size="1" color="black">Waluta</font></center></td>
  13. <tr>
  14. <td><hr /></td>
  15. <td><hr /></td>
  16. <td><hr /></td>
  17. <td><hr /></td>
  18. <td><hr /></td>
  19. </tr>
  20. ';
  21. while( $r3 = mysql_fetch_assoc( $wynik3 )) {
  22.  
  23. <tr>
  24.  
  25.  
  26. <td><center>'.$r3['dataoperacji'].' </center></td>
  27. <td><center>';if ($r3['kwotaoperacji'] < 0){echo'<b>Wychodząca: </b>'; }
  28. if ($r3['kwotaoperacji'] > 0){echo'<b>Przychodząca: </b>'; }
  29. if ($r3['kwotaoperacji'] == '-'){echo'<b>Inna: </b>'; } echo''.$r3['operacja'].'</center></td>
  30. <td><center><font size="2" color="green">'.$r3['kwotaoperacji'].'</font></center></td>
  31. <td><center><font size="2" color="green">'.$r3['saldo'].'</font></center></td>
  32. <td><center><font size="2" color="black"> PLN</font></center></td>
  33.  
  34. </tr>';
  35. }
  36.  
  37. </table>
  38.  
  39. ';
  40.  
  41.  
  42.  
  43.  
  44. ?>


Kod działa poprawnie i wyświetla rekordy okej, ale jak to stronnicować?
Za pomoc oczywiście odwdziecze sie.
PanGuzol
Musisz dodać do linku parametr z numerem strony np. page
a potem w zapytaniu podać odpowiednie wartości dla LIMIT
kondziu9516
ale to muszę tworzyć kilka podstron?
Czy można to zrobić jakoś na jednej?

Dałbyś może rade mi to przerobić?
Będę bardzo wdzięczny.
PanGuzol
Wiesz jak się przekazuje parametry metodą GET oraz jak się ogranicza ilość zwracanych rekordów z bazy danych klauzurą LIMIT?
kondziu9516
no mniej więcej wiem, ale bardzo bym prosił o pomoc !
Już nie mam siły do tego... Kilka godzin próbowałem i nawet już gotowymi rozwiązaniami ;/
kondziu9516
Cholera, nie mogę sie w tym połapać.

Przyznaję, że jestem dopiero początkujący i średnio zielony ohno-smiley.gif
Ruch Radzionków
tu masz moje rozwiązanie. działa. jak jesteś kumaty to to zrozumiesz jest proste
http://forum.php.pl/index.php?showtopic=197151
wNogachSpisz
Cytat(kondziu9516 @ 19.08.2012, 02:08:30 ) *
Cholera, nie mogę sie w tym połapać.


Czego nie rozumiesz?
Trudno będzie znaleźć lepszą biblitekę do paginacji.
kondziu9516
No dzięki, całość jakby działa, ale nie co_jest.gif

Jak są buttony na dole, aby przejść do next strony to nie działa.
Coś nie tak? jak to rozwiązać?

oto mój kod:

  1. <?
  2.  
  3. define('MAXPAGE', 5);
  4. $pok = mysql_query("SELECT COUNT(*) FROM $nick ORDER BY id");
  5. list($max) = mysql_fetch_row($pok);
  6. $total = ceil($max / MAXPAGE);
  7. $page = intval(@$_GET["page"]);
  8. if(0 == $page)
  9. {
  10. $page = 1;
  11. }
  12. $start = MAXPAGE * ($page - 1);
  13. $full = MAXPAGE;
  14. $obej = mysql_query("SELECT * FROM $nick ORDER BY id limit $start, $full");
  15. <table width="800" border="0">
  16.  
  17.  
  18. <td width="150"><center><b><font size="2" color="black">Data operacji</font></center></td>
  19. <td width="350"><center><b><font size="2" color="black">Rodzaj operacji</font></center></td>
  20. <td width="80"><center><b><font size="1" color="black">Kwota operacji</font></center></td>
  21. <td width="80"><center><b><font size="1" color="black">Stan konta po operacji</font></center></td>
  22. <td width="50"><center><b><font size="1" color="black">Waluta</font></center></td>
  23. <tr>
  24. <td><hr /></td>
  25. <td><hr /></td>
  26. <td><hr /></td>
  27. <td><hr /></td>
  28. <td><hr /></td>
  29. </tr>
  30. ';
  31. while(list($id, $operacja, $dataoperacji, $saldo, $kwotaoperacji, $ip) = mysql_fetch_row($obej))
  32. {
  33.  
  34. <tr>
  35.  
  36.  
  37. <td><center>'.$dataoperacji.' </center></td>
  38. <td><center>';if ($kwotaoperacji < 0){echo'<b>Wychodząca: </b>'; }
  39. if ($kwotaoperacji > 0){echo'<b>Przychodząca: </b>'; }
  40. if ($kwotaoperacji == '-'){echo'<b>Inna: </b>'; } echo''.$operacja.'</center></td>
  41. <td><center><font size="2" color="green">'.$kwotaoperacji.'</font></center></td>
  42. <td><center><font size="2" color="green">'.$saldo.'</font></center></td>
  43. <td><center><font size="2" color="black"> PLN</font></center></td>
  44.  
  45. </tr>';
  46. }
  47.  
  48. </table>
  49.  
  50. ';
  51. if($_GET[page] == '')
  52. {
  53. $strona = '1';
  54. }
  55. else
  56. {
  57. $strona = $_GET[page];
  58. }
  59. $poprzedniastrona = $_GET[page] - 1;
  60. if($_GET[page] == '')
  61. {
  62. $nastepnastrona = '2';
  63. }
  64. else
  65. {
  66. $nastepnastrona = $_GET[page] + 1;
  67. }
  68. echo'</table>';
  69. if($total == '0')
  70. {
  71.  
  72. }
  73. else
  74. {
  75. echo'<table align="center">
  76. <tr>
  77. <td>';
  78. if(($_GET[page] == '1') || ($_GET[page] == ''))
  79. {
  80. }
  81. else
  82. {
  83. echo'<a href="index.php?s=historia_operacji=page=1"><input type="submit" value="'.$lang[pierwszastronakatalog].'"></a><a href="index.php?s=historia_operacji=page='.$poprzedniastrona.'"><input type="submit" value="'.$lang[poprzedniastronakatalog].'"></a>';
  84. }
  85. echo $lang[stronakatalog]; echo $strona; echo $lang[zkatalog]; echo' z '.$total.'<br>';
  86. if($strona == $total)
  87. {
  88.  
  89. }
  90. else
  91. {
  92. echo'<a href="index.php?s=historia_operacji=page='.$nastepnastrona.'"><input type="submit" value="'.$lang[nastepnastronakatalog].'"></a><a href="=index.php?s=historia_operacji=page='.$total.'"><input type="submit" value="'.$lang[ostatniastronakatalog].'"></a>';
  93. }
  94. echo'</td>
  95. </tr>
  96. </table>';
  97. }
  98.  
  99. ?>


_______________________________________
A może muszę jakoś zdefiniować to page?
Bo w pliku index mam tak:

  1. <?php
  2. switch($_GET['s'])
  3. {
  4. case 'glowna' :
  5. require("strony/glowna.php");
  6. break;
  7.  
  8. case 'logowanie' :
  9. require("strony/logowanie.php");
  10. break;
  11.  
  12. case 'logowanie2' :
  13. require("strony/logowanie.php");
  14. break;
  15.  
  16. case 'wyloguj' :
  17. require("strony/wyloguj.php");
  18. break;
  19.  
  20. case 'zalogowany' :
  21. require("strony/zalogowany.php");
  22. break;
  23.  
  24. case 'kontakt' :
  25. require("strony/kontakt.php");
  26. break;
  27.  
  28. case 'zmienhaslo' :
  29. require("strony/zmienhaslo.php");
  30. break;
  31.  
  32.  
  33. case 'historia_operacji' :
  34. require("strony/historia.php");
  35. break;
  36.  
  37.  
  38.  
  39. default:
  40. require("strony/glowna.php");
  41. break;
  42. }
  43.  
  44.  
  45. ?>
wNogachSpisz
Kiepsko to wygląda.
Czego nie rozumiesz w tamtej biblitece? Chętnie pomogę Ci ją odpalić.
!*!
Cytat(wNogachSpisz @ 19.08.2012, 10:23:23 ) *
Trudno będzie znaleźć lepszą biblitekę do paginacji.


W tym wypadku trudno o znalezienie gorszej...

kondziu9516 - tu masz prostą paginacje http://www.phpro.org/tutorials/Pagination-...HP-and-PDO.html przejrzyj i zastosuj pod siebie.
wNogachSpisz
Cytat(!*! @ 19.08.2012, 14:00:56 ) *
W tym wypadku trudno o znalezienie gorszej...

Może jakieś uzasadnienie?
kondziu9516
A znasz się na tym dobrze?
!*!
Cytat(wNogachSpisz @ 19.08.2012, 14:11:37 ) *
Może jakieś uzasadnienie?

Kombajn, aż dziw że nie zrobili w niej sprawdzenia czy admin pił rano kawę. Klasa którą podałeś jest zwyczajnie przeładowana i od kiedy to klasa paginacji ma tworzyć widok...


kondziu9516 - spojrzałeś na link który Ci podałem? Masz tam podany gotowiec (całkiem na dole), wystarczy że zamienisz ichniejsze zapytania SQL na swoje i działa.
abort
Ojejku, czepiacie się tego CI.

Widziałem już opinie (nawet tu na forum), że cały CI to zlepek kodu, który się do obiektowości ma nijak, ale tak jak dla przeciętnego użytkownika ważne jest to, by auto jeździło, tak dla mnie (hobbysty programowania) ważne jest to, że za pomocą tego jestem w stanie relatywnie szybko napisać kod, który działa smile.gif

Dla miłośników i pasjonatów motoryzacji będą się liczyły takie marki jak Ferrari, Maserati, Bugatti czy Bentley. Nie zmieni to jednak faktu, że zwykli ludzie kupią Skodę czy Fiata. Informatycy polecą Zenda albo Symfony.

Żeby nie było: w obu przypadkach mamy barierę niemal nie do przeskoczenia: informatycy muszą mieć wiedzę, miłośnicy samochodów muszą mieć kasę. W obu przypadków na zdobycie środków potrzeba CZASU. Poza tym, nie każdy musi być informatykiem ani miłośnikiem motoryzacji.
wNogachSpisz
CI jest proste i w rezultacie szybkie. Pokaż mi coś równie szybkiego gdzie zasady obiektowości są przestrzegane z większą pieczolowitością, to chętnie skorzystam.

Czym konkretnie jest przeładowane CI->pagination? Co to znaczy że tworzy widok?
Wg. mnie ilość opcji jest idealna. Żeby mieć zdanie trzeba choć raz spróbować, nei wystarczy rzucić okiem, zobaczyć kilkanaście atrybutó w obiekcie i zhejcić, że za dużo ustawień.
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.