Narutimmy Posted January 4, 2014 Posted January 4, 2014 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?
MTA Team 0xCiBeR Posted January 4, 2014 MTA Team Posted January 4, 2014 (edited) Funciones: dbConnect dbExec dbQuery Edited January 4, 2014 by Guest
Narutimmy Posted January 7, 2014 Author Posted January 7, 2014 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
Renkon Posted January 7, 2014 Posted January 7, 2014 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
Narutimmy Posted January 7, 2014 Author Posted January 7, 2014 SELECT user_rango FROM nombreTabla WHERE id = n ó en su defecto WHERE user_name = nombretip: 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
Alexs Posted January 7, 2014 Posted January 7, 2014 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" )
Narutimmy Posted January 7, 2014 Author Posted January 7, 2014 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
Narutimmy Posted January 7, 2014 Author Posted January 7, 2014 No estoy seguro, pero seria algo asi o esta mal ?? @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 )
Alexs Posted January 7, 2014 Posted January 7, 2014 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 )
Narutimmy Posted January 7, 2014 Author Posted January 7, 2014 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:
Alexs Posted January 7, 2014 Posted January 7, 2014 ¿Seguro de que todo esta bien? (Host, contraseña, nombre)
Narutimmy Posted January 7, 2014 Author Posted January 7, 2014 ¿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
Recommended Posts