Top 15 My/SQL + Rank
#1
Hola a todos, dejo este pequeño plugin que hice el año pasado y lo tenia guardado y me di cuenta que en el foro aún no encontré algun top 15 que traiga rank. El top 15 es por MOTD y el rank es por un menú.

Se abre el top al escribir /top15, y el rank /rank.

Espero les sirva...

CVARS
topsql_contar_suicidio "0" - Al suicidarte cuenta como una muerte mas. Por defecto 0.
topsql_ignorar_bots "0" - Ignora que los bots sean registrados en la tabla y por ende sumados al top / rank. Por defecto 0.

[Imagen: 20220513041557-1.jpg]
[Imagen: 20220513041551-1.jpg]

Código PHP:
// ____________________
//
// TOP 15 MOTD - MYSQL
// ____________________

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <sqlx>

//===========================================
// Para usar MySql solo deja activado esto
//            #define MODO_MYSQL
//===========================================

#define JUGADOR_VALIDO(%0)                 (1 <= %0 <= MAX_PLAYERS)

#define OBTENER_BIT_DEL_JUGADOR(%0,%1)     (JUGADOR_VALIDO(%1) && (%0 & (1 << (%1 & 31))))
#define SETEAR_BIT_AL_JUGADOR(%0,%1)       (JUGADOR_VALIDO(%1) && (%0 |= (1 << (%1 & 31))))
#define ELIMINAR_BIT_DEL_JUGADOR(%0,%1)    (JUGADOR_VALIDO(%1) && (%0 &=~ (1 << (%1 & 31))))

// _______
//
// ENUMS
// _______

enum _MAX_ESTADISTICAS
{
    
KILLS,
    
MUERTES,
    
HEADSHOTS,
    
FAKASOS,
    
PUNTOS_DE_RANK
};

// __________________
//
// VARIABLES Y CVARS
// __________________

new g_estadistica[MAX_PLAYERS+1][MAX_ESTADISTICAS];
new 
g_conectado;
new 
g_max_jugadores;

new 
cvar_suicidiocvar_ignorar_bots;

// - My/SQL -
new const data_sql[][] = { "host""usuario""constrasenya""base de datos""tabla_principal""tabla_de_jugadores_registrados" };
new 
Handleg_sql_tupleHandleg_sql_conexiong_sql_txt_query[605], g_sql_error[251], g_sql_jugadores_registrados;
new 
g_usuario[MAX_PLAYERS+1][32], boolg_logueado[MAX_PLAYERS+1];

// ______________________
// 
// FUNCIONES PRINCIPALES
// ______________________

public plugin_init()
{
    
register_plugin("TOP15 - MYSQL""1.0""Emanuelitop15");

    
register_event("HLTV""ev_inicio_de_ronda""a""1=0""2=0");
    
register_event("DeathMsg""ev_muerte""a""1>0");

    
RegisterHam(Ham_Killed"player""ham_jugador_asesinado", .Post false);
    
RegisterHam(Ham_Killed"player""ham_jugador_asesinado_post", .Post true);

    
register_clcmd("say /rank""clcmd_rank");
    
register_clcmd("say /top15""clcmd_top15");

    
cvar_suicidio register_cvar("topsql_contar_suicidio""0"); // Si te suicidas cuenta como una Muerte.
    
cvar_ignorar_bots register_cvar("topsql_ignorar_bots""0"); // 1: No permite a los bots que se cargen / guarden sus datos. (Tampoco se los argega a la tabla) | 0: Permite todo lo mencionado anteriormente.

    
g_max_jugadores get_maxplayers();

    
MySQL_INIT();
}

public 
client_putinserver(id)
{
    
SETEAR_BIT_AL_JUGADOR(g_conectadoid);

    new 
s;
    for (
0MAX_ESTADISTICASs++)
    
g_estadistica[id][s] = 0;

    
g_logueado[id] = false;

    
get_user_name(idg_usuario[id], charsmax(g_usuario[]));
    
jugador_post_conexion(id);
}

jugador_post_conexion(id)
{
    if (
get_pcvar_num(cvar_ignorar_bots) && is_user_bot(id))
        return;

    
set_task(0.2"cargar_datos"id);
}

public 
client_disconnected(id)
{
    
guardar_datos(id);

    
/*if (!OBTENER_BIT_DEL_JUGADOR(g_conectado, id))
        return;

    ELIMINAR_BIT_DEL_JUGADOR(g_conectado, id);*/

    
JUGADOR_CONECTADO(id, .eliminar_bit true);
}

