SA-MP Forums Archive
[Ajuda] Listagem de Dados [MYSQL] - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Listagem de Dados [MYSQL] (/showthread.php?tid=593129)



Listagem de Dados [MYSQL] - Caiton - 02.11.2015

Bom estou querendo fazer um comando em dialog listando todos os nicks que estiver com level 4 de tal variavel, onde a organizaзгo for igual a 1.
Alguйm pode fazer uma base pra me dar a lуgica ? й em mysql.


Re: Listagem de Dados [MYSQL] - garotin - 02.11.2015

Pra ficar mais fбcil, recomendo que vocк crie arrays MAX_PLAYERS, para que quando o player se conect vocк get os dados do mysql nessas arrays, ai fica mais simples de fazer.


Re: Listagem de Dados [MYSQL] - s0nny - 02.11.2015

Simples.

criaзгo da string principal:
Код:
new string[512];
Estrutura da query:

Код:
SELECT * FROM users WHERE level >= '4' AND org = '1'
Ler dados retornados:
Код:
for(new r; r < cache_num_rows(); r++)
{
//Aqui vocк pega os campos que quiser
//No exemplo abaixo vou pegar a variбvel nome do usuбrio e formatar a string
new cache_string[24];
cache_get_field_content(r, cache_string, "username");
format(string, 512, "%s%s\n", string, cache_string);

}
E no final a variбvel string vai conter uma estrutura com todos os nomes retornados da query


Re: Listagem de Dados [MYSQL] - Caiton - 02.11.2015

Quote:
Originally Posted by s0nny
Посмотреть сообщение
Simples.

criaзгo da string principal:
Код:
new string[512];
Estrutura da query:

Код:
SELECT * FROM users WHERE level >= '4' AND org = '1'
Ler dados retornados:
Код:
for(new r; r < cache_num_rows(); r++)
{
//Aqui vocк pega os campos que quiser
//No exemplo abaixo vou pegar a variбvel nome do usuбrio e formatar a string
new cache_string[24];
cache_get_field_content(r, cache_string, "username");
format(string, 512, "%s%s\n", string, cache_string);

}
E no final a variбvel string vai conter uma estrutura com todos os nomes retornados da query
Minha situaзгo ficou assim. e nгo listou nada :/

Код:
CMD:lista(playerid,params[])
{
	new Query[999];
	mysql_format(conectDB, Query, sizeof(Query), "SELECT * FROM pinfo WHERE emprego >= '4' AND org = '1'");
	mysql_function_query(conectDB, Query, true, "Listar", "i", playerid);
	return 1;
}
Код:
forward Listar(playerid);
public Listar(playerid)
{
	for(new r; r < cache_num_rows(); r++)
	{
		//Aqui vocк pega os campos que quiser
		//No exemplo abaixo vou pegar a variбvel nome do usuбrio e formatar a string
		new cache_string[24],string[500];
		cache_get_field_content(r, cache_string, "Nick");
		format(string, 512, "%s%s\n", string, cache_string);

	}
}



Re: Listagem de Dados [MYSQL] - n0minal - 02.11.2015

Quote:
Originally Posted by Caiton
Посмотреть сообщение
Minha situaзгo ficou assim. e nгo listou nada :/

Код:
CMD:lista(playerid,params[])
{
	new Query[999];
	mysql_format(conectDB, Query, sizeof(Query), "SELECT * FROM pinfo WHERE emprego >= '4' AND org = '1'");
	mysql_function_query(conectDB, Query, true, "Listar", "i", playerid);
	return 1;
}
Код:
forward Listar(playerid);
public Listar(playerid)
{
	for(new r; r < cache_num_rows(); r++)
	{
		//Aqui vocк pega os campos que quiser
		//No exemplo abaixo vou pegar a variбvel nome do usuбrio e formatar a string
		new cache_string[24],string[500];
		cache_get_field_content(r, cache_string, "Nick");
		format(string, 512, "%s%s\n", string, cache_string);

	}
}
Faltou dar um showplayerdialog com o conteъdo da string que vocк obteve, aconselho a usar "LIMIT" na sua query pra nгo ocorrer buffer overflow e sua lista acabar ficando incompleta ou grande demais...


Re: Listagem de Dados [MYSQL] - Caiton - 02.11.2015

Eu deixei assim у e nada :/ sу apareceu o dialog sem o conteъdo
Код:
CMD:lista(playerid)
{
	new Query[999];
	mysql_format(conectDB, Query, sizeof(Query), "SELECT * FROM pinfo WHERE cargo >= 4 AND faccoes = 1");
	mysql_function_query(conectDB, Query, true, "Listar", "i", playerid);
return 1;
}
Код:
forward Listar(playerid);
public Listar(playerid)
{
	for(new r; r < cache_num_rows(); r++)
	{
		//Aqui vocк pega os campos que quiser
		//No exemplo abaixo vou pegar a variбvel nome do usuбrio e formatar a string
		new cache_string[24],string[500];
		cache_get_field_content(r, cache_string, "Nick");
		format(string, 512, "%s%s\n", string, cache_string);
                ShowPlayerDialog(playerid, 512,  DIALOG_STYLE_MSGBOX, "{FF0000}Lista", string, "Sair", "");

	}
}



Re: Listagem de Dados [MYSQL] - n0minal - 02.11.2015

Tire o showplayerdialog do loop, deixa ele como return da callback:

Код:
forward Listar(playerid);
public Listar(playerid)
{
	for(new r; r < cache_num_rows(); r++)
	{
		//Aqui vocк pega os campos que quiser
		//No exemplo abaixo vou pegar a variбvel nome do usuбrio e formatar a string
		new cache_string[24],string[500];
		cache_get_field_content(r, cache_string, "Nick");
		format(string, 512, "%s%s\n", string, cache_string);          

	}
        return ShowPlayerDialog(playerid, 512,  DIALOG_STYLE_MSGBOX, "{FF0000}Lista", string, "Sair", "");
}
Vocк cometeu um erro na criaзгo da variбvel, tб tentnado formatar ela com 512 elementos sendo que vocк a iniciou com 500:

Код:
new cache_string[24], string[500];
Код:
format(string, 512, "%s%s\n", string, cache_string);
Conserta isso, presta atenзгo nas cйlulas na hora de criar uma string.