Raised This Month: $51 Target: $400
 12% 

[Tutorial] Crear un Top15 en un menú con SQL


  
 
 
Thread Tools Display Modes
Author Message
Kiske
Veteran Member
Join Date: May 2009
Old 12-07-2012 , 04:58   [Tutorial] Crear un Top15 en un menú con SQL
#1

Hola,
Lo más probable es que cualquier persona que sepa utilizar SQL en Pawn es capaz de crear su propio Top en un menú, pero como siempre a la larga hay gente que recién aprendió SQL o tiene la duda de como hacer un Top en un menú, creo yo, que ésta es la mejor forma de hacerlo:

EJEMPLO: En este ejemplo los campos que se utilizan son "NOMBRE" y "NIVEL".

NOTA: Solamente voy a mostrar el código que hace esto posible, no voy a añadir nada extra y las cosas que estén entre * deben reemplazarlo por lo que corresponda.

NOTA 2: Solamente pongo comentarios en las cosas que me parece que deberían llevar una explicación, pero como es fácil de entender, no hay mucha explicación.

PHP Code:
#include <sqlx>

new g_sql_error[512];

new 
g_top_menu;
new 
g_block_top_menu;

public 
plugin_init()
{
    
set_task(0.4"sqlLoadTop");
    
    
register_clcmd("say /top15""clcmd_Top15");
}

public 
sqlLoadTop()
{
    new 
Handle:sqlQuery;
    
// Preparamos la consulta. Seleccionamos los datos NOMBRE y NIVEL de la tabla USUARIOS y los ordenamos en orden DESCENDIENTE, luego, se toman los primeros 15 resultados.
    
sqlQuery SQL_PrepareQuery(*Handle:db*, "SELECT nombre, nivel FROM usuarios ORDER BY nivel DESC LIMIT 15;");
    
    if(!
SQL_Execute(sqlQuery)) // Si no se ejecuta la consulta...
        
checkError(sqlQuery1);
    else if(
SQL_NumResults(sqlQuery)) // Si la consulta arroja resultados...
    
{
        
g_top_menu menu_create("\yTOP 15 - Niveles""menu_Nothing");
        
        
g_block_top_menu 0;
        
        new 
sData[128];
        new 
sName[32];
        new 
sPosition[2];
        
        new 
iLevel;
        new 
iPosition;
        
        while(
SQL_MoreResults(sqlQuery)) // Mientras la consulta arroje un resultado...
        
{
            ++
iPosition;
            
            
SQL_ReadResult(sqlQuery0sNamecharsmax(sName));
            
iLevel SQL_ReadResult(sqlQuery1);
            
            
num_to_str(iPositionsPositioncharsmax(sPosition));
            
            
formatex(sDatacharsmax(sData), "\y%s \r- \wNivel \y%d"sNameiLevel);
            
            
menu_additem(g_top_menusDatasPosition);
            
            
SQL_NextRow(sqlQuery); // Pasamos a la siguiente fila de la consulta
        
}
        
        
menu_setprop(g_top_menuMPROP_NEXTNAME"Siguiente");
        
menu_setprop(g_top_menuMPROP_BACKNAME"Atrás");
        
menu_setprop(g_top_menuMPROP_EXITNAME"Salir");
        
        
SQL_FreeHandle(sqlQuery); // Cerramos la consulta
    
}
    else 
// Si la consulta no arroja resultados, ponemos la variable que bloquea el menu en true
    
{
        
g_block_top_menu 1;
        
SQL_FreeHandle(sqlQuery); // Cerramos la consulta
    
}
}

public 
checkError(const Handle:sqlQuery, const query_num)
{
    
SQL_QueryError(sqlQueryg_sql_errorcharsmax(g_sql_error)); // Guardamos el error en la variable g_sql_error
    
    
log_to_file("error_sql.log""- CONSULTA: %d - ERROR: %s"query_numg_sql_error); // Logeamos en un archivo el error y desde que consulta vino
    
    
SQL_FreeHandle(sqlQuery); // Cerramos la consulta
}

public 
clcmd_Top15(id)
{
    if(!
is_user_connected(id))
        return 
PLUGIN_HANDLED;
    
    if(
g_block_top_menu)
    {
        
client_print(idprint_chat"* El TOP15 está vacío!");
        return 
PLUGIN_HANDLED;
    }
    
    
menu_display(idg_top_menu);
    
    return 
PLUGIN_HANDLED;
}

