Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]paginacja jako funkcja
trucksweb
post 14.12.2007, 23:04:42
Post #1





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


napisalem sobie prosty skrypt paginacji danych, wszystko dziala jak kod jest w pliku w ktorym ma sie stronicowac tresc. jako ze planuje wiecej takich stron, chcialbym zrobic kod, ktory bedzie elastyczny- tzn. po deklaracji zmienniej z nazwa tabeli bedzie stronicowal inne strony, wiec przygotowalem sobie cos takiego- nazwa tabeli jest na stale, ale i tak juz cos nie dziala:

plik funkcje.php
  1. <?php
  2. //PAGINACJA WYNIKOW
  3. function paginacja() {
  4. if(isset($_GET['np'])) {
  5. $num_pages = $_GET['np'];
  6. }else {
  7. $query = "SELECT COUNT(*) FROM faktury ORDER BY id DESC";
  8. $result = mysql_query($query);
  9. $row = mysql_fetch_array($result, MYSQL_NUM);
  10. $num_records = $row[0];
  11.  
  12. if($num_records > $display) {
  13. $num_pages = ceil ($num_records/$display);
  14. }else {
  15. $num_pages =1;
  16. }
  17. }
  18.  
  19. if(isset($_GET['s'])) {
  20. $start = $_GET['s'];
  21. }else {
  22. $start = 0;
  23. }
  24.  
  25. }//koniec funkcji paginacja
  26.  
  27. function pokaz_paginacje() {
  28.  
  29. if($num_pages > 1) {
  30. $current_page = ($start/$display) + 1;
  31. if($current_page !=1) {
  32. echo ' <a href="faktury.php?s='.($start - $display).'&np='.$num_pages.'">Poprzednia </a> ';
  33. }
  34.  
  35. for($i=1; $i <= $num_pages; $i++) {
  36. if($i !=$current_page) {
  37. echo ' <a href="faktury.php?s='.(($display * ($i - 1))).'&np='.$num_pages.'"> '. $i . ' </a> ';
  38. }else{
  39. echo $i. ' ';
  40. }
  41. }
  42. if($current_page != $num_pages) {
  43. echo ' <a href="faktury.php?s='.($start + $display).'$np='.$num_pages.'">Nastepna</a> ';
  44.  
  45. }
  46. }
  47. }
  48. ?>



strona.php:
  1. <?php
  2. ..
  3. $display = 10;
  4. $start =1;
  5. paginacja();
  6.  
  7. tutaj select z: LIMIT $start, $display";
  8.  
  9. ..
  10. tutaj tworzenie tabeli i listowanie produktow
  11.  
  12. ..
  13. pokaz_paginacje();
  14.  
  15. ?>


niesttey taki zapis nie dziala


--------------------
Rozmawia dwóch dyrektorów:
- Jaki jest twój ideał sekretarki?
- 20-letnia dziewczyna z 30-letnim doświadczeniem.
Go to the top of the page
+Quote Post
marcio
post 14.12.2007, 23:13:54
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


parametry przetrzymuj w funckji


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
trucksweb
post 14.12.2007, 23:24:24
Post #3





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


no tak, tlyko ze i to nie bardzo dziala bo jak przekaze ze wyswietlam str. 40 ?

pokaz_paginacje($dipslay,$start,$num_pages) ?


--------------------
Rozmawia dwóch dyrektorów:
- Jaki jest twój ideał sekretarki?
- 20-letnia dziewczyna z 30-letnim doświadczeniem.
Go to the top of the page
+Quote Post
marcio
post 14.12.2007, 23:32:16
Post #4





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


