Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]Mam problem ze stronicowaniem
Forum PHP.pl > Forum > Przedszkole
jacus24
Mam takie zapytanie do bazy
  1. <?php
  2. $query = "SELECT * FROM ogloszenia ";
  3. $result = mysql_query($query , $link)
  4. $num_ogloszenia = mysql_num_rows($result);
  5. while ($row = mysql_fetch_array($result)) {
  6. $kategoria = $row['kategoria'];
  7. $region = $row['region'];
  8. $miasto = $row['miasto'];
  9. $imie = $row['imie'];
  10.  $kontakt = $row['kontakt'];
  11. $tresc = $row['tresc'];
  12.  $today = $row['today'];
  13. ?>


I taki kod do stronicowania ale, nie działa mi co mam źle?
  1. <?php
  2.  
  3. for($i = 0; $i < 21; ++$i){
  4. $query[$i] = 'Element '.$i.'.'; // tworzenie tablicy
  5. }
  6.  
  7. $ilosc = count($query); //ilosc elementow w tablicy
  8. $iloscNaStronie = 4; //ilosc wynikow na jednej stronie
  9. $iloscStron = ceil($ilosc/$iloscNaStronie); //maksymalna ilosc stron
  10.  
  11. if($_GET['strona'] && $_GET['strona'] > 0 && $_GET['strona'] <= $iloscStron) $strona = $_GET['strona']-1;
  12. else $query = 0;
  13.  
  14. $start = $strona * $iloscNaStronie;
  15. if($start >= $ilosc) $start = 0;
  16.  
  17. $stop = $start + $iloscNaStronie;
  18. if($stop >= $ilosc) $stop = $ilosc;
  19.  
  20. for($i = $start; $i < $stop; ++$i){
  21. echo $query[$i].'<br />'; //wyswietlenie odpowiednich elementów tablic
  22. }
  23.  
  24. if($strona > 0) echo '<a href="index.php?strona='.($strona).'" >[<]</a>'; //link wstecz o jedna strone
  25. for($i = 1; $i <= $iloscStron; ++$i){
  26. echo '<a href="index.php?strona='.$i.'" >['.$i.']</a>'; //wyswietlenie linkow do stron
  27. }
  28. echo $linki;
  29. if($strona < $iloscStron-1) echo '<a href="index.php?strona='.($strona+2).'" >[>]</a>'; //link dalej o jedna strone
  30.  
  31. ?>
Piotrwusek
Było setki razy na forum

Skorzystaj z stronnicowania nonspora....
jacus24
Ja bym wolał jednak ten.Jesli ktoś widzi błąd to proszę o podpowiedź.
b_chmura
  1. <?php
  2. // przykladowy panel do przechodznia miedzy stronami //
  3. function Ppanel($cnt, $CntStr, $Istrona, $Pstrona, $Astrona, $Nstrona, $ALLstrona)
  4. {
  5. echo 'Aktualnie jestes na '.$Astrona.' stronie z '.$CntStr.' wszystkich.<br />';
  6. echo 'Rekordow lacznie - '.$cnt.'.<br />';
  7.  
  8. if($Pstrona)
  9.  {
  10. echo '<a href="?cnt='.$cnt.'&ile='.$Istrona.'&page='.$Pstrona.'">Poprzednia</a> | ';
  11. }
  12. else
  13. {
  14. echo 'Poprzednia | ';
  15. }
  16. $i = 1;
  17. foreach($ALLstrona as $nr)
  18. {
  19. if($i == $Astrona)
  20. {
  21. echo $nr.', ';
  22. }
  23. else
  24. {
  25. echo '<a href="?cnt='.$cnt.'&ile='.$Istrona.'&page='.$nr.'">'.$nr.'</a>, ';
  26. }
  27. $i++;
  28. }
  29.  
  30. if($Nstrona)
  31. {
  32. echo ' | <a href="?cnt='.$cnt.'&ile='.$Istrona.'&page='.$Nstrona.'">Następna</a>';
  33. }
  34. else
  35. {
  36. echo ' | Następna';
  37. }
  38. }
  39.  
  40. //funkcja paginatora
  41. function paginator($cnt, $Astrona = 1, $Istrona = 5)
  42. {
  43. if(!empty($cnt) or !empty($Istrona)) $CntStr = ceil($cnt/$Istrona);
  44. if($Astrona <= 0) $Astrona = 1;
  45. if($Astrona > $CntStr) $Astrona = $CntStr;
  46.  
  47. $Pstrona  = (($Astrona-1) >= 1)? ($Astrona-1): FALSE;
  48. $Nstrona  = (($Astrona+1) <= $CntStr)? ($Astrona+1): FALSE;
  49. $ALLstrona = range(1, $CntStr);
  50. $start  = $Istrona*$Astrona-$Istrona;
  51.  
  52. if($Istrona > ($cnt-$start)) $Istrona = ($cnt-$start);
  53.  
  54. $pagin['cnt']  = $cnt;
  55. $pagin['CntStr'] = $CntStr;
  56. $pagin['start']  = $start;
  57. $pagin['Istrona']  = $Istrona;
  58. $pagin['Pstrona']  = $Pstrona;
  59. $pagin['Astrona']  = $Astrona;
  60. $pagin['Nstrona']  = $Nstrona;
  61. $pagin['ALLstrona'] = $ALLstrona;
  62.  
  63. return $pagin;
  64. }
  65.  
  66. $page  = $_GET['page'];
  67. $po_ile = 10;
  68.  
  69. $cnt  = mysql_num_rows(mysql_query("SELECT * FROM `ogloszenia`"));
  70. $pagin = paginator($cnt, $page, $po_ile); //liczba wszystkich rekordów, aktualna strona, ile rekordów na stronie
  71. $dane = mysql_query("SELECT * FROM `ogloszenia`")
  72.  
  73.  
  74. while ($dana = mysql_fetch_array($dane)) 
  75. {
  76. echo $i++.'. '.
  77.  $dana['kategoria'].', '.
  78.  $dana['region']  .', '.
  79.  $dana['miasto']  .', '.
  80.  $dana['imie']  .', '.
  81.  $dana['kontakt'] .', '.
  82.  $dana['tresc'] .', '.
  83.  $dana['today'];
  84. }
  85.  
  86. Ppanel($cnt, $pagin['CntStr'], $po_ile, $pagin['Pstrona'], $pagin['Astrona'], $pagin['Nstrona'], $pagin['ALLstrona']);
  87. ?>


Przykładowo
jacus24
Wszystko fajnie tylko mająć 7 rekordow w bazie i dając limit wyświetlania na stronie 2 rekordow tworzy mi 3 podstrony na której są te same rekordy
b_chmura
oh oh zapomniało mi sie.
Przede wszystkim zmienna $i++ jest zbędna - usuń

a zapytanie przy $dane zmień na
  1. <?php
  2. $dane = mysql_query("SELECT * FROM `ogloszenia` LIMIT ".$pagin['start'].", ".$pagin['Istrona']);
  3. ?>
potreb
Jak ci ma działać skoro ten kod do twojego zapytania nie pasuje.

Chmura skrypt stronnicowania jest nie dla tego zapytania.
jacus24
Ok dziękuje działa
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.