[Ajuda] Consulta MySQL
#1

Boa tarde pessoal, quero retirar uma dъvida minha sobre a execuзгo desta consulta. Em teoria nгo observo erro e o cуdigo deveria funcionar, jб na prбtica nгo estб bem assim.

Код:
			new query[128];
	    	format(query, sizeof(query), "SELECT slot1, slot2, slot3 FROM `accounts` WHERE `Username` = '%s'", PlayerData[playerid][pUsername]);
	    	mysql_tquery(g_iHandle, query);

			Slot1[playerid] = cache_get_field_int(0, "slot1");
			Slot2[playerid] = cache_get_field_int(0, "slot2");
			Slot3[playerid] = cache_get_field_int(0, "slot3");

			if (playertextid == PlayerTxD[playerid][1] && Slot1[playerid] == 1)
			{
				SendClientMessage(playerid, COLOR_WHITE, "Selecionado Slot 1.");
			}
		 	else if (playertextid == PlayerTxD[playerid][2] && Slot2[playerid] == 1)
		 	{
				SendClientMessage(playerid, COLOR_WHITE, "Selecionado Slot 2.");
			}
		 	else if (playertextid == PlayerTxD[playerid][3] && Slot3[playerid] == 1)
		 	{
				SendClientMessage(playerid, COLOR_WHITE, "Selecionado Slot 3.");
Meu objetivo й consultar as colunas slot1, slot2 e slot2 na tabela accounts para um usuбrio especнfico. Em seguida atribuir o valor da coluna na variбvel correspondente (slot1[playerid], slot2[playerid], slot3[playerid]) para verificar se ela й positiva. Se ela for positiva na condiзгo o cуdigo executa, caso contrбrio retorna em 0.

Meu problema й que o cуdigo nгo funcionou da maneira que eu queria e mesmo com a coluna na tabela sendo igual 1, nгo recebo a mensagem correta. O que pode ser?
Reply
#2

Boa Tarde!
Cara nгo manjo muito, mas acho que seu cуdigo deveria ser assim. gostaria que vocк realiza-se o teste...

PHP код:
new query[128];
mysql_format(g_iHandlequerysizeof(query), "SELECT slot1, slot2, slot3 FROM `accounts` WHERE `Username` = '%s'"PlayerData[playerid][pUsername]);
mysql_tquery(g_iHandlequery"carregar""d"playerid);
    
forward carregar(playerid);
public 
carregar(playerid)
{    
    
cache_get_value_int(0"slot1"Slot1[playerid]);
    
cache_get_value_int(0"slot2"Slot2[playerid]);
    
cache_get_value_int(0"slot3"Slot3[playerid]);
    if (
playertextid == PlayerTxD[playerid][1] && Slot1[playerid] == 1)
    {
        
SendClientMessage(playeridCOLOR_WHITE"Selecionado Slot 1.");
    }
    else if (
playertextid == PlayerTxD[playerid][2] && Slot2[playerid] == 1)
    {
        
SendClientMessage(playeridCOLOR_WHITE"Selecionado Slot 2.");
    }
    else if (
playertextid == PlayerTxD[playerid][3] && Slot3[playerid] == 1)
    {
        
SendClientMessage(playeridCOLOR_WHITE"Selecionado Slot 3.");
    }
    return 
1;

Reply
#3

Quote:
Originally Posted by iTzMatheus
Посмотреть сообщение
Boa tarde pessoal, quero retirar uma dъvida minha sobre a execuзгo desta consulta. Em teoria nгo observo erro e o cуdigo deveria funcionar, jб na prбtica nгo estб bem assim.

Код:
			new query[128];
	    	format(query, sizeof(query), "SELECT slot1, slot2, slot3 FROM `accounts` WHERE `Username` = '%s'", PlayerData[playerid][pUsername]);
	    	mysql_tquery(g_iHandle, query);

			Slot1[playerid] = cache_get_field_int(0, "slot1");
			Slot2[playerid] = cache_get_field_int(0, "slot2");
			Slot3[playerid] = cache_get_field_int(0, "slot3");

			if (playertextid == PlayerTxD[playerid][1] && Slot1[playerid] == 1)
			{
				SendClientMessage(playerid, COLOR_WHITE, "Selecionado Slot 1.");
			}
		 	else if (playertextid == PlayerTxD[playerid][2] && Slot2[playerid] == 1)
		 	{
				SendClientMessage(playerid, COLOR_WHITE, "Selecionado Slot 2.");
			}
		 	else if (playertextid == PlayerTxD[playerid][3] && Slot3[playerid] == 1)
		 	{
				SendClientMessage(playerid, COLOR_WHITE, "Selecionado Slot 3.");
Meu objetivo й consultar as colunas slot1, slot2 e slot2 na tabela accounts para um usuбrio especнfico. Em seguida atribuir o valor da coluna na variбvel correspondente (slot1[playerid], slot2[playerid], slot3[playerid]) para verificar se ela й positiva. Se ela for positiva na condiзгo o cуdigo executa, caso contrбrio retorna em 0.

Meu problema й que o cуdigo nгo funcionou da maneira que eu queria e mesmo com a coluna na tabela sendo igual 1, nгo recebo a mensagem correta. O que pode ser?
Qual versгo do plugin vocк usa ?
Reply
#4

Quote:
Originally Posted by Lontresca
Посмотреть сообщение
Boa Tarde!
Cara nгo manjo muito, mas acho que seu cуdigo deveria ser assim. gostaria que vocк realiza-se o teste...

PHP код:
new query[128];
mysql_format(g_iHandlequerysizeof(query), "SELECT slot1, slot2, slot3 FROM `accounts` WHERE `Username` = '%s'"PlayerData[playerid][pUsername]);
mysql_tquery(g_iHandlequery"carregar""d"playerid);
    
forward carregar(playerid);
public 
carregar(playerid)
{    
    
cache_get_value_int(0"slot1"Slot1[playerid]);
    
cache_get_value_int(0"slot2"Slot2[playerid]);
    
cache_get_value_int(0"slot3"Slot3[playerid]);
    if (
playertextid == PlayerTxD[playerid][1] && Slot1[playerid] == 1)
    {
        
SendClientMessage(playeridCOLOR_WHITE"Selecionado Slot 1.");
    }
    else if (
playertextid == PlayerTxD[playerid][2] && Slot2[playerid] == 1)
    {
        
SendClientMessage(playeridCOLOR_WHITE"Selecionado Slot 2.");
    }
    else if (
playertextid == PlayerTxD[playerid][3] && Slot3[playerid] == 1)
    {
        
SendClientMessage(playeridCOLOR_WHITE"Selecionado Slot 3.");
    }
    return 
1;

Preciso executar essa minha consulta dentro da public OnPlayerClickPlayerTextdraw, й uma verificaзгo especнfica. Chamar uma funзгo durante essa consulta pra mim seria pior. Mesmo assim, vou testar a consulta da maneira que vocк me indicou.

Quote:

new query[128];
mysql_format(g_iHandle, query, sizeof(query), "SELECT slot1, slot2, slot3 FROM `accounts` WHERE `Username` = '%s'", PlayerData[playerid][pUsername]);
mysql_tquery(g_iHandle, query, "carregar", "d", playerid);

Quote:

Qual versгo do plugin vocк usa ?

MySQL R39-5. (Esta й a informaзгo exibida quando o plugin й carregado. A tempos nгo procuro por atualizaзхes.)
Reply
#5

Quote:
Originally Posted by iTzMatheus
Посмотреть сообщение
Boa tarde pessoal, quero retirar uma dъvida minha sobre a execuзгo desta consulta. Em teoria nгo observo erro e o cуdigo deveria funcionar, jб na prбtica nгo estб bem assim.

Код:
			new query[128];
	    	format(query, sizeof(query), "SELECT slot1, slot2, slot3 FROM `accounts` WHERE `Username` = '%s'", PlayerData[playerid][pUsername]);
	    	mysql_tquery(g_iHandle, query);

			Slot1[playerid] = cache_get_field_int(0, "slot1");
			Slot2[playerid] = cache_get_field_int(0, "slot2");
			Slot3[playerid] = cache_get_field_int(0, "slot3");

			if (playertextid == PlayerTxD[playerid][1] && Slot1[playerid] == 1)
			{
				SendClientMessage(playerid, COLOR_WHITE, "Selecionado Slot 1.");
			}
		 	else if (playertextid == PlayerTxD[playerid][2] && Slot2[playerid] == 1)
		 	{
				SendClientMessage(playerid, COLOR_WHITE, "Selecionado Slot 2.");
			}
		 	else if (playertextid == PlayerTxD[playerid][3] && Slot3[playerid] == 1)
		 	{
				SendClientMessage(playerid, COLOR_WHITE, "Selecionado Slot 3.");
Meu objetivo й consultar as colunas slot1, slot2 e slot2 na tabela accounts para um usuбrio especнfico. Em seguida atribuir o valor da coluna na variбvel correspondente (slot1[playerid], slot2[playerid], slot3[playerid]) para verificar se ela й positiva. Se ela for positiva na condiзгo o cуdigo executa, caso contrбrio retorna em 0.

Meu problema й que o cуdigo nгo funcionou da maneira que eu queria e mesmo com a coluna na tabela sendo igual 1, nгo recebo a mensagem correta. O que pode ser?
Vocк tem que que usar a funзгo mysql_query(...) para trabalhar com cache no prуprio mйtodo.

PHP код:
mysql_format(querysizeof(query), "SELECT slot1, slot2, slot3 FROM `accounts` WHERE `Username` = '%s'"PlayerData[playerid][pUsername]);
mysql_query(g_iHandlequery);
// [...] obtenha os dados aqui
mysql_free_result(g_iHandle); // liberar o cache 
Reply
#6

Quote:
Originally Posted by SammyJ
Посмотреть сообщение
Vocк tem que que usar a funзгo mysql_query(...) para trabalhar com cache no prуprio mйtodo.

PHP код:
mysql_format(querysizeof(query), "SELECT slot1, slot2, slot3 FROM `accounts` WHERE `Username` = '%s'"PlayerData[playerid][pUsername]);
mysql_query(g_iHandlequery);
// [...] obtenha os dados aqui
mysql_free_result(g_iHandle); // liberar o cache 
Sua ajuda nгo se torna viбvel, a principio a funзгo mysql_free_result nгo й definida nessa versгo do plugin, o que impossibilita usa-la. Tentei usar a funзгo mysql_format e retorna erro de tag mismatch. Alguma ajuda?

Sу preciso consultar se a coluna slot1, slot2 e slot3 possuem valor de 1 ou 0, atribuir o valor da coluna na variбvel Slot1, Slot2 e Slot3 e usa-las na condiзгo para continuar o cуdigo ou nгo.
Reply
#7

Quote:
Originally Posted by iTzMatheus
Посмотреть сообщение
Sua ajuda nгo se torna viбvel, a principio a funзгo mysql_free_result nгo й definida nessa versгo do plugin, o que impossibilita usa-la. Tentei usar a funзгo mysql_format e retorna erro de tag mismatch. Alguma ajuda?

Sу preciso consultar se a coluna slot1, slot2 e slot3 possuem valor de 1 ou 0, atribuir o valor da coluna na variбvel Slot1, Slot2 e Slot3 e usa-las na condiзгo para continuar o cуdigo ou nгo.
Nunca usei essa versгo do plugin entгo nгo conheзo bem! desculpe!

A Versгo que uso й a R41-4, e para fazer esse cуdigo eu faria assim (na versгo R41-4).
PHP код:
mysql_format(handlequerysizeof(query), "SELECT `coluna1`,`coluna2` FROM `tabela` WHERE `username`='%s' LIMIT 1;");
new 
Cache:cache mysql_query(handlequerytrue);
new 
Coluna1[MAX_PLAYERS], Coluna2[MAX_PLAYERS];
cache_get_value_name_int(0"coluna1"Coluna1[playerid]);
cache_get_value_name_int(0"coluna2"Coluna2[playerid]);
cache_delete(cache); // para liberar o cache;
// condiзхes aqui 
Enfim os nomes dos metodos й diferente, mas a funcionalidade й a mesma.
E como disse no poste a cima, o seu problema й somente o uso da mysql_tquery trocar para o mysql_query.

@edit
Quote:
Originally Posted by iTzMatheus
Посмотреть сообщение
Tentei usar a funзгo mysql_format e retorna erro de tag mismatch. Alguma ajuda?
Esqueci de coloca o handle no mysql_format.
PHP код:
mysql_format(handlequerysizeof query"SELECT [...]"); 
Reply
#8

R39-5:
PHP код:
Slot1 cache_get_field_content_int(0"slot1");
Slot2 cache_get_field_content_int(0"slot2");
Slot3 cache_get_field_content_int(0"slot3"); 
Reply
#9

Quote:
Originally Posted by SammyJ
Посмотреть сообщение
Nunca usei essa versгo do plugin entгo nгo conheзo bem! desculpe!

A Versгo que uso й a R41-4, e para fazer esse cуdigo eu faria assim (na versгo R41-4).
PHP код:
mysql_format(handlequerysizeof(query), "SELECT `coluna1`,`coluna2` FROM `tabela` WHERE `username`='%s' LIMIT 1;");
new 
Cache:cache mysql_query(handlequerytrue);
new 
Coluna1[MAX_PLAYERS], Coluna2[MAX_PLAYERS];
cache_get_value_name_int(0"coluna1"Coluna1[playerid]);
cache_get_value_name_int(0"coluna2"Coluna2[playerid]);
cache_delete(cache); // para liberar o cache;
// condiзхes aqui 
Enfim os nomes dos metodos й diferente, mas a funcionalidade й a mesma.
E como disse no poste a cima, o seu problema й somente o uso da mysql_tquery trocar para o mysql_query.

@edit


Esqueci de coloca o handle no mysql_format.
PHP код:
mysql_format(handlequerysizeof query"SELECT [...]"); 
Agradeзo pela sua ajuda e tambйm pela ajuda do Whoo. Mesclei ambos os cуdigos que me indicaram e minha consulta e atribuiзгo de valor a variбvel funcionaram. Agradeзo pela atenзгo dos dois, abaixo o cуdigo solucionado caso alguйm precise futuramente.

Код:
new query[128];
mysql_format(g_iHandle, query, sizeof(query), "SELECT slot1, slot2, slot3 FROM `accounts` WHERE `Username` = '%s'", PlayerData[playerid][pUsername]);
mysql_query(g_iHandle, query);

Slot1[playerid] = cache_get_field_content_int(0, "slot1");
Slot2[playerid] = cache_get_field_content_int(0, "slot2");
Slot3[playerid] = cache_get_field_content_int(0, "slot3");
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)