Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php i mysql stronnicowanie :P
Forum PHP.pl > Forum > PHP
michas999
witam!
mam następujący kod:
  1. <?php
  2. /******************************************************
  3. * connection.php
  4. * konfiguracja połączenia z bazą danych
  5. ******************************************************/
  6.  
  7. function connection() {
  8. // serwer
  9. $mysql_server = "localhost";
  10. // admin
  11. $mysql_admin = "212";
  12. // hasło
  13. $mysql_pass = "123";
  14. // nazwa baza
  15. $mysql_db = "222";
  16. // nawiązujemy połączenie z serwerem MySQL
  17. @mysql_connect($mysql_server, $mysql_admin, $mysql_pass)
  18. or die('Brak połączenia z serwerem MySQL.');
  19. // łączymy się z bazą danych
  20. @mysql_select_db($mysql_db)
  21. or die('Błąd wyboru bazy danych.');
  22. } 
  23. // wywołujemy funkcję connection()
  24. connection(); 
  25.  
  26.  
  27.  
  28. /* zapytanie do konkretnej tabeli */
  29. $wynik = mysql_query('select * from `torrents`');
  30. $hits = mysql_num_rows($wynik);
  31.  
  32. $wynik = mysql_query('select * from `torrents`');
  33.  
  34. /*
  35. wyświetlamy wyniki, sprawdzamy,
  36. czy zapytanie zwróciło wartość większą od 0
  37. */
  38. if(mysql_num_rows($wynik) > 0) {
  39. /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
  40. echo "<table cellpadding="2" border=1>";
  41. while($r = mysql_fetch_assoc($wynik)) {
  42. echo "<tr>";
  43. echo "<td> nazwa: ".$r['name']."</td>";
  44. echo "</tr>";
  45. }
  46. echo "</table>";
  47. } 
  48.  
  49.  
  50.  
  51.  
  52.  
  53. ?>

jak zrobic aby na stronie było 10 wyników z bazy i zrobić do tego podstrony, chodzi mi o to żeby na dole strony pojawialo sie: 1 2 3 4 5 itd (automatycznie generowana ilosc stron) i ze jak sie kliknie w 2 to zeby przenosilo na 2 strone i pokazywalo wyniki od 11 do 20 wlacznie itd itd winksmiley.jpg

pozdrawiam!
Siner
Poszukaj na forum pod hasłem "stronicowanie" wątek wałkowany wiele razy na forum.
michas999
no niestety, nie moge sobie z tym dac rady, jestem poczatkujacy i nie zabardzo to rozumiem, moze mi ktos poda gotowy kod z komentarzami?
strife
Cytat(michas999 @ 13.05.2007, 17:49:09 ) *
no niestety, nie moge sobie z tym dac rady, jestem poczatkujacy i nie zabardzo to rozumiem, moze mi ktos poda gotowy kod z komentarzami?


Chyba śnisz, że ktoś Ci ten kod poprawi winksmiley.jpg Pokaż nam jak próbowałeś to Ci pomożemy i zmień nazwę tematu bo tutaj każdy ma "problem".

