Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: rpoblem z pagerem
Forum PHP.pl > Forum > PHP
atchor
Mam problem ze skryptem dzielacym wyniki zapytan mysql na porcje. otoz skrypt z waszej phpedii wyswietla mi nawigacje tylko do 2 stron, a wiec na pierwszej stronie (?strona=0) jest naw. do 1,2, na drugiej (?strona=1) do 0,1,2 (Poprzednie,1,2) a na trzeciej (?strona=2) rowniez tak samo jak na 2

oto kod ktorego uzywam:

  1. <?php
  2. // ile ma byc wyswietlanych rekordów na stronie
  3. define('ILOSC_WYNIKOW_NA_STRONIE', 10);
  4. $ask_for_news = @mysql_query("SELECT * FROM acms_articles WHERE catid!=1 && typeid!=4 ORDER BY id DESC LIMIT ". mysql_escape_string((int)$_GET['strona']*ILOSC_WYNIKOW_NA_STRONIE).",".ILOSC_WYNIKOW_NA_STRONIE) or die(mysql_error());
  5. $iloscWpisow = @mysql_num_rows($ask_for_news);
  6. ?>


  1. <?php
  2. //Teraz wypadalo by wyswietlic jakac nawigacje 
  3. //jesli nie jestesmy na pierwszej stronie
  4. $iloscStron = ($iloscWpisow / ILOSC_WYNIKOW_NA_STRONIE);
  5. echo 'Ilosc stron: (' . floor($iloscStron) . ') ';
  6. if($_GET['strona'] > 0)
  7. { 
  8. //wyswietlamy link do poprzedniej strony
  9. echo '<a href="?strona='.($_GET['strona'] - 1).'">Poprzednie</a> ';
  10. }
  11. for($i = 0;$i <= floor($iloscWpisow / ILOSC_WYNIKOW_NA_STRONIE);$i++)
  12. {
  13. echo '<a href="?strona='.($i + 1).'">[ '.($i + 1).' ]</a> ';
  14. }
  15. //jesli nie jestesmy na ostatniej stronie
  16. if($_GET['strona'] < floor($iloscWpisow / ILOSC_WYNIKOW_NA_STRONIE))
  17. { 
  18. //wyswietlamy link do nastepnej strony
  19. echo ' <a href="?strona='.($_GET['strona'] + 1).'">Nastepne</a>';
  20. }
  21. ?>


prosze o rade jak przeksztalcic kod aby zbieral wszystkie dane o ilosci mozliwych stron, bo powinno byc ich okolo 10 a są tylko 3 jak widac.
heaven
no chyba tu cos zamieszales
  1. <?php
  2. $iloscStron = ($iloscWpisow / ILOSC_WYNIKOW_NA_STRONIE);
  3. ?>

to nie jest ilosc stron!!!
  1. <?php
  2. $iloscStron = ($iloscWSZYSTKICHWpisow / ILOSC_WYNIKOW_NA_STRONIE);
  3. ?>

a iloss wszystkich wpisow pobrac takim zapytaniem
  1. SELECT count(catid) FROM acms_articles WHERE catid!=1 && typeid!=4
atchor
no teraz to mi w ogole pokazuje tylko jedna strone w przód i nic wiecej
heaven
  1. <?php
  2. //Teraz wypadalo by wyswietlic jakac nawigacje 
  3. //jesli nie jestesmy na pierwszej stronie
  4. $iloscStron = ($iloscWSZYSTKICHWpisow / ILOSC_WYNIKOW_NA_STRONIE);
  5. echo 'Ilosc stron: (' . floor($iloscStron) . ') ';
  6. if($_GET['strona'] > 0)
  7. { 
  8. //wyswietlamy link do poprzedniej strony
  9. echo '<a href="?strona='.($_GET['strona'] - 1).'">Poprzednie</a> ';
  10. }
  11. for($i = 0;$i <= floor($iloscStron);$i++)
  12. {
  13. echo '<a href="?strona='.($i + 1).'">[ '.($i + 1).' ]</a> ';
  14. }
  15. //jesli nie jestesmy na ostatniej stronie
  16. if($_GET['strona'] < floor($iloscStron))
  17. { 
  18. //wyswietlamy link do nastepnej strony
  19. echo ' <a href="?strona='.($_GET['strona'] + 1).'">Nastepne</a>';
  20. }
  21. ?>


tak to masz?
atchor
poprawilem blad przy linii 11 ale teraz, majac kod ktory wstawiles heaven, dalej pokazuje mi ze mam w przod 2 strony i do strony 2 tylko operuje ten kod.
heaven
zrob echa zmiennych tu i uwdzie i napisz mi jakie wartosci maja nastepujace zmienne

$iloscWSZYSTKICHWpisow

floor($iloscStron)
atchor
no problem jest jak widze ze zmienna iloscWSZYSTKICHWpisow bo wyswietla mi:

Resource id #18

::: ::: ::: ::: ::: edit

sam już sobie poradziłem z tym

  1. <?php
  2. $numarticles = @mysql_query("SELECT * FROM acms_articles WHERE catid!=1");
  3. $iloscWSZYSTKICHWpisow = @mysql_num_rows($numarticles);
  4. ?>
Lisek54
Witam,

ja zrobiłem to tak (oparłem się o twoje zapytanie i o przykład z tego forum)

  1. <?php
  2. $zapytaniee = "SELECT id FROM news";
  3.  define('ILOSC_WYNIKOW_NA_STRONIE', 4);
  4. include('dodatki/news.php');
  5. echo '<p align="center">';
  6. news_lista();
  7. print '<br /><br />';
  8.  
  9. $ile = mysql_query($zapytaniee);
  10. pag( mysql_num_rows($ile), '0', ILOSC_WYNIKOW_NA_STRONIE );
  11. ?>


Zapytanie do wyświetlania newsów:
  1. SELECT * FROM news WHERE STATUS=1 ORDER BY id DESC LIMIT ". mysql_escape_string((int)$_GET['start']*ILOSC_WYNIKOW_NA_STRONIE).",".ILOSC_WYNIKOW_NA_STRONIE or die(mysql_error())."


A to jest funkcja odpowiedzialna za numerki:
  1. <?php
  2. function pag($ilosc, $a, $c) { // pag( ilosc wszystkich wpisow, od jakiego numeru zaczynac, ile na stronie )
  3.  $start = $_GET['start'];
  4.  while($ilosc>0) {
  5.  
  6.  if (!isset($b)) { $b="0"; }
  7.  
  8.  $b=$b+1;
  9.  
  10.  if ((($b-1)-1)+1==$start) {
  11.  echo "[$b] ";
  12.  }
  13.  else {
  14.  print '<a href="?start='.$a.'">'.$b.'</a> ';
  15.  }
  16.  
  17.  $ilosc -= $c;
  18.  $a++;
  19.  }
  20.  echo "<br>";
  21.  $i=0;
  22. }
  23. ?>


P.S forum tutaj dodaje znaki-> \ <-więc prosze je usunąć
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.