[Ajuda] Listagem de Dados [MYSQL]
#1

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.
Reply
#2

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.
Reply
#3

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
Reply
#4

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);

	}
}
Reply
#5

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...
Reply
#6

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", "");

	}
}
Reply
#7

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.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)