SA-MP Forums Archive
[Dialog] Listing MySQL data inside a List Dialog - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: [Dialog] Listing MySQL data inside a List Dialog (/showthread.php?tid=376524)



[Dialog] Listing MySQL data inside a List Dialog - vIBIENNYx - 10.09.2012

Basically, I want to retrieve all the members from the MySQL database of a certain faction and display it inside the dialog, here's what I have so far:

pawn Code:
command(members, playerid, params[])
{
    if(PVar[playerid][factionID] < 1)
    {
        SendClientMessage(playerid, 0x66666666, "You are not currently in a faction");
        return 1;
    }
    else
    {
        new Query[128], members, memberrankdisp[24];
        new resultline[200], membername[24], memberrank;
        new membersonline = 0, membersstring[128];
        new memberlist1[128];
        format(Query, sizeof(Query), "SELECT `username` & `factionRank` FROM `playerinfo` WHERE `factionID` = '%d'", PVar[playerid][factionID]);
        mysql_query(Query);
        if(mysql_fetch_row_format(resultline))
        {
            //you can now use sscanf, explode, split or strtok to split result
            sscanf(resultline,"p<|>s[24]d",membername, memberrank);
        }

        members = mysql_num_rows();
        for(new i=0; i < members; i++)
        {
            if(IsPlayerConnected(i))
            {
                membersonline++;
            }
        }
        format(membersstring, sizeof(membersstring), "%s - Members online: (%d/%d)", FVar[PVar[playerid][factionID]][factionname], membersonline, members);
        ShowPlayerDialog(playerid, MEMBERS, DIALOG_STYLE_LIST, membersstring, " ", "Close", "");
       
        for(new i; i < members; i++)
        {
            //
        }
        return 1;
    }
}
I want to add a line for each member too, any help would be appreciated.


Re: [Dialog] Listing MySQL data inside a List Dialog - CROSS_Hunter - 10.09.2012

i dont understand.. what do u mean by

I want to add a line for each member too


Re: [Dialog] Listing MySQL data inside a List Dialog - vIBIENNYx - 10.09.2012

Basically, have a member on each line inside the dialog.


Re: [Dialog] Listing MySQL data inside a List Dialog - HuSs3n - 10.09.2012

untested
pawn Code:
command(members, playerid, params[])
{
    if(PVar[playerid][factionID] < 1)
    {
        SendClientMessage(playerid, 0x66666666, "You are not currently in a faction");
        return 1;
    }
    else
    {
        new Query[128], members, memberrankdisp[24];
        new resultline[200], membername[24], memberrank;
        new membersonline = 0, membersstring[128];
        new memberlist1[128];
        format(Query, sizeof(Query), "SELECT `username` & `factionRank` FROM `playerinfo` WHERE `factionID` = '%d'", PVar[playerid][factionID]);
        mysql_query(Query);
        new dialog[1024];
        if(mysql_fetch_row_format(resultline))
        {
            //you can now use sscanf, explode, split or strtok to split result
            sscanf(resultline,"p<|>s[24]d",membername, memberrank);
            format(dialog,sizeof(dialog),"%s\n%s   %d",dialog,membername,memberrank);
        }

        members = mysql_num_rows();
        for(new i=0; i < members; i++)
        {
            if(IsPlayerConnected(i))
            {
                membersonline++;
            }
        }
        format(membersstring, sizeof(membersstring), "%s - Members online: (%d/%d)", FVar[PVar[playerid][factionID]][factionname], membersonline, members);
        ShowPlayerDialog(playerid, MEMBERS, DIALOG_STYLE_LIST, membersstring, dialog, "Close", "");

        for(new i; i < members; i++)
        {
            //
        }
        return 1;
    }
}



Re: [Dialog] Listing MySQL data inside a List Dialog - vIBIENNYx - 10.09.2012

There is an issue with this:

pawn Code:
format(Query, sizeof(Query), "SELECT `username` & `factionRank` FROM `playerinfo` WHERE `factionID` = '%d'", PVar[playerid][factionID]);
        mysql_query(Query);