Pozdrawiam.
michas999
wiec dalem tak:
  1. <?php
  2. /******************************************************
  3. * connection.php
  4. * konfiguracja połączenia z bazą danych
  5. ******************************************************/
  6.  
  7. function connection() {
  8. // serwer
  9. $mysql_server = "localhost";
  10. // admin
  11. $mysql_admin = "michal99_zaplecz";
  12. // hasło
  13. $mysql_pass = "123";
  14. // nazwa baza
  15. $mysql_db = "michal99_zaplecze";
  16. // nawiązujemy połączenie z serwerem MySQL
  17. @mysql_connect($mysql_server, $mysql_admin, $mysql_pass)
  18. or die('Brak połączenia z serwerem MySQL.');
  19. // łączymy się z bazą danych
  20. @mysql_select_db($mysql_db)
  21. or die('Błąd wyboru bazy danych.');
  22. } 
  23. // wywołujemy funkcję connection()
  24. connection(); 
  25. ?>
  26.  
  27. /* zapytanie do konkretnej tabeli */
  28. $wynik = mysql_query('select * from `torrents`');
  29. $hits = mysql_num_rows($wynik);
  30.  
  31. $wynik = mysql_query('select * from `torrents`');
  32.  
  33. /*
  34. wyświetlamy wyniki, sprawdzamy,
  35. czy zapytanie zwróciło wartość większą od 0
  36. */
  37. if(mysql_num_rows($wynik) > 0) {
  38. /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
  39. echo "<table cellpadding="2" border=1>";
  40. while($r = mysql_fetch_assoc($wynik)) {
  41. echo "<tr>";
  42. echo "<td> nazwa: ".$r['name']."</td>";
  43. echo "</tr>";
  44. }
  45. echo "</table>";
  46.  
  47.  
  48.  
  49. <br><br><Br>
  50.  
  51.  
  52.  
  53.  
  54. <?php
  55.  $sql = 'select count(*) from torrents';
  56.  $result = mysql_query($sql);
  57.  $row = mysql_fetch_array($result);
  58.  $recordsCount = $row[0];//pobranie liczby rekordów
  59.  $pager = new Pager('1');
  60.  $pager->SetTotalRecords($recordsCount);//ustawienie liczby rekordów
  61.  //wygenerowanie pagera i zapamietanie go w zmiennej w celu
  62.  //pozniejszego wyswietlenia
  63.  $renderPager = $pager->Render();
  64.  $start = $pager->GetIndexRecordStart();//pobranie indexu rekordu początkowego
  65.  $end = $pager->GetIndexRecordEnd();//pobranie indexu rekordu koncowego
  66.  //zapytanie z uwzglenieniem stronicowania
  67.  $sql = 'select * from torrents limit '.$start.','.($end - $start + 1);
  68.  //...pobranie wyników i ich wyswietlenie
  69.  echo $renderPager; //wyswietlenie pager'a
  70. ?>


to mi wywalilo:
Kod
Fatal error: Cannot instantiate non-existent class: pager in /home/michal99/public_html/list.php on line 61



ps. tutaj linia 61 to $pager->SetTotalRecords($recordsCount);//ustawienie liczby rekordów a w notatniku to: $pager = new Pager('1');
nospor
jak korzystaj z jakiejs klasy, to musisz ją dołączyc do skryptu, np tak:
  1. <?php
  2. require_once('Pager.class.php');
  3. //.... reszta twojego kodu
  4. ?>

Zakladam ze klasa plik z klasa znajduje sie w biezacym katalogu
michas999
a skad wziasc ta klase?

ok mam juz,
teraz mam kod:
  1. <?php
  2. /******************************************************
  3. * connection.php
  4. * konfiguracja połączenia z bazą danych
  5. ******************************************************/
  6.  
  7. function connection() {
  8. // serwer
  9. $mysql_server = "localhost";
  10. // admin
  11. $mysql_admin = "michal99_zaplecz";
  12. // hasło
  13. $mysql_pass = "123";
  14. // nazwa baza
  15. $mysql_db = "michal99_zaplecze";
  16. // nawiązujemy połączenie z serwerem MySQL
  17. @mysql_connect($mysql_server, $mysql_admin, $mysql_pass)
  18. or die('Brak połączenia z serwerem MySQL.');
  19. // łączymy się z bazą danych
  20. @mysql_select_db($mysql_db)
  21. or die('Błąd wyboru bazy danych.');
  22. } 
  23. // wywołujemy funkcję connection()
  24. connection(); 
  25. ?>
  26.  
  27. /* zapytanie do konkretnej tabeli */
  28. $wynik = mysql_query('select * from `torrents`');
  29. $hits = mysql_num_rows($wynik);
  30.  
  31. $wynik = mysql_query('select * from `torrents`');
  32.  
  33. /*
  34. wyświetlamy wyniki, sprawdzamy,
  35. czy zapytanie zwróciło wartość większą od 0
  36. */
  37. if(mysql_num_rows($wynik) > 0) {
  38. /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
  39. echo "<table cellpadding="2" border=1>";
  40. while($r = mysql_fetch_assoc($wynik)) {
  41. echo "<tr>";
  42. echo "<td> nazwa: ".$r['name']."</td>";
  43. echo "</tr>";
  44. }
  45. echo "</table>";
  46.  
  47.  
  48.  
  49. <br><br><Br>
  50.  
  51.  
  52.  
  53.  
  54. <?php
  55. require_once('Pager.class.php');
  56.  $pager = new Pager('idPagera');
  57.  //okreslenie liczby wszystkich rekordów na 500
  58.  $pager->SetTotalRecords(500);
  59.  echo $pager->Render();//wyswietlenie pagera
  60. $sql = 'select count(*) from TABLE';
  61.  $result = mysql_query($sql);
  62.  $row = mysql_fetch_array($result);
  63.  $recordsCount = $row[0];//pobranie liczby rekordów
  64.  $pager = new Pager('idPagera');
  65.  $pager->SetTotalRecords($recordsCount);//ustawienie liczby rekordów
  66.  //wygenerowanie pagera i zapamietanie go w zmiennej w celu
  67.  //pozniejszego wyswietlenia
  68.  $renderPager = $pager->Render();
  69.  $start = $pager->GetIndexRecordStart();//pobranie indexu rekordu początkowego
  70.  $end = $pager->GetIndexRecordEnd();//pobranie indexu rekordu koncowego
  71.  //zapytanie z uwzglenieniem stronicowania
  72.  $sql = 'select * from TABLE limit '.$start.','.($end - $start + 1);
  73.  //...pobranie wyników i ich wyswietlenie
  74.  echo $renderPager; //wyswietlenie pager'a
  75.  
  76. ?>

jak wyswietlic zapytania ?

ok juz mam:
  1. <?php
  2. /******************************************************
  3. * connection.php
  4. * konfiguracja połączenia z bazą danych
  5. ******************************************************/
  6.  
  7. function connection() {
  8. // serwer
  9. $mysql_server = "localhost";
  10. // admin
  11. $mysql_admin = "michal99_zaplecz";
  12. // hasło
  13. $mysql_pass = "123";
  14. // nazwa baza
  15. $mysql_db = "michal99_zaplecze";
  16. // nawiązujemy połączenie z serwerem MySQL
  17. @mysql_connect($mysql_server, $mysql_admin, $mysql_pass)
  18. or die('Brak połączenia z serwerem MySQL.');
  19. // łączymy się z bazą danych
  20. @mysql_select_db($mysql_db)
  21. or die('Błąd wyboru bazy danych.');
  22. } 
  23. // wywołujemy funkcję connection()
  24. connection(); 
  25. ?>
  26.  
  27.  
  28. <?php
  29. require_once('Pager.class.php');
  30.  $pager = new Pager('idPagera');
  31.  //okreslenie liczby wszystkich rekordów na 500
  32.  $pager->SetTotalRecords(500);
  33.  echo $pager->Render();//wyswietlenie pagera
  34. $sql = 'select count(*) from torrents limit 10';
  35.  $result = mysql_query($sql);
  36.  $row = mysql_fetch_array($result);
  37.  
  38.  $recordsCount = $row[0];//pobranie liczby rekordów
  39.  $pager = new Pager('10');
  40.  $pager->SetTotalRecords($recordsCount);//ustawienie liczby rekordów
  41.  //wygenerowanie pagera i zapamietanie go w zmiennej w celu
  42.  //pozniejszego wyswietlenia
  43.  $renderPager = $pager->Render();
  44.  $start = $pager->GetIndexRecordStart();//pobranie indexu rekordu początkowego
  45.  $end = $pager->GetIndexRecordEnd();//pobranie indexu rekordu koncowego
  46.  //zapytanie z uwzglenieniem stronicowania
  47.  $sql = 'select * from torrents limit '.$start.','.($end - $start + 10);
  48. $result = mysql_query($sql);
  49.  $row = mysql_fetch_array($result);
  50. echo "<table cellpadding="2" border=1>";
  51. echo "<tr>";
  52. echo "<td> nazwa: ".$row['name']."</td>";
  53. echo "</tr>";
  54. echo "</table>";
  55.  
  56.  //...pobranie wyników i ich wyswietlenie
  57.  echo $renderPager; //wyswietlenie pager'a
  58.  
  59. ?>

ale pokazuje tylko 1 wynik :/ prbowalem z linijkom:
$sql = 'select * from torrents limit '.$start.','.($end - $start + 10);

i

$recordsCount = $row[0];//pobranie liczby rekordów
ale to nic nie daje :/
nospor
  1. <?php
  2. $sql = 'select count(*) from torrents limit 10';
  3. ?>

to zapytanie sluzy do pobrania liczby wszystkich rekordów. Nie moze w nim wiec byc zadnego limitu...

Tak ma byc:
  1. <?php
  2. $sql = 'select count(*) from torrents';
  3. ?>


edit:
jedziemy dalej:
Kod
<?php
$row = mysql_fetch_array($result);
    echo "<table cellpadding=\"2\" border=1>";
        echo "<tr>";
        echo "<td> nazwa: ".$row['name']."</td>";
        echo "</tr>";
    echo "</table>";
?>

Przeciez ten kod pobiera ci tylko jeden rekord.... w petli ma byc
Kod
<?php
echo "<table cellpadding=\"2\" border=1>";
while($row = mysql_fetch_array($result)){
    
        echo "<tr>";
        echo "<td> nazwa: ".$row['name']."</td>";
        echo "</tr>";
}
    echo "</table>";
?>
michas999
wszystko dziala, prawie tongue.gif

w bazie mam: 3690 wpisów (pozyji itd), a jak patrzec i policzyc:
skrypt wyswietla 10 pozycji i ma tylko 10 stron, czyli razem pokazuje 100 zapytan (pozycji) a powinien 3690 smile.gif

ok wiem o co chodzi, nie przewija automatycznie stron tongue.gif np jak jest 10 to zeby cyferka 10 byla po srodku wszystkich, ale i tak pokazuje 2560 :/
nospor
Twoj kod to sieczka. Dwa razy robisz new Pager, za kazdym razem wyswietlasz innego pagera. nic dziwnego ze cos ci sie ciagle źle wyswietla. Uporzadkuj to, najlepiej przejrzyj przyklady co dołączylem do klasy.
michas999
ok, poprawiłem:
wyglada teraz to tak:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  2. <html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=ISO-8859-2" />
  5. <link rel="shortcut icon" href="favicon.ico" />
  6. <title>Stronicowanie</title>
  7.  
  8. </head> 
  9. <body>
  10. <?php
  11.  
  12. /******************************************************
  13. * connection.php
  14. * konfiguracja połączenia z bazą danych
  15. ******************************************************/
  16.  
  17. function connection() {
  18. // serwer
  19. $mysql_server = "localhost";
  20. // admin
  21. $mysql_admin = "mcz";
  22. // hasło
  23. $mysql_pass = "123";
  24. // nazwa baza
  25. $mysql_db = "me";
  26. // nawiązujemy połączenie z serwerem MySQL
  27. @mysql_connect($mysql_server, $mysql_admin, $mysql_pass)
  28. or die('Brak połączenia z serwerem MySQL.');
  29. // łączymy się z bazą danych
  30. @mysql_select_db($mysql_db)
  31. or die('Błąd wyboru bazy danych.');
  32. } 
  33. // wywołujemy funkcję connection()
  34. connection(); 
  35. ?>
  36.  
  37.  
  38. <?
  39. require_once('Pager.class.php');
  40. $sql = 'select count(*) from user';
  41. $result = mysql_query($sql);
  42. $row = mysql_fetch_array($result);
  43. $recordsCount = $row[0];//pobranie liczby rekordów
  44. $pager = new Pager('idPagera');
  45. $pager->SetTotalRecords($recordsCount);
  46. $pag = $pager->Render(true);
  47. $start = $pager->GetIndexRecordStart();
  48. $end = $pager->GetIndexRecordEnd();
  49.  
  50. //zapytanie z uwzglenieniem stronicowania
  51.  $sql = 'select * from user ORDER BY username limit '.$start.','.($end - $start + 10);
  52. //...pobranie wyników i ich wyswietlenie
  53. $result = mysql_query($sql);
  54.  
  55. echo "<table cellpadding="2" border=1>";
  56. while($row = mysql_fetch_array($result)){
  57. echo "<tr>";
  58. echo "<td> nick; ".$row['username']." hasło: ".$row['password']." salt: ".$row['salt']." email: ".$row['email']." tytuł ".$row['usertitle']." postów ".$row['posts']."</td></b>";
  59. echo "</tr>";
  60. }
  61. echo "</table>";
  62. echo $pag;//wyswietlenie pager'a
  63. ?>
  64.  
  65.  
  66. </body>
  67. </html>



ale dalej 10(wyniki na 1 strone)*5586(ilosc stron)=55860(tyle w bazie)
a wpisow w bazie mam: 83,780 total smile.gif
nospor
Cytat
ale dalej 10(wyniki na 1 strone
a liczyc umiesz? policz sobie ile ci wyswietlil rekordow na stroine a zobaczysz ze nie 10.... mysl troche chlopie a nie na takich banalach lezysz

Nie:
  1. <?php
  2. $sql = 'select * from user ORDER BY username limit '.$start.','.($end - $start + 10);
  3. ?>

a:
  1. <?php
  2. $sql = 'select * from user ORDER BY username limit '.$start.', 10';
  3. ?>
michas999
wszystko dziala smile.gif thx, pomogles robic potezne zaplecze smile.gif

pozdro!
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.