Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Problem z działaniem kod
Forum PHP.pl > Forum > Przedszkole
Valkirie
Mam problem z poprawnym działaniem kodu. Poniżej jest cały kod pliku stat.php odpowiadajacego za przelicznie punktów.

  1. <?php
  2. define('INSIDE', true);
  3. $ugamela_root_path = './';
  4. include($ugamela_root_path . 'extension.inc');
  5. include($ugamela_root_path . 'common.'.$phpEx);
  6.  
  7. if(!check_user()){ header("Location: login.php"); die();}
  8.  
  9. includeLang('stat');
  10.  
  11. $dpath = (!$user["dpath"]) ? DEFAULT_SKINPATH : $user["dpath"];
  12.  
  13. $parse = $lang;
  14. $who = (isset($_POST["who"]))?$_POST["who"]:$_GET["who"];
  15. $type = (isset($_POST["type"]))?$_POST["type"]:$_GET["type"];
  16. $start = (isset($_POST["start"]))?$_POST["start"]:$_GET["start"];
  17. //
  18. // Formulario donde se muestran los diferentes tipos de categoria
  19. // y los rangos
  20. //
  21. $parse['who'] = '
  22. (($who == "player") ? " SELECTED" : "").'>Gracz
  23.  
  24. (($who == "ally") ? " SELECTED" : "").'>Sojusz';
  25.  
  26.  
  27. $parse['type'] = '
  28.  
  29. (($type == "pts") ? " SELECTED" : "").'>Punkty
  30.  
  31. (($type == "flt") ? " SELECTED" : "").'>Floty
  32.  
  33. (($type == "res") ? " SELECTED" : "").'>Badania';
  34.  
  35. $parse['start'] = '
  36.  
  37. (($start == "1") ? " SELECTED" : "").'>1-100
  38.  
  39. (($start == "101") ? " SELECTED" : "").'>101-200
  40.  
  41. (($start == "201") ? " SELECTED" : "").'>201-300
  42.  
  43. (($start == "301") ? " SELECTED" : "").'>301-400
  44.  
  45. (($start == "401") ? " SELECTED" : "").'>401-500
  46.  
  47. (($start == "501") ? " SELECTED" : "").'>501-600
  48.  
  49. (($start == "601") ? " SELECTED" : "").'>601-700
  50.  
  51. (($start == "701") ? " SELECTED" : "").'>701-800
  52.  
  53. (($start == "801") ? " SELECTED" : "").'>801-900
  54.  
  55. (($start == "901") ? " SELECTED" : "").'>901-1000
  56.  
  57. (($start == "1001") ? " SELECTED" : "").'>1001-1100
  58.  
  59. (($start == "1101") ? " SELECTED" : "").'>1101-1200
  60.  
  61. (($start == "1201") ? " SELECTED" : "").'>1201-1300
  62.  
  63. (($start == "1301") ? " SELECTED" : "").'>1301-1400
  64.  
  65. (($start == "1401") ? " SELECTED" : "").'>1401-1500';
  66.  
  67. //
  68. // Parece que fuera ayer, que solo el juego era una fachada.
  69. // Bueno, Here we go!
  70. //
  71.  
  72.  
  73. if($who == "ally"){
  74.  
  75. $parse['body_table'] = parsetemplate(gettemplate('stat_alliancetable_header'), $parse);
  76. //pequeďż˝ fix para prevenir desastres
  77. $start = (is_numeric($start)&&$start>1)?round($start):1;
  78. //pequeĂąa condicion
  79. $start = floor($start / 100 % 100)*100;
  80. //Realizamos la quiery en la table de jugadores
  81. $query = doquery('SELECT * FROM {{table}} ORDER BY ally_points DESC LIMIT '.($start).',100','alliance');
  82. $start++;
  83. $parse['body_values'] = '';//en caso de que no hubieran datos...
  84. $parse['data'] = $game_config['stats'];
  85. while ($row = mysql_fetch_assoc($query)){
  86. $parse['ally_rank'] = $start;
  87.  
  88. $parse['ally_rankplus'] = '*';
  89. $parse['ally_name'] = ''.$row['ally_name'].'';
  90. $parse['ally_mes'] = '';
  91.  
  92. $parse['ally_members'] = $row['ally_members'];
  93. if($type == "res"){
  94. $ally_points = $row['ally_points_tech'];
  95. }elseif($type == "flt"){
  96. $ally_points = $row['ally_points_fleet'];
  97. }else{
  98. $ally_points = floor($row['ally_points']/1000);
  99. }
  100.  
  101. $parse['ally_points'] = pretty_number($ally_points);
  102. $parse['ally_members_points'] = @floor($ally_points/$row['ally_members']);
  103. $parse['body_values'] .= parsetemplate(gettemplate('stat_alliancetable'), $parse);
  104. $start++;
  105. }
  106.  
  107.  
  108. }
  109. else{
  110.  
  111. $parse['body_table'] = parsetemplate(gettemplate('stat_playertable_header'), $parse);
  112.  
  113. //pequeďż˝ fix para prevenir desastres
  114. $start = (is_numeric($start)&&$start>1)?round($start):1;
  115.  
  116. //pequeĂąa condicion
  117. $start = floor($start / 100 % 100)*100;
  118. //Realizamos la quiery en la table de jugadores
  119. if($type == "res"){
  120. $query = doquery('SELECT * FROM {{table}} ORDER BY points_tech DESC LIMIT '.$start.',100','users');
  121. }elseif($type == "flt"){
  122. $query = doquery('SELECT * FROM {{table}} ORDER BY points_fleet DESC LIMIT '.$start.',100','users');
  123. }else{
  124. $query = doquery('SELECT * FROM {{table}} ORDER BY points_points DESC LIMIT '.$start.',100','users');
  125. }
  126.  
  127.  
  128. $start++;
  129. $parse['data'] = $game_config['stats'];
  130. $parse['body_values'] = '';//en caso de que no hubieran datos...
  131. while ($row = mysql_fetch_assoc($query)){
  132. $playername_rank = $row['username'];
  133. $rank_old = $row['rank_old'];
  134. // $query_rank = doquery("UPDATE {{table}} SET `rank_old`='{$rank_old}' WHERE `username` = '{$playername_rank}'" ,"users");
  135. $parse['player_rank'] = $start;
  136. $rank_new = $start;
  137. $ranking = $rank_old - $rank_new;
  138. if ($ranking == "0")
  139. {
  140. $parse['player_rankplus'] = "0";
  141. }
  142. if ($ranking < "0")
  143. {
  144. $parse['player_rankplus'] = "$ranking";
  145. }
  146. if ($ranking > "0")
  147. {
  148. $parse['player_rankplus'] = "+$ranking";
  149. }
  150. // $query_rank = doquery("UPDATE {{table}} SET `rank`='{$start}' WHERE `username` = '{$playername_rank}'" ,"users");
  151. //$parse['player_rankplus'] = '*';
  152. $parse['player_name'] = $row['username'];
  153. $parse['player_mes'] = '<a href="messages.php?mode=write&id='.$row['id'].'">
  154. <imgsrc="'.$dpath.'img/m.gif" border="0" alt="Napisz Wiadomość" /></a>';
  155. $parse['player_alliance'] = $row['ally_name'];
  156.  
  157. if($type == "res"){
  158. $parse['player_points'] = pretty_number($row['points_tech']);
  159. }elseif($type == "flt"){
  160. $parse['player_points'] = pretty_number($row['points_fleet']);
  161. }else{
  162. $parse['player_points'] = pretty_number($row['points_points']/1000);
  163. }
  164.  
  165.  
  166. $parse['body_values'] .= parsetemplate(gettemplate('stat_playertable'), $parse);
  167. $start++;
  168. }
  169.  
  170. }
  171.  
  172. $page = parsetemplate(gettemplate('stat_body'), $parse);
  173.  
  174. display($page,$lang['Resources']);
  175. //
  176. // bueno, no se pudo hacer mucho que digamos ...
  177. //
  178. // Created by Perberos. All rights reversed Š 2006
  179. ?>