ja to tak zrobilem i dziala
  1. <?php
  2. public function Pokaz_ksiege($liczba=50) {
  3. if($db = mysql_connect($this->pasy['host'], $this->pasy['login'], $this->pasy['haslo'])) {
  4. mysql_select_db($this->pasy['baza']);
  5.  
  6. $query = ("select * from ksiega_gosci");
  7.  $wynik = mysql_query($query, $db) or die(mysql_error());
  8. $num = mysql_num_rows($wynik);
  9. $ile = ceil($num/50);
  10.  $strona = $_GET['strona'];
  11. $zap = ("select * from ksiega_gosci order by data desc limit ".$strona*$liczba.",".$liczba);
  12.  $ris = mysql_query($zap, $db) or die(mysql_error());
  13.  
  14. while($tab = mysql_fetch_assoc($ris)) {
  15.  
  16. echo('<table border="1" width="100%" bgcolor="#4E4E68" align="center"><tr><td width="50%">Dodal: '.$tab['nick'].'</td><td width="50%">Dnia:'.$tab['data'].'</td></tr>
  17. <tr><td>'.$tab['message'].'</td></tr></table></form>');
  18. }
  19. }
  20.  
  21. else {
  22. echo('<script>alert("Nie ma wpisow");</script>');
  23. }
  24.  
  25. if(is_numeric($strona) && !empty($strona) && $strona > 0) {
  26.  
  27. echo('<center><a href="?strona='.($strona-1).'">Poprzednia</a>|');
  28.  }
  29. if(is_numeric($strona) && !empty($strona) && $strona < $ile) {
  30.  
  31. echo('<a href="?strona='.($strona+1).'">Nastepna</a></center>');
  32.  }
  33. }
  34. ?>


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
trucksweb
post 14.12.2007, 23:41:56
Post #5





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


no wlasnie, Ty masz to w jednym pliku i nie ma problemu, ja paginecje rozbilem na 2fukcje no i na 2 pliki :/


//edit

hehe, zrobilem literowke tongue.gif
wszystko dziala sciana.gif

//edit 2
a jednak nie tongue.gif
problem dalej aktualny dry.gif

Ten post edytował trucksweb 14.12.2007, 23:49:30


--------------------
Rozmawia dwóch dyrektorów:
- Jaki jest twój ideał sekretarki?
- 20-letnia dziewczyna z 30-letnim doświadczeniem.
Go to the top of the page
+Quote Post
marcio
post 15.12.2007, 00:27:26
Post #6





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


Nie rozumiem po co to rozbija na 2 funckje jedna pobiera wiadomosci odpowiedni je dzieli a druga wyswietla linki troche bez sensu


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
trucksweb
post 15.12.2007, 09:56:10
Post #7





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


ok, zrobilem to jako jedna funkcje, pokazuja mi sie linki do stronicowania, niestty nie przyjmuja one oczekiwanych wartosci, co wazniejsze nie powoduja stronicowania strony po kliknieciu sciana.gif

  1. <?php
  2.  
  3. $display = 10;$start =1;
  4.  
  5.  
  6. $zapytanie = "SELECT id, seria FROM faktury ORDER by id DESC LIMIT $start, $display";
  7. $wynik = mysql_query($zapytanie);
  8. ...............
  9. .......wyswietlam zwrocone pozycje
  10. .....
  11.  
  12. wywoluje paginacje
  13.  
  14. paginacja($num_pages);
  15.  
  16.  
  17. ?>


w pliku funkcje php

  1. <?php
  2. function paginacja($num_pages) {
  3. $start=1;$display=10;
  4. if(isset($_GET['np'])) {
  5. $num_pages = $_GET['np'];
  6. }else {
  7. $query = "SELECT COUNT(*) FROM faktury ORDER BY id DESC";
  8. $result = mysql_query($query);
  9. $row = mysql_fetch_array($result, MYSQL_NUM);
  10. $num_records = $row[0];
  11.  
  12. if($num_records > $display) {
  13. $num_pages = ceil ($num_records/$display);
  14. }else {
  15. $num_pages =1;
  16. }
  17. }
  18.  
  19. if(isset($_GET['s'])) {
  20. $start = $_GET['s'];
  21. }else {
  22. $start = 0;
  23. }
  24.  
  25.  
  26.  
  27. if($num_pages > 1) {
  28. $current_page = ($start/$display) + 1;
  29. if($current_page !=1) {
  30. echo ' <a href="faktury.php?s='.($start - $display).'&np='.$num_pages.'">Poprzednia </a> ';
  31. }
  32.  
  33. for($i=1; $i <= $num_pages; $i++) {
  34. if($i !=$current_page) {
  35. echo ' <a href="faktury.php?s='.(($display * ($i - 1))).'&np='.$num_pages.'"> '. $i . ' </a> ';
  36. }else{
  37. echo $i. ' ';
  38. }
  39. }
  40. if($current_page != $num_pages) {
  41. echo ' <a href="faktury.php?s='.($start + $display).'&np='.$num_pages.'">Nastepna</a> ';
  42.  
  43. }
  44. }
  45. }
  46. ?>


--------------------
Rozmawia dwóch dyrektorów:
- Jaki jest twój ideał sekretarki?
- 20-letnia dziewczyna z 30-letnim doświadczeniem.
Go to the top of the page
+Quote Post
phpion
post 15.12.2007, 10:05:28
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Co zauważyłem tak na pierwszy rzut oka:
  1. <?php
  2. function paginacja($num_pages) { // przekazujesz parametr $num_pages
  3. $start=1;$display=10; // to również powinny być parametry
  4. if(isset($_GET['np'])) {
  5. $num_pages = $_GET['np']; // dlaczego nadpisujesz $num_pages?
  6. }else {
  7. $query = "SELECT COUNT(*) FROM faktury ORDER BY id DESC";
  8. $result = mysql_query($query);
  9. $row = mysql_fetch_array($result, MYSQL_NUM);
  10. $num_records = $row[0];
  11.  
  12. if($num_records > $display) {
  13. $num_pages = ceil ($num_records/$display); // i znowu modyfikujesz $num_pages
  14. }else {
  15. $num_pages =1; // j.w.
  16. }
  17. }
  18.  
  19. if(isset($_GET['s'])) {
  20. $start = $_GET['s'];
  21. }else {
  22. $start = 0;
  23. }
  24.  
  25.  
  26.  
  27. if($num_pages > 1) {
  28. $current_page = ($start/$display) + 1;
  29. if($current_page !=1) {
  30. echo ' <a href="faktury.php?s='.($start - $display).'&np='.$num_pages.'">Poprzednia </a> ';
  31. }
  32.  
  33. for($i=1; $i <= $num_pages; $i++) {
  34. if($i !=$current_page) {
  35. echo ' <a href="faktury.php?s='.(($display * ($i - 1))).'&np='.$num_pages.'"> '. $i . ' </a> ';
  36. }else{
  37. echo $i. ' ';
  38. }
  39. }
  40. if($current_page != $num_pages) {
  41. echo ' <a href="faktury.php?s='.($start + $display).'&np='.$num_pages.'">Nastepna</a> ';
  42.  
  43. }
  44. }
  45. }
  46. ?>


Moim zdaniem do funkcji powinienej przekazywać takie parametry:
paginacja($numer_aktualnej_strony, liczba_wszystkich_stron, $liczba_rekordow_na_stronie)
Tyle w zupełności powinno wystarczyć. Kombinuj.
Go to the top of the page
+Quote Post
trucksweb
post 15.12.2007, 10:19:05
Post #9





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


ok, zmienilem postac funkcji:
  1. <?php
  2.  
  3. function paginacja($num_pages,$start,$display,$current_page) {
  4.  
  5.  
  6. $query = "SELECT COUNT(*) FROM faktury ORDER BY id DESC";
  7. $result = mysql_query($query);
  8. $row = mysql_fetch_array($result, MYSQL_NUM);
  9. $num_records = $row[0];
  10.  
  11. if($num_records > $display) {
  12. $num_pages = ceil ($num_records/$display);
  13. }else {
  14. $num_pages =1;
  15. }
  16.  
  17.  
  18. if(isset($_GET['s'])) {
  19. $start = $_GET['s'];
  20. }else {
  21. $start = 0;
  22. }
  23.  
  24.  
  25.  
  26. if($num_pages > 1) {
  27. $current_page = ($start/$display) + 1;
  28. if($current_page !=1) {
  29. echo ' <a href="faktury.php?s='.($start - $display).'&np='.$num_pages.'">Poprzednia </a> ';
  30. }
  31.  
  32. for($i=1; $i <= $num_pages; $i++) {
  33. if($i !=$current_page) {
  34. echo ' <a href="faktury.php?s='.(($display * ($i - 1))).'&np='.$num_pages.'"> '. $i . ' </a> ';
  35. }else{
  36. echo $i. ' ';
  37. }
  38. }
  39. if($current_page != $num_pages) {
  40. echo ' <a href="faktury.php?s='.($start + $display).'&np='.$num_pages.'">Nastepna</a> ';
  41.  
  42. }
  43. }
  44. }
  45.  
  46. ?>


pojawia sie paginacja, linki maja ladne parametry, chyba takie jakie chcialem miec: ?s=20&np=4

jednak po kliknieciu linku dalej nie zmieniaja sie pozycje w tabelce sciana.gif


--------------------
Rozmawia dwóch dyrektorów:
- Jaki jest twój ideał sekretarki?
- 20-letnia dziewczyna z 30-letnim doświadczeniem.
Go to the top of the page
+Quote Post
Cysiaczek
post 15.12.2007, 10:25:20
Post #10





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Jak się maja zmieniać? Pokaż kod, który odpowiada za przyjęcie żądania i jego obsługę.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
trucksweb
post 15.12.2007, 10:34:12
Post #11





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


przeciez jest napisany w postach wyzej !
  1. <?php
  2. $display = 10;$start =1;
  3.  
  4.  
  5. $zapytanie = "SELECT id, seria FROM faktury ORDER by id DESC LIMIT $start, $display";
  6. $wynik = mysql_query($zapytanie);
  7.  
  8. //wykonaj zapytanie
  9. $num = mysql_num_rows($wynik);
  10.  
  11. echo'<table>';
  12. while($row = mysql_fetch_array($wynik, MYSQL_ASSOC)) {
  13.  
  14. echo'<tr><td>'. $row['seria'] .'</td></tr>';
  15.  
  16.  
  17. }
  18. echo'</table>';
  19.  
  20. paginacja($num_pages,$start,$display,$current_page);
  21. //tu pobieram funkcje paginacja - z pliku funkcje.php
  22.  
  23. ?php
  24. ?>


--------------------
Rozmawia dwóch dyrektorów:
- Jaki jest twój ideał sekretarki?
- 20-letnia dziewczyna z 30-letnim doświadczeniem.
Go to the top of the page
+Quote Post
Cysiaczek
post 15.12.2007, 10:40:30
Post #12





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Widziałem.

  1. <?php
  2. $display = 10;$start =1;
  3. ?>


Przecież zawsze da ten sam wynik, prawda? Ja się pytam, gdzie odbierasz wartości przekazane przez adres URL.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
trucksweb
post 15.12.2007, 10:49:39
Post #13





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


no chyba w funkcji paginacja(...)

  1. <?php
  2. if($num_records > $display) {
  3. $num_pages = ceil ($num_records/$display);
  4. }else {
  5. $num_pages =1;
  6. }
  7.  
  8.  
  9. if(isset($_GET['s'])) {
  10. $start = $_GET['s'];
  11. }else {
  12. $start = 0;
  13. }
  14. ?>


--------------------
Rozmawia dwóch dyrektorów:
- Jaki jest twój ideał sekretarki?
- 20-letnia dziewczyna z 30-letnim doświadczeniem.
Go to the top of the page
+Quote Post
Cysiaczek
post 15.12.2007, 11:14:41
Post #14





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Ej no wiesz co...? Weź przeanalizuj ten kod i zobacz, co robisz. Wywołujesz zapytanie, które ma podlegać stronicowaniu ze stałymi parametrami w linijce numer 5, a paginację sprawdzasz w linijce numer 20. Do tego wszystkiego, nawet jak to poprawisz, to i tak nie zadziała, bo zmienne w funkcji paginacja() mają zasięg lokalny.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
marcio
post 15.12.2007, 11:20:19
Post #15





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


jak dla mnie zapytanie powinno tak wygladac
  1. <?php
  2. $zapytanie = "SELECT id, seria FROM faktury ORDER by id DESC LIMIT ".$np*$start.", ".$display";
  3. ?>



Cyciaszek ma racje funckji nie moze includowac i potem wywolywac tylko dac ja do skryptu w ktorym ja potrzebujes, a tak w ogole to zmienna $np ma przyjmowac nr strony tak?Jesli, tak to zapytanie masz powyzej


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 3.07.2025 - 10:06