Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Stronicowanie wynikow mysql
Forum PHP.pl > Forum > PHP
a1EL
Witam.
No wiec mam kod ktory pobiera dane z bazy i je wyswietla wszystko jzu zrobilem tylko nie to stronicowanie sad.gif prubowalem wszystkich skryptow tutaj na forum ale zaden na moje nie dziala albo nieumiem ich przystosowac sad.gif Bardzo prosze o pomoc !
Tutaj jest kod
  1. <?php
  2. include('polaczenie.php');
  3.  
  4. $zapytanie = &#092;"SELECT * FROM tapety \";
  5. $wykonaj = mysql_query ($zapytanie);
  6.  
  7.  while($wiersz=mysql_fetch_array ($wykonaj)) {
  8. echo &#092;"<img src=\".$wiersz['url'].\"> <a href=\".$wiersz['nazwa'].\".rar><font color=blue><b>Pobierz</font></b></a> \";
  9. $i++;  
  10. $reszta = $i%3;
  11. if($reszta == 0){
  12. print '<br />';
  13. }
  14.  
  15. }
  16.  
  17.  
  18. ?>

Pozdrawiam i bardzo dzienkuje exclamation.gif
hwao
nikt tu Ci gotowcow nie bedzie dawal.

Na forum bylo to 100 razy, proponuje poszukac i zobacyzc na jakiej zasadzie to dziala....

Krzywo patrze na ten temat dry.gif
strife
Cytat(a1EL @ 2005-06-17 13:17:20)
Pozdrawiam i bardzo dzienkuje exclamation.gif

chyba dziękuje... winksmiley.jpg

Użyj w zapytaniu LIMIT...
dr_bonzo
@a1EL: zrozum jak ma dzialac taki skrypt i sam go sobie napiszesz:

1. masz wiele rekordow do wyswietlenia
2. okreslasz ile ma ich byc n ajednej stronie: $ile = 10
3. strona nr $nr_strony (==0) zawiera rekordy od $first (==1) do $last (==10) , czyli
$first = $ile * $numer_strony + 1; // 10 * 0 + 1 = 1
$last = ($ile + 1) * $numer_strony; // 10 *( 0 + 1 ) = 10
4. Pobierasz z bazy rekordy uzywajac "LIMIT $first, $ile"
5. wyswietlasz je

6. linki do kolejnych stron, to po prostu
PREV: 'link/?nr_strony=' . ( $numer_strony - 1)
NEXT: 'link/?nr_strony=' . ( $numer_strony + 1)

7. dodaj do tego sprawdzanie czy istnieje kolejna/poprzednia strona.
8. $ilosc_rekordow to " SELECT count( * )...."
9. ilosc stron to: ceil( $ilosc_rekordow / $ile )

Kod musisz napisac sam.
a1EL
Dzienki wielkie dr_bonzo
wyskrobalem z tego troche i smiga sobie ale niewiem paru rzeczy;)
teraz kod wyglada tak (niewiem czy dobrze zrobilem):
  1. <?php
  2. include('polaczenie.php');
  3. $ile = 10;
  4. $numer_strony = 0;
  5. $first = $ile * $numer_strony;
  6. $ile++;
  7. $last = $ile * $numer_strony;
  8. $zapytanie = &#092;"SELECT * FROM tapety LIMIT $first, $ile\";
  9. $wykonaj = mysql_query ($zapytanie);
  10. while($wiersz=mysql_fetch_array ($wykonaj)) {
  11. echo &#092;"<img src=\".$wiersz['url'].\"> <a href=\".$wiersz['nazwa'].\".rar><font color=blue><b>Pobierz</font></b></a> \";
  12. $i++;  
  13. $reszta = $i%3;
  14. if($reszta == 0){
  15. print '<br />';
  16. }
  17.  
  18. }
  19. $numer_strony--;
  20. $PREV = &#092;"link/?nr_strony=$numer_strony\";
  21. $numer_strony++;
  22. $NEXT = &#092;"link/?nr_strony=$numer_strony\";
  23.  
  24. include('zliczanie.php');
  25. $ilosc_stron = ceil($plikow/$ile);
  26. echo &#092;"$ilosc_stron\";
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35. ?>