public 
menu_Nothing(idmenuiditem)
{
    if(!
is_user_connected(id) || item == MENU_EXIT)
        return 
PLUGIN_HANDLED;
    
    
clcmd_Top15(id);
    return 
PLUGIN_HANDLED;

Kiske is offline
Send a message via Skype™ to Kiske
Roccoxx
AlliedModders Donor
Join Date: Jan 2012
Location: Argentina
Old 12-07-2012 , 08:54   Re: [Tutorial] Crear un Top15 en un menú con SQL
#2

muy bueno gracias se me aclararon muchas cosas
__________________
Tutorials here (Spanish)

Like as another Pijudo said: "Tired and retired"
Roccoxx is offline
Send a message via MSN to Roccoxx
Neeeeeeeeeel.-
Some Guy Yellin'
Join Date: Jul 2010
Location: Argentina
Old 12-07-2012 , 12:20   Re: [Tutorial] Crear un Top15 en un menú con SQL
#3

Buen tutorial, hacía falta ya que muchos lo pedían...
__________________
Neeeeeeeeeel.- is offline
Send a message via Skype™ to Neeeeeeeeeel.-
gladius
Veteran Member
Join Date: Jul 2008
Location: Santiago, Chile
Old 12-08-2012 , 13:37   Re: [Tutorial] Crear un Top15 en un menú con SQL
#4

Que bien.

Podrías hacer una versión con ThreadQuery, para aquellos con SQL remoto.
__________________
Proyects
Kreedz Chile Mod [100%] (Fixing some details).

gladius is offline
Send a message via MSN to gladius Send a message via Skype™ to gladius
xLeoNNN
Veteran Member
Join Date: Sep 2010
Location: de_dust2
Old 12-08-2012 , 18:27   Re: [Tutorial] Crear un Top15 en un menú con SQL
#5

Buen tutorial, después lo leo mejor, yo me acuerdo que antiguamente, creaba el TOP en un host (en php, gracias destro e.e), y luego mostraba un motd in-game, con la dirección de la pag, como dije, "antiguamente" XDD
__________________
xLeoNNN is offline
Send a message via MSN to xLeoNNN
Kiske
Veteran Member
Join Date: May 2009
Old 12-08-2012 , 18:29   Re: [Tutorial] Crear un Top15 en un menú con SQL
#6

Quote:
Originally Posted by gladius View Post
Que bien.

Podrías hacer una versión con ThreadQuery, para aquellos con SQL remoto.
Nunca lo utilicé, sory
Kiske is offline
Send a message via Skype™ to Kiske
BlackFur
BANNED
Join Date: Apr 2012
Location: RCL
Old 12-08-2012 , 18:30   Re: [Tutorial] Crear un Top15 en un menú con SQL
#7

GJ Kiske aunque no se nada de SQL

PD : me podrias agregar a FB y me enseñas :c
BlackFur is offline
gladius
Veteran Member
Join Date: Jul 2008
Location: Santiago, Chile
Old 12-09-2012 , 01:27   Re: [Tutorial] Crear un Top15 en un menú con SQL
#8

Quote:
Originally Posted by Kiske View Post
Nunca lo utilicé, sory
Aprenda mijo.
__________________
Proyects
Kreedz Chile Mod [100%] (Fixing some details).

gladius is offline
Send a message via MSN to gladius Send a message via Skype™ to gladius
Kiske
Veteran Member
Join Date: May 2009
Old 12-09-2012 , 10:44   Re: [Tutorial] Crear un Top15 en un menú con SQL
#9

Quote:
Originally Posted by gladius View Post
Aprenda mijo.
No me es necesario.
Kiske is offline
Send a message via Skype™ to Kiske
gladius
Veteran Member
Join Date: Jul 2008
Location: Santiago, Chile
Old 12-09-2012 , 12:38   Re: [Tutorial] Crear un Top15 en un menú con SQL
#10

Ojalá nunca se te pegue al cargar datos con PrepareQuery, de otras maneras va a ser necesario aprender
__________________
Proyects
Kreedz Chile Mod [100%] (Fixing some details).

gladius is offline
Send a message via MSN to gladius Send a message via Skype™ to gladius
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 13:05.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode