Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Stroniconowanie ;(
Forum PHP.pl > Forum > Przedszkole
<?Początkujący?>
Cześć,
Mam problem, i to nawet wielki ... Posiadam sobie prosty skrypt newsów, taki jak poniżej:
  1. <?
  2. mysql_connect(&#092;"$host\",\"$user\",\"$pass\");
  3. mysql_select_db($tabela);
  4. $zapytanie=(&#092;"SELECT*FROM news ORDER BY id DESC LIMIT 0,999\");
  5. $wykonaj=(mysql_query($zapytanie));
  6. while($wyswietl=mysql_fetch_array($wykonaj))
  7. if(@$color)
  8. {
  9. echo(&#092;"<tr>rn<td bgcolor=\"#B0B0B0\" align=\"justify\" style=\"border: dotted #FFFFFF 1px\"><b>:: <u>\".$wyswietl['temat'].\"</u></b><br>\".$wyswietl['tresc'].\"<br>Data: <b>\".$wyswietl['data'].\"</b> r.</td>rn</tr>rn\");
  10. $color=(false);
  11. }
  12. else
  13. {
  14. echo(&#092;"<tr>rn<td bgcolor=\"#A0A0A0\" align=\"justify\" style=\"border: dotted #FFFFFF 1px\"><b>:: <u>\".$wyswietl['temat'].\"</u></b><br>\".$wyswietl['tresc'].\"<br>Data: <b>\".$wyswietl['data'].\"</b> r.</td>rn</tr>rn\");
  15. $color=(true);
  16. }
  17. ?>

Tylko potrzebował bym jakiegoś prostego skryptu, za pomocą którego wyniki pobierane z bazy SQL były by sortowane na poszczególne strony: [1] [2] [3] itd ...
Szukałem na forum i coś tam znalazłem, ale nie wiedziałem jak to razem zmontować.
Czy mogłby mi ktoś pomóc? Plis biggrin.gif
kszychu
To może powiedz co znalazles, co probowałeś robić i z czym masz problemy?
kubatron
Jeśli szukałeś to marnie tongue.gif forum.php.pl - tu masz wszystko
stoprocent
Ja korzystam z takiego stronnicowania kiedys znalazlem na forum i tylko czasem cos zminam .

  1. <?php
  2.  
  3. //***************
  4. //Przed petla
  5. //***************
  6.  
  7. if (!isset($first)) { $first = 0; } 
  8. $ltmp = 30; // wielkosc \"porcji\", tu: 30 rekordow
  9.  
  10. //***************
  11. //W petli
  12. //***************
  13.  
  14. $query = &#092;"SELECT * FROM tabela DESC LIMIT \".$first.\",\".$ltmp.\" \";
  15.  
  16.  
  17. //***************
  18. //Tworzenie linkow
  19. //***************
  20.  
  21. for ($i=1;$i<=$ile;$i++) 
  22. { 
  23.    print (&#092;"<a href=\"?first=\" . ($i*$ltmp-$ltmp) . \"\" title=\"\" . ($i*$ltmp-($ltmp-1)) . \"-\" . ($i*$ltmp) .\"\">\"); 
  24.    if ($first==($i*$ltmp-$ltmp)) 
  25.    { 
  26.        print (&#092;"<b>[\" . $i . \"]</b></a> \"); $akt=$i; } else { print (\"[\" . $i . \"]</a> \"); 
  27.    } 
  28. } 
  29. $count = mysql_num_rows(mysql_query(&#092;"SELECT * FROM tabela \")); 
  30. $count = $count/$ltmp; 
  31. $ile = ceil($count); 
  32. if ($first!=0) print (&#092;"<a href=?first=\" . ($first-$ltmp) . \"><big>&laquo;</big></a> \"); 
  33. for ($i=1;$i<=$ile;$i++) 
  34. { 
  35.  print (&#092;"<a href=\"?first=\" . ($i*$ltmp-$ltmp) . \"\" title=\"\" . ($i*$ltmp-($ltmp-1)) . \"-\" . ($i*$ltmp) .\"\">\"); 
  36.    if ($first==($i*$ltmp-$ltmp)) 
  37.    { 
  38.        print (&#092;"<b>[\" . $i . \"]</b></a> \"); $akt=$i; } else { print (\"[\" . $i . \"]</a> \"); 
  39.    } 
  40. } 
  41. if ($akt<$ile) print (&#092;"<a href=?first=\" . ($first+$ltmp) . \"><big>&raquo;</big></a>\");
  42.  
  43. ?>
<?Początkujący?>
no fajne to powyżej, ale jak to zgrać z moim powyższym skryptem ...
stoprocent
To opisalem ci w komentarzu , chyba potrafisz dojsc do tego . To co masz przed petla o dajesz gdziekolwiek przed petla to co sie donosci do mysql_query to zapislem jako $query a generowanie linkow wstawiasz tam gdzie chcsz linki do pod stron .
<?Początkujący?>
;] zmontowalem cus takiego:

  1. <?php
  2. mysql_connect(&#092;"$host\",\"$user\",\"$pass\");
  3. mysql_select_db($tabela);
  4.  
  5.  
  6. if (!isset($first)){ $first = 0; }
  7. $ltmp = 5; // wielkosc \"porcji\", tu: 30 rekordow
  8.  
  9.  
  10. $zapytanie=(&#092;"SELECT*FROM news ORDER BY id DESC LIMIT \".$first.\",\".$ltmp.\"\");
  11. $wykonaj=(mysql_query($zapytanie));
  12. while($wyswietl=mysql_fetch_array($wykonaj))
  13. if(@$color)
  14. {
  15. echo(&#092;"<tr>rn<td bgcolor=\"#B0B0B0\" align=\"justify\" style=\"border: dotted #FFFFFF 1px\"><b>:: <u>\".$wyswietl['temat'].\"</u></b><br>\".$wyswietl['tresc'].\"<br>Data: <b>\".$wyswietl['data'].\"</b> r.</td>rn</tr>rn\");
  16. $color=(false);
  17. }
  18. else
  19. {
  20. echo(&#092;"<tr>rn<td bgcolor=\"#A0A0A0\" align=\"justify\" style=\"border: dotted #FFFFFF 1px\"><b>:: <u>\".$wyswietl['temat'].\"</u></b><br>\".$wyswietl['tresc'].\"<br>Data: <b>\".$wyswietl['data'].\"</b> r.</td>rn</tr>rn\");
  21. $color=(true);
  22. }
  23.  
  24.  
  25. for ($i=1;$i<=$ile;$i++)
  26. {
  27.  print (&#092;"<a href=\"?first=\" . ($i*$ltmp-$ltmp) . \"\" title=\"\" . ($i*$ltmp-($ltmp-1)) . \"-\" . ($i*$ltmp) .\"\">\");
  28.  if ($first==($i*$ltmp-$ltmp))
  29.  {
  30.  print (&#092;"<b>[\" . $i . \"]</b></a> \"); $akt=$i; } else { print (\"[\" . $i . \"]</a> \");
  31.  }
  32. }
  33. $zapytanie = mysql_num_rows(mysql_query(&#092;"SELECT * FROM news \"));
  34. $zapytanie = $zapytanie/$ltmp;
  35. $ile = ceil($zapytanie);
  36. if ($first!=0) print (&#092;"<a href=?first=\" . ($first-$ltmp) . \"><big>&laquo;</big></a> \");
  37. for ($i=1;$i<=$ile;$i++)
  38. {
  39. print (&#092;"<a href=\"?first=\" . ($i*$ltmp-$ltmp) . \"\" title=\"\" . ($i*$ltmp-($ltmp-1)) . \"-\" . ($i*$ltmp) .\"\">\");
  40.  if ($first==($i*$ltmp-$ltmp))
  41.  {
  42.  print (&#092;"<b>[\" . $i . \"]</b></a> \"); $akt=$i; } else { print (\"[\" . $i . \"]</a> \");
  43.  }
  44. }
  45. if ($akt<$ile) print (&#092;"<a href=?first=\" . ($first+$ltmp) . \"><big>&raquo;</big></a>\");
  46.  
  47.  
  48. ?>

eh cos nie tak to śmiga.. w bazie posiadam 24 newsy, niby wszystko ladnie dzieli , ale wyswietla mi dwa razy link do pierwszej strony, czyli mam cos takiego:
[1] [1] [2] [3] [4] [5] ?

dlaczego?
stoprocent
Tyle to chyba sobie dasz rade , przeanalizuj caly kod to pewni znajdzie mozliwe ze ja sie gdzies rablem . A pozamieniales " & # 3 3 ; " to na wykrzyknik questionmark.gif
Pedros
Ok, po paru problemach zrobiłem to u siebie na stronce, jednak pozostaje jeszcze jedno pytanie, z którym mam problem.
Chciałbym, aby te strony pojawiały się w dwóch miejscach: u góry i na dole. W jaki sposób mogę to zrobić? Gdy po prostu przekleję kod na dół, to nie tworzy się cała lista, tylko pierwsza strona:

acha, tak dobrze na php się nie znam, ale w tym skrypcie jest pare niepotrzebnych rzeczy... (np. przy wpisywaniu stron wystarczy napisać [$i] niepotrzebne jest pisanie: [" . $i . "]; no przynajmniej u mnie tak działa). druga sprawa to niepotrzebne jest całe for przed funkcją mysql_num_rows (czyli tą linią:
Kod
$count = mysql_num_rows(mysql_query("SELECT * FROM tabela "));
)
bo i bez tego działa smile.gif
z drugiej strony dziwne, że ci to zadziałało: u mnie wpisanie linijki:
Kod
print ("<a href=\"?first=" . ($i*$ltmp-$ltmp) . "\" title=\"" . ($i*$ltmp-($ltmp-1)) . "-" . ($i*$ltmp) ."\">");
wypisywało error, co nie jest dla mnie dziwne, bo title= to nie jest funkcja ani zmienna php więc powino być wewnątrze printa(zaraz za &#092, czyli "\ title=\"" ), ale to już szczególiki...

Więc wracając do mojego pytania... Ma ktoś pomysł jak to zrobić??
Riklaunim
Możesz też spróbować jakiejś klasy z www.phpclasses.org - szukaj "iterator" lub "page iterator" smile.gif Jednego testowałem - dostarczało mu się tablicę a on to dzielił smile.gif
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.