Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Pętla by załadować wszystkie wartości
Forum PHP.pl > Forum > PHP
atyll
Witam.

Obecnie hostuje pewien serwer gier.
Moja strona jest połączona z bazą danych MYSQL, gdzie są zapisywane wszystkie dane o moich graczach.

Moja strona wyświetla profil każdego gracza, np: http://danera.no-ip.org/characters.php?player_name=Capisco

Jak widać na stronie, wyświetlają się Latest Deaths (śmierci gracza), mój problem polega na tym, że wyświetla tylko jedno zginięcie gracza, a chciałbym, by wyświetlało wszystkie jego polegnięcia.

Kod PHP, którym pobieram dane z bazy danych i wyświetlam:
  1. <?php
  2. try {
  3. $player = new Player();
  4. if (!empty($_GET['player_id'])) {
  5. $player->load($_GET['player_id']);
  6. } elseif (!empty($_GET['player_name'])) {
  7. $player->find($_GET['player_name']);
  8. } else {
  9. throw new PlayerException();
  10. }
  11. $account = new Account();
  12. $account->load($player->attrs['account']);
  13.  
  14. echo '<hr/><table style="width: 100%"><tr><td><b>Name:</b> '.htmlspecialchars($player->attrs['name']).'&nbsp;';
  15. if($player->isOnline()) echo '<span style="color:green">[Online]</span>'."<br/>\n";
  16. else echo '<span style="color:red">[Offline]</span>'."<br/>\n";
  17. echo '<b>Level:</b> '.$player->attrs['level']."<br/>\n";
  18. echo '<b>Magic Level:</b> '.$player->attrs['maglevel']."<br/>\n";
  19. echo '<b>Vocation:</b> '.$cfg['vocations'][$player->attrs['vocation']]['name']."<br/>\n";
  20.  
  21. try {
  22. echo '<b>Guild:</b> '.$player->guild['guild_rank_name'].' of <a href="guilds.php?guild_id='.$player->guild['guild_id'].'">'.htmlspecialchars($player->guild['guild_name']).'</a><br/>'."\n";
  23. } catch(GuildNotFoundException $e) {}
  24.  
  25. $gender = Array('Female','Male');
  26. echo '<b>Gender:</b> '.$gender[$player->attrs['sex']].'<br/>'."\n";
  27. if (!empty($cfg['temple'][$player->attrs['city']]['name']))
  28. echo "<b>Residence</b>: ".ucfirst($cfg['temple'][$player->attrs['city']]['name'])."<br/>";
  29.  
  30. if (isset($player->attrs['position'])) {
  31. echo "<b>Position: </b> ".$player->attrs['position']."<br/>";
  32. }
  33. if ($account->attrs['premend'] > time()) {
  34. echo "<b>Premium: </b> ".ceil(($account->attrs['premend'] - time())/(3600*24))." day(s)<br/>";
  35. }
  36. if ($player->attrs['lastlogin'] == 0)
  37. $lastlogin = 'Never';
  38. else
  39. $lastlogin = date("jS F Y H:i:s",$player->attrs['lastlogin']);
  40. echo "<b>Last Login:</b> ".$lastlogin."<br/>\n";
  41. if ($cfg['show_skills']) {
  42. echo "</td><td>";
  43. $sn = $cfg['skill_names'];
  44. for ($i=0; $i < count($sn); $i++) {
  45. echo '<b>'.ucfirst($sn[$i]).':</b> '.$player->skills[$i]['skill']."<br/>\n";
  46. }
  47. echo '</td></tr>';
  48. }
  49. echo '</table>';
  50. if (strlen($account->attrs['comment'])>0) {
  51. echo "<b>Comments</b><br/><div style=\"overflow:hidden\"><pre>".htmlspecialchars($account->attrs['comment'])."</pre></div><br/>\n";
  52. }
  53. echo '<hr/>';
  54. if ($account->attrs['reveal_characters'] && $account->players && count($account->players) > 1) {
  55. echo '<b>Characters on the same account</b><br/><ul class="task-menu">';
  56. foreach ($account->players as $_player) {
  57. echo '<li style="background-image: url(resource/user.png);" onclick="window.location.href=\'characters.php?player_id='.htmlspecialchars($_player['id']).'\'">'.htmlspecialchars($_player['name']).'</li>';
  58. }
  59. echo '</ul><hr/>';
  60. }
  61.  
  62. if ($cfg['show_deathlist']) {
  63. if ($player->deaths) {
  64. echo '<b>Latest Deaths</b><br/>';
  65. $prevdate = 0;
  66. foreach ($player->deaths as $death) {
  67. if ($death['killer_id'])
  68. $name = '<a href="characters.php?player_id='.$death['killer_id'].'">'.$death['killer_name'].'</a>';
  69. else
  70. $name = $death['killer_name'];
  71. if($prevdate == $death['date'])
  72. echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and by '.$name.'<br/>';
  73. else
  74. echo '<i>'.date("jS F Y H:i:s",$death['date']).'</i> Killed at level '.$death['victim_level'].' by '.$name.'<br/>';
  75. $prevdate = $death['date'];
  76. }
  77. }
  78. }
  79.  
  80. } catch(PlayerNotFoundException $e) {
  81. echo 'Player not found';
  82. } catch(PlayerException $e) {}
  83. ?>


Struktura mojej bazy danych:


W kodzie PHP jest pętla foreach, baza danych przechowuje wszystkie jego polegnięcia, lecz wyświetla tylko jedno.

Czy ktoś byłby w stanie mi pomóc?
nospor
Skoro to:
foreach ($player->deaths as $death) {
wyswietla ci tylko jedną smierc, znaczy że to: $player->deaths zawiera tylko jedną śmierć - nie sądzisz że to dość logiczne wytłumaczenie? Co w związku z tym? Ano to, że wypdałoby zobaczyć kod, który wypełnia $player->deaths - nie sądzisz, że to też dość logiczny tok rozumowania? 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.