Postado Maio 26, 2023 1 ano Galera tem como me ajudar a montar um ranking na home do site, para mostrar os top 5 Kages que mais tem pontos. Obs: semelhante ao do print abaixo. Tenho como referencia esse código php, onde mostra quantos "pontos " tem a guild.. obs: na tabela 'players' tem outra tebela 'graduacao_points', marcando a quantidade depontos dos jogadores. $ots = POT::getInstance(); $ots->connect(POT::DB_MYSQL, connection()); $SQL = $ots->getDBHandle(); echo'<div class="message"><div class="title">Top Guild Points</div> <div class="content"> <table border="0" cellspacing="3" cellpadding="4" width="100%"> <tr>'; $i = 0; foreach($SQL->query(' SELECT `g`.`id` AS `id`, `g`.`name` AS `name`, SUM(`p`.`level`) AS `level`, COUNT(`p`.`name`) AS `count`, AVG(`p`.`level`) AS `average`, MIN(`p`.`level`) AS `min`, MAX(`p`.`level`) AS `max` FROM `players` p LEFT JOIN `guild_ranks` gr ON `p`.`rank_id` = `gr`.`id` LEFT JOIN `guilds` g ON `gr`.`guild_id` = `g`.`id` WHERE `g`.`id` = `g`.`id` GROUP BY `name` ORDER BY `level` DESC LIMIT 3 ') as $guild) { $Points = $guild['level'] + $guild['count'] + round($guild['average']) + $guild['min'] + $guild['max']; echo ' <td style="padding-right:20px;padding-top:3px" align="center"> Top Rating : <p style="color:#336600;display:inline;padding: 0 0 3px 0;font-weight: bold;">'.$Points.'</p> <a href="'.WEBSITE.'/index.php/guilds/view/' . $guild['id'] . '"><img src="'.WEBSITE.'/public/images/gp/'. $i = $i + 1 .'.png" width="60" height="60" border="0"/> <br /><b>' . $guild['name'] . '</b></a><br /> </td>'; } echo' </tr> </table>'; if(empty($i)) { echo "<center><font color='red'>There is no guilds yet.</font></center>"; } echo "</div>"; echo "</div><br/>"; ?> Print anexado:
Postado Junho 9, 2023 1 ano <?php $ots = POT::getInstance(); $ots->connect(POT::DB_MYSQL, connection()); $SQL = $ots->getDBHandle(); echo '<div class="message"><div class="title">Top 5 Kages - Pontuação</div><div class="content"> <table border="0" cellspacing="3" cellpadding="4" width="100%"> <tr>'; // Consulta SQL para obter os top 5 Kages com base nos pontos $query = ' SELECT `p`.`name` AS `name`, `p`.`points` AS `points` FROM `players` p ORDER BY `points` DESC LIMIT 5 '; $result = $SQL->query($query); $i = 1; while ($row = $result->fetch()) { $kageName = $row['name']; $kagePoints = $row['points']; echo ' <td style="padding-right: 20px; padding-top: 3px;" align="center"> <p style="color: #336600; display: inline; padding: 0 0 3px 0; font-weight: bold;">' . $kagePoints . '</p> <br /><b>' . $i . '. ' . $kageName . '</b> </td>'; $i++; } echo ' </tr> </table>'; if ($i === 1) { echo "<center><font color='red'>Não há Kages registrados.</font></center>"; } echo '</div></div><br/>'; ?> tente ai se ve erro me fala aqui Editado Junho 10, 2023 1 ano por sverkoa editei e atualizei (veja o histórico de edições)
Postado Junho 9, 2023 1 ano Autor Em 09/06/2023 em 20:11, sverkoa disse: <?php $ots = POT::getInstance(); $ots->connect(POT::DB_MYSQL, connection()); $SQL = $ots->getDBHandle(); echo '<div class="message"><div class="title">Top Guild Points</div> <div class="content"> <table border="0" cellspacing="3" cellpadding="4" width="100%"> <tr>'; $i = 0; foreach ($SQL->query(' SELECT `g`.`id` AS `id`, `g`.`name` AS `name`, SUM(`p`.`level`) AS `level`, COUNT(`p`.`name`) AS `count`, AVG(`p`.`level`) AS `average`, MIN(`p`.`level`) AS `min`, MAX(`p`.`level`) AS `max` FROM `players` p LEFT JOIN `guild_ranks` gr ON `p`.`rank_id` = `gr`.`id` LEFT JOIN `guilds` g ON `gr`.`guild_id` = `g`.`id` WHERE `g`.`id` = `g`.`id` GROUP BY `name` ORDER BY `level` DESC LIMIT 3 ') as $guild) { $Points = $guild['level'] + $guild['count'] + round($guild['average']) + $guild['min'] + $guild['max']; echo ' <td style="padding-right:20px;padding-top:3px" align="center"> Top Rating : <p style="color:#336600;display:inline;padding: 0 0 3px 0;font-weight: bold;">' . $Points . '</p> <a href="' . WEBSITE . '/index.php/guilds/view/' . $guild['id'] . '"> <img src="' . WEBSITE . '/public/images/gp/' . ($i = $i + 1) . '.png" width="60" height="60" border="0"/> <br /><b>' . $guild['name'] . '</b> </a><br /> </td>'; } echo ' </tr> </table>'; if (empty($i)) { echo "<center><font color='red'>There are no guilds yet.</font></center>"; } echo "</div>"; echo "</div><br/>"; ?> tente ai se ve erro me fala aqui amigo, nao notei diferença.. ainda ta mostrando os "pontos" das guilds.. era pra monstrar a 'graduacao_points' dos players print de como esta: https://imgur.com/a/RW4ZQAr
Postado Junho 10, 2023 1 ano Autor n deu certo Em 09/06/2023 em 20:11, sverkoa disse: <?php $ots = POT::getInstance(); $ots->connect(POT::DB_MYSQL, connection()); $SQL = $ots->getDBHandle(); echo '<div class="message"><div class="title">Top Guild Points</div> <div class="content"> <table border="0" cellspacing="3" cellpadding="4" width="100%"> <tr>'; $i = 0; foreach ($SQL->query(' SELECT `g`.`id` AS `id`, `g`.`name` AS `name`, SUM(`p`.`level`) AS `level`, COUNT(`p`.`name`) AS `count`, AVG(`p`.`level`) AS `average`, MIN(`p`.`level`) AS `min`, MAX(`p`.`level`) AS `max` FROM `players` p LEFT JOIN `guild_ranks` gr ON `p`.`rank_id` = `gr`.`id` LEFT JOIN `guilds` g ON `gr`.`guild_id` = `g`.`id` WHERE `g`.`id` = `g`.`id` GROUP BY `name` ORDER BY `level` DESC LIMIT 3 ') as $guild) { $Points = $guild['level'] + $guild['count'] + round($guild['average']) + $guild['min'] + $guild['max']; echo ' <td style="padding-right:20px;padding-top:3px" align="center"> Top Rating : <p style="color:#336600;display:inline;padding: 0 0 3px 0;font-weight: bold;">' . $Points . '</p> <a href="' . WEBSITE . '/index.php/guilds/view/' . $guild['id'] . '"> <img src="' . WEBSITE . '/public/images/gp/' . ($i = $i + 1) . '.png" width="60" height="60" border="0"/> <br /><b>' . $guild['name'] . '</b> </a><br /> </td>'; } echo ' </tr> </table>'; if (empty($i)) { echo "<center><font color='red'>There are no guilds yet.</font></center>"; } echo "</div>"; echo "</div><br/>"; ?> tente ai se ve erro me fala aqui n deu certo, continua mostrando as guilds
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.