Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]numer pozycji rekordu przy paginacji stron
Forum PHP.pl > Forum > Przedszkole
SUICIDE
Witam.
Posiadam ranking graczy
Jest około 3 000 wpisów
Wyświetlanie ich wszystkich na 1 stronie powoduje bardzo długie ładowanie strony oraz jej słabą przejrzystość.
Dodałem paginację. Na każdej stronie pokazuje 50 wyników przesortowanych według najwyższego wyniku z kolumny "score"


Problem:
Na drugiej stronie pozycja w rankingu powinna być ponumerowana już od 50-100 a jest od 1-50 i tak na każdej stronie.


Kod PHP:
  1. $query = "SELECT COUNT(*) as all_posts FROM `$bd_table`";
  2. $result = mysql_query($query) or die (mysql_error());
  3. $row = mysql_fetch_array($result);
  4. extract($row);
  5.  
  6. $onpage = 50;
  7. $navnum = 7;
  8. $allpages = ceil($all_posts/$onpage);
  9.  
  10. if(!isset($_GET['page']) or $_GET['page'] > $allpages or !is_numeric($_GET['page']) or $_GET['page'] <= 0){
  11. $page = 1;
  12. }else{
  13. $page = $_GET['page'];
  14. }
  15. $limit = ($page - 1) * $onpage;
  16.  
  17. global $bd_table;
  18. $query1 = "SELECT * FROM `$bd_table`ORDER BY score DESC LIMIT $limit, $onpage";
  19. $resultado1 = mysql_query($query1,$conexao);
  20.  
  21. echo "<table id='table'><tr><th>Poz.</th><th>Nick</th><th>SteamID</th><th>Punkty</th><th>KDR</th><th>HS</th><th>Celność</th><th>Profil</th></td>";
  22. $rank=0;
  23. while ($row = mysql_fetch_array($resultado1)) {
  24. $rank++;
  25. if($row['hits'] == 0){
  26. $hits = 1;
  27. } else {
  28. $hits = $row['hits'];
  29. }
  30.  
  31. if($row['deaths'] == 0){
  32. $deaths = 1;
  33. } else {
  34. $deaths = $row['deaths'];
  35. }
  36.  
  37. if($row['shots'] == 0){
  38. $shots = 1;
  39. } else {
  40. $shots = $row['shots'];
  41. }
  42. $accuracy = "";
  43.  
  44. $temp = strval($row['hits']/$shots);
  45. if(strpos($temp,".") !== false){
  46. for($i = 0; $i<=strpos($temp,".")+2;$i++){
  47. if( strlen($temp)-1 <$i ){
  48. $accuracy .= "";
  49. }else{
  50. $accuracy = $accuracy . $temp[$i];
  51. }
  52.  
  53. }
  54. } else { $accuracy = $temp . ".00";}
  55. echo "<tr><td>$rank</td><td>" . $row['name'] . "</td><td>{$row['steam']}</td><td>{$row['score']}</td><td>";
  56. $temp = strval($row['kills']/$deaths);
  57. if(strpos($temp,".") !== false){
  58. for($i = 0; $i<=strpos($temp,".")+2;$i++){
  59. if( strlen($temp)-1 <$i ){
  60. break;
  61. }else{
  62. echo $temp[$i];
  63. }
  64.  
  65. }
  66. } else { echo $temp . ".00";}
  67. echo "</td><td>{$row['headshots']}</td><td>" . $accuracy . "</td>
  68. <td><a href='showplayer.php?id=".$row['id']."'><img src='images/more.png'></a></a></td>
  69. </tr>";
  70. }
  71. if($navnum > $allpages){
  72. $navnum = $allpages;
  73. }
  74.  
  75. $forstart = $page - floor($navnum/2);
  76. $forend = $forstart + $navnum;
  77.  
  78. if($forstart <= 0){ $forstart = 1; }
  79.  
  80. $overend = $allpages - $forend;
  81.  
  82. if($overend < 0){ $forstart = $forstart + $overend + 1; }
  83.  
  84. $forend = $forstart + $navnum;
  85. $prev = $page - 1;
  86. $next = $page + 1;


Dziękuje za pomoc.
kapslokk
  1. $rank=0;
  2. while ($row = mysql_fetch_array($resultado1)) {
  3. $rank++;

Ustawiasz rank zawsze na 0, pozniej w petli inkrementujesz. Ustaw na starcie wartosc strona * ilosc na strone;
nospor
$rank= ($page-1) * 50;

I nie kasuj posta na ktorego ktos odpowiedzial :/
SUICIDE
Dziękuje bardzo. Wszystko działa prawidłowo.
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.