Jump to content

[Duda] MySQL


Narutimmy

Recommended Posts

Posted

Hola bueno, me preguntaba si habia alguna forma de conectar una base de datos mysql con el servidor? para obtener siertos datos,..

planeo usarlo para el sistema vip de mi servidor, lo tengo echo pro acl, pero nose, me es mas facil ajustarme a una web, alguna idea?

Posted
Funciones:
  
dbConnect 
dbExec 
dbQuery 
  

mm, nunca lo usado pero... si por ejemplo yo quiero obtener el rango... como seria, esque no tengo ni idea, si fueras tan amable :S

4AWa8HX.png

Posted

SELECT user_rango FROM nombreTabla WHERE id = n ó en su defecto WHERE user_name = nombre

tip: no uses md5 para las password, ya no es tan seguro, mejor usa sha

Posted
SELECT user_rango FROM nombreTabla WHERE id = n ó en su defecto WHERE user_name = nombre

tip: no uses md5 para las password, ya no es tan seguro, mejor usa sha

mmm y como ago para conectar? supongo que pide el pass , ip y demas no?, algun ejemplo.. por favor :D

Posted

Un ejemplo:

local result = dbPoll( dbQuery( dataBase, "SELECT * FROM NOMBRE_TABLA WHERE user_name=?", 'Narutimmy' ), -1  ) 
         
                if #result > 0 then 
                    outputChatBox( result[1].user_rango ) 
                end 
                 
    end 
) 

*No veo el nombre de la tabla en la foto, así que en vez de eso escribí 'NOMBRE_TABLA'.

*El -1 es el tiempo de espera para la solicitud, se mide en milisegundos y el -1 es tiempo infinito.

Para que entiendas, 'dbPoll' devolverá una tabla con todos los resultados que 'dbQuery' encuentre, en este caso todos los 'user_name' deberían ser distintos (hay que revisar que 'result' sea una tabla con al menos un dato para saber que se encontraron resultados), por lo tanto solo devolverá una tabla con un resultado y con esta estructura:

result = { 
[1] = { id = 1, user_name = 'Narutimmy', user_password = 'MD5 Hash (que tu censuraste )', user_email = "[email protected]", user_rango = 1, user_puntos = 238, user_posts = 11, user_comentarios = 13 } 
} 

Si quisieras conseguir los datos al loggearse el usuario, deberías hacer algo así:

addEventHandler( 'onPlayerLogin', root, 
    function(_, account) 
        local result = dbPoll( dbQuery( dataBase, "SELECT * FROM NOMBRE_TABLA WHERE user_name=?", getAccountName( account ) ), -1  ) 
         
                if #result > 0 then 
                                                             outputChatBox( result[1].user_rango ) --Lo reemplazas por lo que quieras hacer con los datos. 
                end 
             
                 
    end 
) 

También, con una solicitud como esta:

dbQuery( dataBase, "SELECT user_rango FROM NOMBRE_TABLA WHERE user_name=?", 'Narutimmy'  ) 

Te devolverá solo el 'user_rango' sin tomar en cuenta los demás datos.

Espero haberme explicado bien, si me falto algo que alguien lo agregue o me corrija.

mmm y como ago para conectar? supongo que pide el pass , ip y demas no?, algun ejemplo.. por favor :D

Para esto utilizas 'dbConnect', en la misma wiki esta este ejemplo:

test_db = dbConnect( "mysql", "dbname=frank;host=1.2.3.4", "username", "password", "share=1" ) 

Posted
Un ejemplo:
local result = dbPoll( dbQuery( dataBase, "SELECT * FROM NOMBRE_TABLA WHERE user_name=?", 'Narutimmy' ), -1  ) 
         
                if #result > 0 then 
                    outputChatBox( result[1].user_rango ) 
                end 
                 
    end 
) 

*No veo el nombre de la tabla en la foto, así que en vez de eso escribí 'NOMBRE_TABLA'.

*El -1 es el tiempo de espera para la solicitud, se mide en milisegundos y el -1 es tiempo infinito.

Para que entiendas, 'dbPoll' devolverá una tabla con todos los resultados que 'dbQuery' encuentre, en este caso todos los 'user_name' deberían ser distintos (hay que revisar que 'result' sea una tabla con al menos un dato para saber que se encontraron resultados), por lo tanto solo devolverá una tabla con un resultado y con esta estructura:

