Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Stronnicowanie wyników z bazy., Problem!
maxil
post
Post #1





Grupa: Zarejestrowani
Postów: 212
Pomógł: 11
Dołączył: 8.11.2008
Skąd: Sieradz

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


Witam mam problem z skryptem stronicowania.
Otóż mam kod na stronie, on ładnie wyświetla numerki ale nie wiem gdzie dopisać pętle żeby wyświetlać te wyniki żeby to wyglądało tak:

CODE
jakaś treść wyciągnięta z bazy danych

1 | 2 | 3 | 4 | 5 | ... | >>


te numerki wyświetla mi ładnie jak już mówiłem ale nie wyświetla tekstu odpowiedniego dla danej strony.

a oto kod stronnicowania:

  1. <?php
  2. $query="SELECT * FROM tabela ORDER BY id DESC";
  3.  
  4.  $sql_num=mysql_query($query);
  5.  $ile=mysql_num_rows($sql_num);
  6.  $limit=10;// ilosc linkow
  7.  $limit_linkow=20;//ile wynikow na stronie
  8.  $count=ceil($ile/$limit_linkow);
  9.  $page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
  10.  if (($page < 1) || ($page > $count)) $page = 1;
  11.  
  12.  if ($count > $limit) {
  13.  
  14.  $start = $page - floor($limit / 2);
  15.  if ($start < 1) $start = 1;
  16.  
  17.  $end = $start + $limit - 1;
  18.  if ($end > $count) {
  19.    $end = $count;
  20.    $start = $end - $limit;
  21.  }
  22.  
  23.  } else {
  24.    $start = 1;
  25.    $end = $count;
  26.  }
  27.  
  28.  $pgback = $page - 1;
  29.  $pgnext = $page + 1;
  30.  
  31.  if ($page >1) echo"<a href=\"?id=test&amp;page=$pgback\"><< poprzednia</a>";
  32.  for ($x=$start;$x<=$end;$x++) {
  33.  
  34.    if ($x != $page) {
  35.     $t = $x;
  36.  
  37.     echo " <a href=\"?id=test&amp;page=$x\">$t</a>\n ";
  38.    } else echo " <b>[$x]</b> ";
  39.  
  40.  }
  41.  if ($page < $count) echo"<a href=\"?id=test&amp;page=$pgnext\">nastepna >></a>\n";
  42.  $start = $page * $limit_linkow-$limit_linkow;
  43.  $query_page=$query." limit $start,$limit_linkow";
  44.  $result=mysql_query($query_page);
  45. ?>


jeśli ktoś był by w stanie mi pomóc był bym wdzięczny

Pozdro...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 19)
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Nie chce mi się przeglądać tego skryptu ale po zapytaniu widzę że do stronnicowania mu daleko.

Poczytaj o BETWEEN w mysql
Go to the top of the page
+Quote Post
maxil
post
Post #3





Grupa: Zarejestrowani
Postów: 212
Pomógł: 11
Dołączył: 8.11.2008
Skąd: Sieradz

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


a może jednak ktoś sie skusi i mi pomoże ;]
Go to the top of the page
+Quote Post
Spawnm
post
Post #4





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




fifi dał ci wskazówkę , ja dodam abyś poczytał o LIKE w sql, teraz ty wygooglaj o czym mówimy , pomyśl a zobaczysz że daliśmy ci rozwiązanie , lecz nie gotowca (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Poczytaj o BETWEEN w mysql

Cytat
fifi dał ci wskazówkę ,

Yyy, a co ma between do stronicowania?
Go to the top of the page
+Quote Post
Spawnm
post
Post #6





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




da się na nim zrobić stronicowanie, sam kiedyś zrobiłem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Ale LIKE lepszy
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




a czemu nie uzyc LIMIT, ktore do tego wlasnie jest stworzone. BETWEEN sluzy zupelnie do czego innego, o LIKE juz nie wspomne (IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif)
Go to the top of the page
+Quote Post
Spawnm
post
Post #8





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




oj, źle mi się napisało (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Miał być LIMIT ...
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@spawnm , @fifi napiszcie mi prosze stronicowanie przy pomocy between bo jestem ciekaw jak to ma wygladac. Nawet jesli jakims cudem wam sie to uda to w czym to niby ma byc lepsze od LIMIT, ktore notabene tutaj zostalo uzyte przez autora
Go to the top of the page
+Quote Post
Spawnm
post
Post #10





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Spoko, w weekend ci napiszę/podeśle (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
A że LIMIT lepszy to wiem.
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




jesli masz na mysli takie uzycie BETWEEN jak to sie robi stronicowanie w ORACLEu to ok, nie musisz, te metodę znam. Nie sądzilem jednak ze ktoś jest takim masochistą by to stosować w mysql.
A już szczególnie zdziwil mnie post fifi, ktory stwierdzil ze nie widzi tu nic ze stronicowania i ze koniecznie musi byc BETWEEN, a przeciez uzyto tu LIMIT.

MOze mayl OT sie tu zrobil, ale nie chcialem by nie daj boze autor tematu posluchal fifi i zaczal sie z jakims BETWEEN bawic (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Spawnm
post
Post #12





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




popieram, osobiście gdy robiłem stronicowanie z between nie wiedziałem że istnieje LIMIT , potem się dowiedziałem i uznałem że łatwiej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Daj jakiś link lub opisz jak działa pager w oraclu bo nie znam ...
Go to the top of the page
+Quote Post
maxil
post
Post #13





Grupa: Zarejestrowani
Postów: 212
Pomógł: 11
Dołączył: 8.11.2008
Skąd: Sieradz

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


sporo tego napisaliście ale jak na razie nie znalazłem odpowiedzi na moje pytanie ;]

jeszcze raz:

w którym miejscu i jaką pętle zastosować aby wyświetlać treści odpowiednie dla danej strony?

Ten post edytował maxil 6.08.2009, 14:35:26
Go to the top of the page
+Quote Post
Spawnm
post
Post #14





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




po mysql_query daj
  1. <?php
  2. while($row=mysql_fetch_assoc($sql_num)){
  3. echo $row['cos'];
  4. }
  5. ?>
Go to the top of the page
+Quote Post
maxil
post
Post #15





Grupa: Zarejestrowani
Postów: 212
Pomógł: 11
Dołączył: 8.11.2008
Skąd: Sieradz

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


ups coś nie wyszło wywaliło wszystkie rekodry nie podzieliło ich na strony
Go to the top of the page
+Quote Post
leovandamon
post
Post #16





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 5.01.2008
Skąd: Czwarty Świat

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


Gotowiec.

  1. <?php
  2. // Pobieramy numer strony
  3. if($_GET['page']) $start = intval($_GET['page']);
  4. else $start = 0;
  5.  
  6. // Zabezpieczamy się przez szkodnikami
  7. if($start < 0) $start = 0;
  8.  
  9. // Ile wyników na stronę?
  10. $ppage = 10;
  11.  
  12. // Przygotowyjemy zapytanie
  13. $s = $start * $ppage;
  14. $query='SELECT * FROM tabela ORDER BY id DESC LIMIT '.$s.','.$ppage;
  15.  
  16. // A dalej już sobie dopisz...
  17. ?>


I wytłumaczę. Po LIMIT musisz dać, od którego rekordu chcesz zacząć (nie jest to id), a po przecinku ile rekordów wyciągnąć.

LIMIT służy także do ograniczenia ilości wyników, np. LIMIT 10 - będziesz miał 10 pierwszych rekordów.
LIMIT 5,10 - będziesz miał 10 wyników zaczynając od piątego.

Pisałem z palca.

Pozdrawiam,
Leo van Damon.

Ten post edytował leovandamon 6.08.2009, 14:44:56
Go to the top of the page
+Quote Post
Fifi209
post
Post #17





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(nospor @ 6.08.2009, 13:54:20 ) *
jesli masz na mysli takie uzycie BETWEEN jak to sie robi stronicowanie w ORACLEu to ok, nie musisz, te metodę znam. Nie sądzilem jednak ze ktoś jest takim masochistą by to stosować w mysql.
A już szczególnie zdziwil mnie post fifi, ktory stwierdzil ze nie widzi tu nic ze stronicowania i ze koniecznie musi byc BETWEEN, a przeciez uzyto tu LIMIT.

MOze mayl OT sie tu zrobil, ale nie chcialem by nie daj boze autor tematu posluchal fifi i zaczal sie z jakims BETWEEN bawic (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


"użyto tu LIMIT"

Przepraszam Cię bardzo drogi nospor'ze widzisz w tym zapytaniu limit?
  1. SELECT * FROM tabela ORDER BY id DESC


Jeżeli widzisz, to proszę wskaż mi go kolorem najlepiej czerwonym i pogrubioną czcionką.

@down
Zwracam w takim razie honor. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Moje niedopatrzenie, człowiek nieprzywykły do mieszania html z php. (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

Ten post edytował fifi209 6.08.2009, 14:53:02
Go to the top of the page
+Quote Post
wookieb
post
Post #18





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




$query_page=$query." limit $start,$limit_linkow";

Ten post edytował wookieb 6.08.2009, 14:50:26
Go to the top of the page
+Quote Post
maxil
post
Post #19





Grupa: Zarejestrowani
Postów: 212
Pomógł: 11
Dołączył: 8.11.2008
Skąd: Sieradz

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


dzięki za wszelaką pomoc
już zrobiłem i działa jak należy ;]
Go to the top of the page
+Quote Post
nospor
post
Post #20





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Daj jakiś link lub opisz jak działa pager w oraclu bo nie znam ...

Mniej wiecej coś takiego:
  1. SELECT * FROM ( SELECT ROWNUM AS ID, field1, field2, field3 FROM TABLE
  2. )
  3. WHERE id BETWEEN 20 AND 40;

Dawno nie uzywalem
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 10:44