Narutimmy Posted January 4, 2014 Share 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? Link to comment
MTA Team 0xCiBeR Posted January 4, 2014 MTA Team Share Posted January 4, 2014 (edited) Funciones: dbConnect dbExec dbQuery Edited January 4, 2014 by Guest Link to comment
Castillo Posted January 4, 2014 Share Posted January 4, 2014 executeSQLQuery es SQLite no MySQL. Link to comment
MTA Team 0xCiBeR Posted January 4, 2014 MTA Team Share Posted January 4, 2014 Mi error, Editado. Link to comment
Narutimmy Posted January 7, 2014 Author Share 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 Link to comment
Renkon Posted January 7, 2014 Share 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 Link to comment
Narutimmy Posted January 7, 2014 Author Share 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 Link to comment
Alexs Posted January 7, 2014 Share 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" ) Link to comment
Narutimmy Posted January 7, 2014 Author Share 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 Link to comment
Narutimmy Posted January 7, 2014 Author Share 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 ) Link to comment
Alexs Posted January 7, 2014 Share 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 ) Link to comment
Narutimmy Posted January 7, 2014 Author Share 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: Link to comment
Alexs Posted January 7, 2014 Share Posted January 7, 2014 ¿Seguro de que todo esta bien? (Host, contraseña, nombre) Link to comment
Narutimmy Posted January 7, 2014 Author Share 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 Link to comment
Recommended Posts