Jump to content

una ayuda para cargar varios resultados de una db a una list


JuanM27

Recommended Posts

hola buenos dias.

estoy haciendo un sistema de clanes.

ya lo tengo casi listo el cual lo estoy haciendo en una base de datos MySql

pero tengo un problema con una list en la gui.

la gui se me crea correctamente etc, solo que se que tengo mal la consulta en el serverside

aca se lo dejo como lo tengo, nose si estara bien (supongo que esta mal)

me podria decir como lo tengo que hacer para que

cargue todos los clanes en un lista por favor...

addEvent ("PidoLista", true) 
function PidoLista() 
master = dbQuery(link, "SELECT nombreclan FROM clanes") 
local queryResult = dbPoll ( master , -1 ) 
local Clanes = queryResult[1] 
if Clanes == nil then 
else 
for i,v in ipairs(Clanes) do 
triggerClientEvent(source,"ListaClanes",source,Clanes) 
end 
dbFree(master) 
end 
end 
addEventHandler( "PidoLista", getRootElement(), PidoLista ) 

y en el clientside tengo de esta manera.

addEvent("ListaClanes",true) 
function ListaClanes(Clan) 
    local playerList = guiCreateGridList ( 0.01, 0.09, 0.90, 0.75, true, theWindowCla1 ) 
    local column = guiGridListAddColumn( playerList, "Clanes", 0.75 ) 
    if ( column ) then 
            local row = guiGridListAddRow ( playerList ) 
            guiGridListSetItemText ( playerList, row, column, Clan, false, false ) 
    end 
end 
addEventHandler ("ListaClanes", getRootElement(), ListaClanes) 

yo llamo el triggerServerEvent en el evento onClientGUIClick

lo dejo por las dudas.

function guiClick (button, state, absoluteX, absoluteY) 
    if (source == CerrarClan) then  
        guiSetVisible ( theWindowCla, false ) 
        showCursor ( false ) 
    elseif (source == creaClanBoton ) then 
    local text = guiGetText ( editCraClanes ) 
        triggerServerEvent("CreaClan", getLocalPlayer(), text) 
    elseif (source == VerListaClan ) then 
    menuShowClanes1() 
    elseif (source == CerraVentanaList) then 
    guiSetVisible ( theWindowCla1, false ) 
    guiSetVisible ( theWindowCla, true ) 
  end 
end 
addEventHandler ("onClientGUIClick", getRootElement(), guiClick) 

function menuShowClanes1 () 
    visableornot1 = guiGetVisible (theWindowCla1) 
        triggerServerEvent("PidoLista", localPlayer) 
    if (visableornot1 == true) then 
        guiSetVisible (theWindowCla1, false) 
        showCursor (false) 
    end 
    if (visableornot1 == false) then 
        guiSetVisible (theWindowCla1, true) 
        showCursor (true) 
        guiSetVisible ( theWindowCla, false ) 
        ListaClanes() 
    end 
end 

bueno espero que me puedan ayudar..

desde ya muchas gracias

Link to comment

No te aconsejo hacer el loop server side, mejor envia la tabla de los clanes y luego haces el loop en el client side:

--client side:

addEvent("ListaClanes",true) 
function ListaClanes(clanes) 
    local playerList = guiCreateGridList ( 0.01, 0.09, 0.90, 0.75, true, theWindowCla1 ) 
    local column = guiGridListAddColumn( playerList, "Clanes", 0.75 ) 
    if ( column ) then 
        for index, clan in ipairs ( clanes ) do 
            local row = guiGridListAddRow ( playerList ) 
            guiGridListSetItemText ( playerList, row, column, clan [ "elNombreDeLaColumna" ], false, false ) -- Cambia "elNombreDeLaColumna". 
        end 
    end 
end 
addEventHandler ("ListaClanes", getRootElement(), ListaClanes) 

-- server side:

addEvent ("PidoLista", true) 
function PidoLista ( ) 
    local master = dbQuery ( link, "SELECT nombreclan FROM clanes" ) 
    local queryResult = dbPoll ( master , -1 ) 
    if ( queryResult ~= nil ) then 
        triggerClientEvent ( source, "ListaClanes", source, queryResult ) 
    end 
    dbFree ( master ) 
end 
addEventHandler ( "PidoLista", getRootElement(), PidoLista ) 

Mira el comentario que puse en el client side, es muy importante.

Link to comment
  • Recently Browsing   0 members

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