It's not selecting the information correctly, any idea how I can work this?


Re: [Dialog] Listing MySQL data inside a List Dialog - TheArcher - 10.09.2012

pawn Code:
SELECT `username` & `factionRank`....
i think it's
pawn Code:
SELECT `username` AND `factionRank`



Re: [Dialog] Listing MySQL data inside a List Dialog - vIBIENNYx - 10.09.2012

Quote:
Originally Posted by TheArcher
View Post
pawn Code:
SELECT `username` & `factionRank`....
i think it's
pawn Code:
SELECT `username` AND `factionRank`
Nope.. "/


Re: [Dialog] Listing MySQL data inside a List Dialog - vIBIENNYx - 10.09.2012

Fixed it's now:

pawn Code:
format(Query, sizeof(Query), "SELECT `username`,`factionRank` FROM `playerinfo` WHERE `factionID` = '%d'", PVar[playerid][factionID]);
        mysql_query(Query);



Re: [Dialog] Listing MySQL data inside a List Dialog - TheArcher - 10.09.2012

Ah that's it, I didn't remember MySQL syntax however there were the problem glad you fixed it


Re: [Dialog] Listing MySQL data inside a List Dialog - vIBIENNYx - 10.09.2012

I changed the command to the following:

pawn Code:
command(members, playerid, params[])
{
    if(PVar[playerid][factionID] < 1)
    {
        SendClientMessage(playerid, 0x66666666, "You are not currently in a faction");
        return 1;
    }
    else
    {
        new Query[128], members, memberrankdisp[24];
        new resultline[200], membername[24], memberrank;
        new membersonline = 0, membersstring[128];
        new memberlist1[128];
        new dialog[1024];
        format(Query, sizeof(Query), "SELECT `username`, `factionRank` FROM `playerinfo` WHERE `factionID` = '%d'", PVar[playerid][factionID]);
        mysql_query(Query);
        mysql_store_result();
       
        memberrank = PVar[playerid][factionRank];
        for(new i=0; i < mysql_num_rows(); i++)
        {
            if(mysql_fetch_row_format(resultline))
            {
                //you can now use sscanf, explode, split or strtok to split result
                sscanf(resultline,"p<|>s[24]d", membername, memberrank);
                if(IsPlayerConnected(i))
                {
                    format(dialog,sizeof(dialog),"%s\n{004000}• {FFFFFF}%s, (%s | Rank: %d)",dialog, membername, FactionRankToName(PVar[playerid][factionID], memberrank), memberrank);
                }
                else
                {
                    format(dialog,sizeof(dialog),"%s\n{BF0000}• {FFFFFF}%s, (%s | Rank: %d)",dialog, membername, FactionRankToName(PVar[playerid][factionID], memberrank), memberrank);
                }
            }
        }
        members = mysql_num_rows();
        for(new i=0; i < members; i++)
        {
            if(IsPlayerConnected(i))
            {
                membersonline++;
            }
        }
        format(membersstring, sizeof(membersstring), "%s - Members online: {FFFFFF}(%d/%d)", FVar[PVar[playerid][factionID]][factionname], membersonline, members);
        ShowPlayerDialog(playerid, MEMBERS, DIALOG_STYLE_LIST, membersstring, dialog, "Close", "");
        return 1;
    }
}
BUT, As you can see here:

pawn Code:
if(IsPlayerConnected(i))
                {
                    format(dialog,sizeof(dialog),"%s\n{004000}• {FFFFFF}%s, (%s | Rank: %d)",dialog, membername, FactionRankToName(PVar[playerid][factionID], memberrank), memberrank);
                }
                else
                {
                    format(dialog,sizeof(dialog),"%s\n{BF0000}• {FFFFFF}%s, (%s | Rank: %d)",dialog, membername, FactionRankToName(PVar[playerid][factionID], memberrank), memberrank);
                }
It checks to see if the id of the player is online, rather than the name in the list, meaning if there are two members online, the top two will go green. Any ideas how to work around this?