i wyswietla mi dobrze na 11 plikow 2 strony na 1 jedna a na 0 zero stron
ale teraz niewiem jak porobic zeby byly te stronki sad.gif
Ps. ten plik zliczanie.php zlicza pliki w katalogu poniewaz nieumiem zliczac ilosci rekordow przez mysqla wygada on tak :
  1. <?php
  2. $directories_found = 0;
  3. $plikow = 0;
  4. $links_found = 0;
  5. $others_found = 0;
  6. $path = &#092;"tapety\";
  7. $path_id = opendir($path);
  8. while($file_name = readdir($path_id))
  9.  {
  10.  if($file_name != &#092;".\" and $file_name !=\"..\")
  11. {
  12. if(is_dir($path . &#092;"/\" . $file_name))
  13.  {
  14.  $directories_found++;
  15.  }
  16. elseif(is_file($path . &#092;"/\" . $file_name))
  17.  {
  18.  $plikow++;
  19.  }
  20. elseif(is_link($path . &#092;"/\" . $file_name))
  21.  {
  22.  $link_found++;
  23.  }
  24. else
  25.  {
  26.  $others_found++;
  27.  }
  28. }
  29.  }
  30. closedir($path_id);
  31.  
  32. ?>
dr_bonzo
  1. <?php
  2. // to jest zle
  3. $numer_strony--; // numer poprzedniej strony
  4. $PREV = &#092;"link/?nr_strony=$numer_strony\";
  5. $numer_strony++; // !!!!!!!!!!! numer aktualnej strony
  6. $NEXT = &#092;"link/?nr_strony=$numer_strony\";
  7.  
  8. // prosciej:
  9. $PREV = &#092;"link/?nr_strony=\" . ($numer_strony - 1);
  10. $NEXT = &#092;"link/?nr_strony=\" . ($numer_strony + 1);
  11.  
  12. ?>


Zliczanie rekordow w mysqlu:
  1. SELECT COUNT( * )
  2. FROM jakas_tabela WHERE {warunki}
a1EL
Kurde ja jestem chyba jakis oporny sad.gif
  1. <?php
  2. $PREV = &#092;"?nr_strony=\" . ($numer_strony - 1);
  3. $NEXT = &#092;"?nr_strony=\" . ($numer_strony + 1);
  4.  
  5.  
  6. $zapytanie = &#092;"SELECT COUNT( * ) FROM tapety WHERE {?}\";/* niewiem jakie tu dac warunki */
  7. $wynik = mysql_query ($zapytanie);
  8. echo &#092;"$wynik\"; /* nic mi sie nie wyswietla bez warunkow mi sie wyscietla resourece #id=5 czy cos
  9. takiego ale jak dam warunek np $id<9999 (tak sobie wykombinowalem :P) to nic */
  10.  
  11.  
  12. echo &#092;"<p align=center><a href=$PREV>Poprzednia</a> | <a href=$NEXT>Nastepna</p>\";
  13.  
  14. ?>
Jak przekladam strony to pokazuje sie to samo caly czas i w te i wewte sad.gif no i jeszcze jedeno pytanie jak sprawdzic czy jest poprzednia strona ? bo strona -1 to nie zabardzo
dr_bonzo
Pewnie wystarczy:
  1. SELECT COUNT( * )
  2. FROM tapety

Warunki dodajesz tylko jesli je potrzebujesz, np chcesz wyswietlic tapety z ostatnbiego miesiaca.

Cytat
no i jeszcze jedeno pytanie jak sprawdzic czy jest poprzednia strona


pierwsza strona ma numer: 0
stron jest: ceil( $ilosc_rekordow / $ile )
czyli ostatnia strona ma numer: ceil( $ilosc_rekordow / $ile ) - 1

Przyklad:
Ilosc stron = 4;
1sza_strona = 0;
ostatnia_strona = 4 - 1 = 3

Czy istnieje poprzednia strona, gdy aktualna jest strona nr. 3? storna nr 2? nr 1? nr 0? nr 5? nr -3?
Kiedy istnieje poprzednia strona?

Tak samo z nastepna strona:
Kiedy istnieje nastepna strona?

Jak to ustalisz, wrzucasz do odpowiedniego IF-a i gotowe.
a1EL
Edit:
  1. <?php
  2.  
  3. include('polaczenie2.php');
  4.  
  5. $result = mysql_query('SELECT * FROM tapety', $link);
  6. $num_rows = mysql_num_rows($result);
  7. $PREV = &#092;"?nr_strony=\" . ($numer_strony - 1);
  8. $NEXT = &#092;"?nr_strony=\" . ($numer_strony + 1);
  9. $ilosc_stron = ceil($num_rows/$ile);
  10.  
  11.  
  12. $ostatnia = $ilosc_stron-1;
  13. $pierwsza = 0;
  14. if($ostatnia >= 1) {
  15. echo &#092;"[1]\";
  16. }
  17. $n = 1;
  18. for ($i = 0; $i < $ilosc_stron; $i++) {
  19. $n++;
  20. if($ostatnia >= $n) {
  21. echo &#092;"[$n]\";
  22. }
  23. }
  24. ?>

To dziala i wyswietla stronki ale niewiem jak dac do nich odnosniki
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.