result = { 
[1] = { id = 1, user_name = 'Narutimmy', user_password = 'MD5 Hash (que tu censuraste )', user_email = "[email protected]", user_rango = 1, user_puntos = 238, user_posts = 11, user_comentarios = 13 } 
} 

Si quisieras conseguir los datos al loggearse el usuario, deberías hacer algo así:

addEventHandler( 'onPlayerLogin', root, 
    function(_, account) 
        local result = dbPoll( dbQuery( dataBase, "SELECT * FROM NOMBRE_TABLA WHERE user_name=?", getAccountName( account ) ), -1  ) 
         
                if #result > 0 then 
                                                             outputChatBox( result[1].user_rango ) --Lo reemplazas por lo que quieras hacer con los datos. 
                end 
             
                 
    end 
) 

También, con una solicitud como esta:

dbQuery( dataBase, "SELECT user_rango FROM NOMBRE_TABLA WHERE user_name=?", 'Narutimmy'  ) 

Te devolverá solo el 'user_rango' sin tomar en cuenta los demás datos.

Espero haberme explicado bien, si me falto algo que alguien lo agregue o me corrija.

mmm y como ago para conectar? supongo que pide el pass , ip y demas no?, algun ejemplo.. por favor

Para esto utilizas 'dbConnect', en la misma wiki esta este ejemplo:

test_db = dbConnect( "mysql", "dbname=frank;host=1.2.3.4", "username", "password", "share=1" ) 

Oh, gracias, era justo lo que necesitaba, ahora solo me falta pensar en como inplementarlo, ya que no me habia pasado por la cabeza... que en la pagina los users unan 1 username y en el servidor usan otro la mayoria., Gracias

Posted

No estoy seguro, pero seria algo asi o esta mal :S?? @Alexs_Steel

local usernamedzf = getPlayerAccount(source) 
local dyf_db = dbConnect( "mysql", "dbname=frank;host=1.2.3.4", "username", "password", "share=1" ) 
local result = dbPoll( dbQuery( dyf_db, "SELECT * FROM u_miembros WHERE user_name=?", ..usernamedzf ), -1  ) 
        
                
  
  
addCommandHandler("give", 
function(pSource) 
if (result[1].user_rango == 3) then --- el 3 seria en rango VIP 
  
  
triggerClientEvent(pSource, "onGIPOpened", pSource)  
end 
end ) 

Posted

No defines 'source' en ningún lado, intenta conseguir los datos al identificarse.

local dyf_db = dbConnect( "mysql", "dbname=frank;host=1.2.3.4", "username", "password", "share=1" ) --Doy por hecho que reemplazaras los datos por los de tu base de datos. 
addEventHandler( 'onPlayerLogin', root, 
    function(_, account) 
        local result = dbPoll( dbQuery( dyf_db, "SELECT user_rango FROM u_miembros WHERE user_name=?", getAccountName( account ) ), -1  ) 
         
                if #result > 0 then 
                    if result[1].user_rango == 3 then 
                        setElementData( source, 'V.I.P', true ) 
                    end 
                end 
             
                 
    end 
) 
  
addCommandHandler( 'give', 
function( thePlayer ) 
  if getElementData( thePlayer, 'V.I.P' ) then 
    triggerClientEvent(thePlayer, "onGIPOpened", thePlayer) 
  end 
end 
)  

Posted
No defines 'source' en ningún lado, intenta conseguir los datos al identificarse.
local dyf_db = dbConnect( "mysql", "dbname=frank;host=1.2.3.4", "username", "password", "share=1" ) --Doy por hecho que reemplazaras los datos por los de tu base de datos. 
addEventHandler( 'onPlayerLogin', root, 
    function(_, account) 
        local result = dbPoll( dbQuery( dyf_db, "SELECT user_rango FROM u_miembros WHERE user_name=?", getAccountName( account ) ), -1  ) 
         
                if #result > 0 then 
                    if result[1].user_rango == 3 then 
                        setElementData( source, 'V.I.P', true ) 
                    end 
                end 
             
                 
    end 
) 
  
addCommandHandler( 'give', 
function( thePlayer ) 
  if getElementData( thePlayer, 'V.I.P' ) then 
    triggerClientEvent(thePlayer, "onGIPOpened", thePlayer) 
  end 
end 
)  

Bueno, edite todo pero.... al final me da este error:

Lx59fGk.png

Posted
¿Seguro de que todo esta bien? (Host, contraseña, nombre)

mmm... ya se porque no funciona, gracias. es un problema con la MySQL que no permite coneccione externas :?

EDITE: Listo todo funcionando, Gracias :D

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...