Kod jaki odpowiada (moim zdaniem) za wyliczenia wartości sojuszu to:

  1. <?php
  2. f($who == "ally"){
  3.  
  4. $parse['body_table'] = parsetemplate(gettemplate('stat_alliancetable_header'), $parse);
  5. //pequeďż˝ fix para prevenir desastres
  6. $start = (is_numeric($start)&&$start>1)?round($start):1;
  7. //pequeĂąa condicion
  8. $start = floor($start / 100 % 100)*100;
  9. //Realizamos la quiery en la table de jugadores
  10. $query = doquery('SELECT * FROM {{table}} ORDER BY ally_points DESC LIMIT '.($start).',100','alliance');
  11. $start++;
  12. $parse['body_values'] = '';//en caso de que no hubieran datos...
  13. $parse['data'] = $game_config['stats'];
  14. while ($row = mysql_fetch_assoc($query)){
  15. $parse['ally_rank'] = $start;
  16.  
  17. $parse['ally_rankplus'] = '?';
  18. $parse['ally_name'] = ''.$row['ally_name'].'';
  19. $parse['ally_mes'] = '';//'
  20. //';
  21. $parse['ally_members'] = $row['ally_members'];
  22. if($type == "res"){
  23. $ally_points = $row['ally_points_tech'];
  24. }elseif($type == "flt"){
  25. $ally_points = $row['ally_points_fleet'];
  26. }else{
  27. $ally_points = floor($row['ally_points']/1000);
  28. }
  29.  
  30. $parse['ally_points'] = pretty_number($ally_points);
  31. $parse['ally_members_points'] = @floor($ally_points/$row['ally_members']);
  32. $parse['body_values'] .= parsetemplate(gettemplate('stat_alliancetable'), $parse);
  33. $start++;
  34. }
  35.  
  36.  
  37. }
  38. else{
  39.  
  40. $parse['body_table'] = parsetemplate(gettemplate('stat_playertable_header'), $parse);
  41. ?>


Wartości [ally_members] [ally_points] [ally_points_flee] są wartościami z bazy danych. Są znacząco większe od tych jakie powinn być. Blędy są w naliczaniu punkty ogólnych, floty oraz badaniach.

UWAGA: Wartości punktów pojedyńczych graczy są liczone prawidłowo.


-------------------------
do PHP są odpowiednie znaczniki BBCode
a nie tylko [code] do wszystkiego
~Cienki1980
qqrq
Zlituj się nad nami...

Może sam się najpierw pobaw tym potworkiem i pokombinuj gdzie tu może być (i jaki) błąd. Przynajmniej mniej więcej co nie działa...
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.