// ________
//
// EVENTOS
// ________

public ev_inicio_de_ronda()
{
    new 
id;
    for (
id 1id <= g_max_jugadoresid++)
        
guardar_datos(id);
}

public 
ev_muerte()
{
    new 
idsz_arma[8];
    
id read_data(1);
    
read_data(4sz_armacharsmax(sz_arma));

    if (
is_user_connected(id) && equal(sz_arma"knife"))
    
g_estadistica[id][FAKASOS]++;
}

public 
plugin_end()
{
    
SQL_FreeHandle(g_sql_tuple);
    
SQL_FreeHandle(g_sql_conexion);
}

// _______
//
// HAMS
// _______

public ham_jugador_asesinado(victimaatacante)
{
    if (!
JUGADOR_CONECTADO(atacante) || (!get_pcvar_num(cvar_suicidio) && victima == atacante) || get_user_team(atacante) == get_user_team(victima))
        return 
HAM_IGNORED;

    if (
victima != atacanteg_estadistica[atacante][KILLS]++;
    
g_estadistica[victima][MUERTES]++;    

    return 
HAM_HANDLED;    
}

public 
ham_jugador_asesinado_post(victimaatacante)
{
    if (!
JUGADOR_CONECTADO(atacante) || victima == atacante || get_user_team(atacante) == get_user_team(victima))
        return 
HAM_IGNORED;

    
// Headshot    
    
if (get_pdata_int(victima755) == HIT_HEAD
        
g_estadistica[atacante][HEADSHOTS]++;
    
    return 
HAM_HANDLED;    
}

// ______________________
//
// FUNCIONES SECUNDARIAS
// ______________________

public cargar_datos(id)
{
    if (!
JUGADOR_CONECTADO(id))
        return 
PLUGIN_HANDLED;

    new 
Handlequery;
    
query SQL_PrepareQuery(g_sql_conexion"SELECT * FROM `%s` WHERE `Jugador`=^"%s^""data_sql[4], g_usuario[id]);

    if (!
SQL_Execute(query))
    {
        
SQL_ERROR(query__"cargar_datos(id)"g_usuario[id]);
        return 
PLUGIN_HANDLED;    
    }

    if (!
SQL_NumResults(query))
    {
        
g_logueado[id] = true;
        
        
insertar_jugador_a_la_tabla(id);
        
SQL_FreeHandle(query);
    }
    else
    {
        
g_logueado[id] = true;

        
//SQL_ReadResult(0, nombre, 31);
        
g_estadistica[id][KILLS]     = SQL_ReadResult(query1);
        
g_estadistica[id][MUERTES]   = SQL_ReadResult(query2);
        
g_estadistica[id][HEADSHOTS] = SQL_ReadResult(query3);
        
g_estadistica[id][FAKASOS]   = SQL_ReadResult(query4);
        
g_estadistica[id][PUNTOS_DE_RANK] = SQL_ReadResult(query5);

        
SQL_FreeHandle(query);
    }

    return 
PLUGIN_HANDLED;    
}

public 
guardar_datos(id)
{
    if (!
JUGADOR_CONECTADO(id) || !g_logueado[id])
        return 
PLUGIN_HANDLED;

    
// Se que ya esta la variable de logueado y en teoria los bots no deberian guardar datos,
    // pero si se cambia a la mitad de una partida hacemos que tenga efecto al momento. [sino solo comenta las dos linea de abajo]    
    
if (get_pcvar_num(cvar_ignorar_bots) && is_user_bot(id)) 
        return 
PLUGIN_HANDLED;    

    
// Seteamos los puntos de rank
    
g_estadistica[id][PUNTOS_DE_RANK] = (g_estadistica[id][KILLS] + g_estadistica[id][HEADSHOTS] + g_estadistica[id][FAKASOS]) - g_estadistica[id][MUERTES];    
    
    new 
Handlequeryquery SQL_PrepareQuery(g_sql_conexion,
    
"UPDATE `%s` \
    SET \
    Kills='%d', \
    Muertes='%d', \
    Headshots='%d', \
    Fakasos='%d', \
    PuntosDeRank='%d' \
    WHERE `Jugador`=^"
%s^""data_sql[4], g_estadistica[id][KILLS], g_estadistica[id][MUERTES], g_estadistica[id][HEADSHOTS], g_estadistica[id][FAKASOS], g_estadistica[id][PUNTOS_DE_RANK], g_usuario[id]);

    if (!
SQL_Execute(query))
        
SQL_ERROR(query_,_"guardar_datos(id)"g_usuario[id]);
    else 
        
SQL_FreeHandle(query);

    return 
PLUGIN_HANDLED;
}


insertar_jugador_a_la_tabla(id)
{
    new 
Handlequery;
    
query SQL_PrepareQuery(g_sql_conexion"INSERT INTO `%s` (Jugador) VALUES (^"%s^")"data_sql[4], g_usuario[id]);

    if (!
SQL_Execute(query))
    {
        
SQL_ERROR(query__"insertar_jugador_a_la_tabla(id)"g_usuario[id]);
        return;    
    }

    
SQL_FreeHandle(query);
    
log_to_file("SQL_JUGADORES_REGISTRADOS.txt""[JUGADOR: %s] Añadido a la tabla."g_usuario[id]);

    
// Aumentamos el valor en la tabla donde guardaremos la cantidad de usuarios registrados
    
g_sql_jugadores_registrados++;
    
query SQL_PrepareQuery(g_sql_conexion"UPDATE `%s` SET `JugadoresRegistrados`='%d'"data_sql[5], g_sql_jugadores_registrados);

    if (!
SQL_Execute(query))
    {
        
SQL_ERROR(querydata_sql[5], _"insertar_jugador_a_la_tabla(id)"g_usuario[id]);
        return;
    }

    
SQL_FreeHandle(query);
    
log_to_file("SQL_NUMERO_DE_JUGADORES_REGISTRADOS.txt""total: %d"g_sql_jugadores_registrados);
}

MySQL_INIT()
{
    new 
error;

    
#if defined MODO_MYSQL

    
g_sql_tuple SQL_MakeDbTuple(data_sql[0], data_sql[1], data_sql[2], data_sql[3]);

    if (!
g_sql_tuple
    {
        
log_amx("[MySQL] Error al intentar conectar con la base de datos, revisa que los datos esten escritos correctamente.");
        
set_fail_state("[MySQL] Error al intentar conectar con la base de datos, revisa que los datos esten escritos correctamente.");
        
pause("a");
        return;
    }

    
#else

    
new get_tipo[12];
    
SQL_SetAffinity("sqlite");
    
SQL_GetAffinity(get_tiposizeof (get_tipo));

    
g_sql_tuple SQL_MakeDbTuple("""""""sql_bd_top15");

    if (!
equali(get_tipo"sqlite"))
    {
        
log_amx("[SQL] Error al intentar conectar con la base de datos, revisa que los datos esten escritos correctamente.");
        
set_fail_state("[SQL] Error al intentar conectar con la base de datos, revisa que los datos esten escritos correctamente.");
        
pause("a");
        return;
    }

    
#endif
        
    
g_sql_conexion SQL_Connect(g_sql_tupleerrorg_sql_errorcharsmax(g_sql_error));

    if (
g_sql_conexion == Empty_Handle)
    {
        
server_print("[SQL] Error al crear la conexion.");
        
set_fail_state("[SQL] Error al crear la conexion.");    
        
pause("a");
        return;
    }

    
// Si todo salió bien creamos las tablas automaticamente
    
MySQL_CREAR_TABLAS();
}

MySQL_CREAR_TABLAS()
{
    static 
len;
    
len 0;

    
len += formatex(g_sql_txt_query[len], charsmax(g_sql_txt_query) - len"CREATE TABLE IF NOT EXISTS `%s`"data_sql[4]);
    
len += formatex(g_sql_txt_query[len], charsmax(g_sql_txt_query) - len" (");
    
len += formatex(g_sql_txt_query[len], charsmax(g_sql_txt_query) - len"Jugador varchar(32) NOT NULL UNIQUE, ");
    
len += formatex(g_sql_txt_query[len], charsmax(g_sql_txt_query) - len"Kills int NOT NULL DEFAULT '0', ");
    
len += formatex(g_sql_txt_query[len], charsmax(g_sql_txt_query) - len"Muertes int NOT NULL DEFAULT '0', ");
    
len += formatex(g_sql_txt_query[len], charsmax(g_sql_txt_query) - len"Headshots int NOT NULL DEFAULT '0', ");
    
len += formatex(g_sql_txt_query[len], charsmax(g_sql_txt_query) - len"Fakasos int NOT NULL DEFAULT '0', ");
    
len += formatex(g_sql_txt_query[len], charsmax(g_sql_txt_query) - len"PuntosDeRank int NOT NULL DEFAULT '0'");
    
len += formatex(g_sql_txt_query[len], charsmax(g_sql_txt_query) - len" )");

    new 
Handlequery;
    
query SQL_PrepareQuery(g_sql_conexiong_sql_txt_query);

    if (!
SQL_Execute(query))
    {
        
SQL_ERROR(query__"MySQL_CREAR_TABLAS()""");
        return;
    }

    
SQL_FreeHandle(query);

    
g_sql_txt_query[0] = EOS;
    
len 0;

    
len += formatex(g_sql_txt_query[len], charsmax(g_sql_txt_query) - len"CREATE TABLE IF NOT EXISTS `%s`"data_sql[5]);
    
len += formatex(g_sql_txt_query[len], charsmax(g_sql_txt_query) - len" (");
    
len += formatex(g_sql_txt_query[len], charsmax(g_sql_txt_query) - len"JugadoresRegistrados int NOT NULL UNIQUE");
    
len += formatex(g_sql_txt_query[len], charsmax(g_sql_txt_query) - len" )");

    
query SQL_PrepareQuery(g_sql_conexiong_sql_txt_query);

    if (!
SQL_Execute(query))
    {
        
SQL_ERROR(query__"MySQL_CREAR_TABLAS()""");
        return;
    }

    
SQL_FreeHandle(query);

    
// Si tenemos ya jugadores registramos obtenemos el numero total de ello
    
g_sql_jugadores_registrados 0;

    
query SQL_PrepareQuery(g_sql_conexion"SELECT `JugadoresRegistrados` FROM `%s`"data_sql[5]);

    if (!
SQL_Execute(query))
    {
        
SQL_ERROR(querydata_sql[5], _"MySQL_CREAR_TABLAS()""");
        return;

    }

    if (
SQL_NumResults(query))
    {
        
g_sql_jugadores_registrados SQL_ReadResult(query0);
        
SQL_FreeHandle(query);
    }
    else
    {
        
SQL_FreeHandle(query);

        
query SQL_PrepareQuery(g_sql_conexion"INSERT INTO `%s` (JugadoresRegistrados) VALUES (0)"data_sql[5]);

        if (!
SQL_Execute(query))
        {
            
SQL_ERROR(querydata_sql[5], _"MySQL_CREAR_TABLAS()""");
            return;
        }

        
SQL_FreeHandle(query);
    }
}

public 
clcmd_top15(id)
{
    
TOP15(id);
    return 
PLUGIN_HANDLED;
}

public 
clcmd_rank(id)
{
    
MENU_RANK(id);
    return 
PLUGIN_HANDLED;
}

MENU_RANK(id)
{
    new 
menusz_txt[211], sz_rank[64];

    
iRANK(idsz_rankcharsmax(sz_rank));

    
formatex(sz_txtcharsmax(sz_txt), "\d+\r Mi Rank^n^n\
    \y+\w Rank:\r %s^n\
    \y+\w Kills:\r %s^n\
    \y+\w Muertes:\r %s^n\
    \y+\w Headshots:\r %s^n\
    \y+\w Kills con cuchillo:\r %s^n"
,
    
sz_rankPUNTO(g_estadistica[id][KILLS]), PUNTO(g_estadistica[id][MUERTES]), PUNTO(g_estadistica[id][HEADSHOTS]), PUNTO(g_estadistica[id][FAKASOS]));

    
menu menu_create(sz_txt"hdr_menu_rank");
    
menu_additem(menu"Cerrar menú");

    
menu_setprop(menuMPROP_EXITMEXIT_NEVER);
    
menu_display(idmenu);
}
public 
hdr_menu_rank(idmenuiditem)
{
    if (!
JUGADOR_CONECTADO(id))
    {
        
menu_destroy(menuid);
        return 
PLUGIN_HANDLED;
    }

    
menu_destroy(menuid);
    return 
PLUGIN_HANDLED;
}

TOP15(id)
{
    new 
Handlequery;
    
query SQL_PrepareQuery(g_sql_conexion"SELECT * FROM `%s` ORDER BY `PuntosDeRank` DESC LIMIT 15"data_sql[4]);

    if (!
SQL_Execute(query))
    {
        
client_print_color(id0"^4[TOP 15]^1 No es posible ver el TOP en este momento.");
        
SQL_ERROR(query__"TOP15(id)"g_usuario[id]);
        return;
    }
    else if (!
SQL_NumResults(query))
    {
        
SQL_FreeHandle(query);
        
client_print_color(id0"^4[TOP 15]^1 No es posible ver el TOP en este momento.");
        return;
    }
    else
    {
        static 
szmotd[9000];
        new 
lennombre[32], pts;
        new 
posicionposicion 0;

        
// Edicion del MOTD                
        
enum COLOR_LETRAS 0COLOR_LETRAS_DEL_TITULOCOLOR_DEL_FONDOCOLOR_GENERALMAX_VARIEDAD };
        new 
colores[MAX_VARIEDAD][32], tipo_de_letra[11];

        
format(colores[COLOR_LETRAS],             31"FFFFFF");
        
format(colores[COLOR_LETRAS_DEL_TITULO],  31"FFA40F");
        
format(colores[COLOR_GENERAL],            31"890A0A");
        
format(colores[COLOR_DEL_FONDO],          31"0B0B0B");
        
format(tipo_de_letracharsmax(tipo_de_letra), "Century Gothic");

        
// Formato del MOTD
        
len format(szmotd[len], charsmax(szmotd) - len"<STYLE>\
        body\
        {background:#%s;\
        color:#%s;\
        font-family:'%s'}\
        table\
        {width:100%%;\
        line-height:280%%;\
        font-size:13px}\
        .q\
        {border:4px solid #%s}\
        .b\
        {background:#%s}\
        </STYLE>\
        <table cellpadding=0 cellspacing=1 border=0>"
colores[COLOR_DEL_FONDO], colores[COLOR_LETRAS], tipo_de_letracolores[COLOR_DEL_FONDO], colores[COLOR_LETRAS]);

        
// Detalles del MOTD
        
len += format(szmotd[len], charsmax(szmotd) - len"<tr align=center bgcolor=#%s>\
        <th width=1%%>\
        <p style='color:#%s'> # </p>\
        <th width=6%% align=center>\
        <p style='color:#%s'> Jugador </p>\
        <th width=8%% align=center>\
        <p style='color:#%s'> Puntos de Rank</p>"
colores[COLOR_GENERAL], colores[COLOR_LETRAS_DEL_TITULO], colores[COLOR_LETRAS_DEL_TITULO], colores[COLOR_LETRAS_DEL_TITULO]);

        while (
SQL_MoreResults(query))
        {
            
posicion++;

            
SQL_ReadResult(query0nombrecharsmax(nombre));
            
pts SQL_ReadResult(query5);

            
// Info del Jugador
            
len += format(szmotd[len], charsmax(szmotd) - len"<tr align=center>\
            <td>\
            %d\
            <td align=center>\
            %s\
            <td>\
            %s"
posicionnombrePUNTO(pts));

            
SQL_NextRow(query);
        }

        
SQL_FreeHandle(query);
        
show_motd(idszmotd"TOP 15");
    }
}

// _________
//
// EXTRAS
// _________

JUGADOR_CONECTADO(idbooleliminar_bit false)
{
    if (
OBTENER_BIT_DEL_JUGADOR(g_conectadoid))
    {
        if (
eliminar_bitELIMINAR_BIT_DEL_JUGADOR(g_conectadoid);
        return 
true;
    }

    return 
false;    
}

SQL_ERROR(Handle:querytabla[] = ""len_tabla 20funcion[], j[]/*, linea_de_la_funcion[] = "nulo"*/)
{
    
/* seria la tabla principal de todo, por ende lo dejo por defecto para rellenar este campo */
    
if (!strlen(tabla))
        
format(tablalen_tabladata_sql[4]);

    
SQL_QueryError(queryg_sql_errorcharsmax(g_sql_error));

    if (!
strlen(j))
    {
        
server_print("[SQL] [TABLA: %s]: Error '%s' en la funcion: %s"tablag_sql_errorfuncion);
        
log_to_file("SQL_ERROR.txt""[TABLA: %s] ERROR '%s' EN LA FUNCION: %s"tablag_sql_errorfuncion);
    }
    else
    {
        
server_print("[SQL] [TABLA: %s] [JUGADOR: %s]: Error '%s' en la funcion: %s"tablajg_sql_errorfuncion);
        
log_to_file("SQL_ERROR.txt""[TABLA: %s] [JUGADOR: %s] ERROR '%s' EN LA FUNCION: %s"tablajg_sql_errorfuncion);
    }

    
SQL_FreeHandle(query);
}

stock PUNTO(n)

    new 
countistr[29], str2[35], len
    num_to_str
(nstrcharsmax(str))
    
len strlen(str)
    
    for (
0leni++)
    {
        if (
!= && ((len i) %== 0))
        {
            
add(str2charsmax(str2), "."1)
            
count++
            
add(str2[i+count], 1str[i], 1)
        }
        else 
add(str2[i+count], 1str[i], 1)
    }

    return 
str2;
}

iRANK(idstr[], maxlen)
{
    new 
Handlequery;
    
query SQL_PrepareQuery(g_sql_conexion"SELECT (COUNT(*) + 1) AS pos FROM `%s` WHERE `PuntosDeRank` > '%d'"data_sql[4], g_estadistica[id][PUNTOS_DE_RANK]);

    
format(strmaxlen"No estas rankeado");

    if (!
SQL_Execute(query))
    {
        
SQL_ERROR(query__"iRANK(id, str[], maxlen)"g_usuario[id]);
        return;
    }

    if (
SQL_NumResults(query))
    {
        
format(strmaxlen"%d de %d \d[Puntos de Rank: %s]"SQL_ReadResult(query0), g_sql_jugadores_registradosPUNTO(g_estadistica[id][PUNTOS_DE_RANK]));
        
SQL_FreeHandle(query);
    }

___________________________________
SI NECESITAS UN PLUGIN TE LO HAGO $$$
COMUNICATE A MI DISCORD: emanuelitop15
Responder
#2
Bro que tal si lo haces por php
Responder
#3
gracias
Responder
#4
(17/12/2022, 11:27 PM)mv43986 escribió: Bro que tal si lo haces por php

Acá te dejo un php que arme para la web se ve así: https://imgur.com/a/1WkmKkX



<?php
// Configuración de la base de datos
$host = "host";
$usuario = "usuario";
$contrasena = "contrasena";
$base_de_datos = "base_de_datos";
$tabla = "tabla_principal";

// Conexión a la base de datos
$conexion = mysqli_connect($host, $usuario, $contrasena, $base_de_datos);

if (!$conexion) {
die("Error en la conexión a la base de datos: " . mysqli_connect_error());
}

// Consulta SQL para obtener el TOP 15
$query = "SELECT * FROM $tabla ORDER BY PuntosDeRank DESC LIMIT 15";
$resultado = mysqli_query($conexion, $query);

if (!$resultado) {
die("Error en la consulta SQL: " . mysqli_error($conexion));
}

// Definir URLs de las imágenes de trofeos para las tres primeras posiciones
$trofeos = array(
1 => "https://nubecon.com.ar/uploads/monthly_2023_07/oro.png",
2 => "https://nubecon.com.ar/uploads/monthly_2023_07/plata.png",
3 => "https://nubecon.com.ar/uploads/monthly_2023_07/bronce.png"
);
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>TOP 15</title>
<style>
.container {
max-width: 1500px;
margin: 0 auto;
background-color: #141824;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
padding: 20px;
}
table {
width: 100%;
border-collapse: collapse;
}
th, td {
padding: 10px;
text-align: left;
}
th {
background-color: #1a2033;
color: #fff;
}
tr:nth-child(even) {
background-color: #3b435a;
}
tr:hover {
background-color: #222635;
}
h1 {
text-align: center;
font-size: 24px;
margin-bottom: 20px;
color: #333;
}
</style>
</head>
<body>
<div class="container">
<h1>TOP 15</h1>
<table>
<tr>
<th>Posición</th>
<th>Jugador</th>
<th>Puntos de Rank</th>

<th>Trofeo</th> <!-- Agregamos una columna para el trofeo -->
</tr>
<?php
$posicion = 1;
while ($fila = mysqli_fetch_assoc($resultado)) {
$jugador = $fila['Jugador'];
$puntosDeRank = $fila['PuntosDeRank'];

// Verificar si la posición actual tiene un trofeo
if (isset($trofeos[$posicion])) {
$trofeo = $trofeos[$posicion];
} else {
$trofeo = ""; // Si no hay trofeo, dejarlo en blanco
}

// Mostrar la imagen del trofeo correspondiente
if ($trofeo != "") {
echo "<tr><td>$posicion</td><td>$jugador</td><td>$puntosDeRank</td><td><img src='$trofeo' alt='$trofeo' width='30' height='30'></td></tr>";
} else {
echo "<tr><td>$posicion</td><td>$jugador</td><td>$puntosDeRank</td><td></td></tr>"; // Si no hay trofeo, dejar la celda vacía
}

$posicion++;
}
?>
</table>
</div>
</body>
</html>

<?php
// Cerrar la conexión a la base de datos
mysqli_close($conexion);
?>
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)