Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php+sql] wybrane rekordy i podzial na podstrony
Forum PHP.pl > Forum > Przedszkole
Gość_no name
Witam
jestem poczatkujacy w te klocki(prosze nie bić smile.gif ) i mam małe pytanko.Chce zrobic coś takiego jak np na tej stronie http://vart.pl/realizacje.php.

Napisałem więc skrypt który niby działa ale nie wiem jak zrobić aby automatycznie wstawiał mi linka do następnych i poprzednich stron w formacie: "Poprzednia 2,3,4 itd Nastepna" tak jak jest na przykładowej stronie podanej wyżej.
Wiem że moge wstawić klasycznie linki do każdej podstrony ale nie kumam jak to zrobić dynamicznie.

Skrypcik testowałem i poprawnie wybiera zadane ilosci rekordów (2, 3, i 4) i wstawia do tabelki ale coś czuje po kościach że da sie to prościej.Wszelkie sugestie mile widziane smile.gif
zmienne przekazuje do niego klasycznie : test.php?strona=0, test.php?strona=1 itd.
Oto skrypt:
  1. <table border="0"  cellspacing="3" cellpadding="5" width="478" align="center">
  2.  
  3. <?php
  4.  
  5. mysql_connect ("xxx","yyy","obrazki");
  6.  
  7. $strona=$_GET['strona'];
  8. $sp=0;
  9. $k=4;//ilosc wynikow na stronie
  10. $c=$k*2;
  11. $d=$c+$k;
  12.  
  13. if ($strona==0)
  14. $zapytanie = "SELECT * FROM obrazki limit $sp,$k";
  15.  
  16. if ($strona==1)
  17. $zapytanie = "SELECT * FROM obrazki limit $k,$k";
  18.  
  19.  
  20. if ($strona==2)
  21. $zapytanie = "SELECT * FROM obrazki limit $c,$k";
  22.  
  23. if ($strona==3)
  24. $zapytanie = "SELECT * FROM obrazki limit $d,$k";
  25.  
  26.  
  27. $wykonaj = mysql_query ($zapytanie);
  28.  
  29. while($wiersz=mysql_fetch_array ($wykonaj)) {
  30. echo " <tr>
  31. <td width=\"30%\" align=center>".$wiersz['link']."</td>
  32. <td width=\"70%\" valign=top>".$wiersz['opis']."</td>
  33. </tr>";
  34. }
  35.  
  36. ?>
  37. </table>
Guest
zapomniałem dodać że w wierszach 'link' w bazie mam poprostu podane url do obrazków.
TomASS
Nie za bardzo mi się podoba to:
  1. <?php
  2.  
  3. if ($strona==0)
  4. $zapytanie = "SELECT * FROM obrazki limit $sp,$k";
  5.                   
  6. if ($strona==1)
  7. $zapytanie = "SELECT * FROM obrazki limit $k,$k";
  8.               
  9.                  
  10. if ($strona==2)    
  11. $zapytanie = "SELECT * FROM obrazki limit $c,$k";
  12.                               
  13. if ($strona==3)    
  14. $zapytanie = "SELECT * FROM obrazki limit $d,$k";
  15.  
  16. ?>

A co będzie jak dojdzie jedna strona, a dwie, a sto? Lipa tongue.gif

Zrób tak:
  1. <?php
  2. $ile_na_strone = 4;
  3. $strona = (int)$_GET['strona']?(int)$_GET['strona']:1;
  4. $ktore = $ile_na_strone*($strona-1);
  5. $zapytanie = "SELECT * FROM obrazki limit $ktore,$ile_na_strone";
  6. ?>

Pozostaje jeszcze kwestia policzenia ile stron powinno być.
możesz po zapytaniu dać:
  1. <?php
  2. $ile_rekordow = mysql_affected_rows();
  3. $ile_stron = ceil($ile_rekordow/$ile_na_strone);
  4. ?>

Możesz podglądnąć jak to fajnie zrobił szanowny kolega nospor w swojej klasie.

P.S. Pisałem to z 'palca' i mam nadzieję, że nigdzie w kodzie nie wkradł się zły 'chochlik' tongue.gif


-------------------------------edit----------------------------
Literówka poprawiona smile.gif
Gość_no name
Big thx za linka i kod. Mała literówka się wkradła ale szybko poprawiłem:)

  1. <?php
  2.  
  3. $ktore = $ile_na_stronie*($strona-1);
  4. ?>

a tutaj jest:
  1. <?php
  2.  
  3. $ile_stron = ceil($ile_rekordow/$ile_na_strone);
  4. ?>
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.