Jump to content
  • 0

for() não está agindo como deveria.


Hyroshima

Question


  • Group:  Members
  • Topic Count:  34
  • Topics Per Day:  0.01
  • Content Count:  159
  • Reputation:   58
  • Joined:  07/11/14
  • Last Seen:  

Boa tarde pessoal ^^, então estava adicionando um pequeno ranking (sugestão de um amigo) no sistema de quest que estou finalizando, porem o for() funciona e não ao mesmo tempo.

query_sql "SELECT `account_id`,`MaxQPoints` FROM `login` WHERE `MaxQPoints` > '0' ORDER BY `MaxQPoints` DESC LIMIT 10",.@acid,.@maxqp;
				
				
for(set .@i,0; .@i<getarraysize(.@acid); set .@i,.@i+1)
{
	query_sql "SELECT `name` FROM `char` WHERE `account_id`='"+.@acid[.@i]+"' AND `QP_CharPref`='1'",.@qpname$;
	mes " [ "+(.@i+1)+"º ] "+.@qpname$[.@i]+" ~ "+.@maxqp[.@i]+"";
}
				
close;

 

O problema é o seguinte, tenho 2 registro como resultado do .@acid e .@maxqp, o problema é na hora de puxar o nome do char, puxa somente o primeiro, os seguintes só mostra o .@maxqp que é da query fora fo for(), mas a questão é q não mostra o nome mas mostra o valor que o char q não mostrou o nome tem.

 

O real problema é essa query aqui que só está executando o valor de .@i uma vez:

 

query_sql "SELECT `name` FROM `char` WHERE `account_id`='"+.@acid[.@i]+"' AND `QP_CharPref`='1'",.@qpname$;

 

e o resultado é esse:

D3aiFUS.jpg

 

Como podem ver, o .@i funciona certinho até por quê a ordem de número aparecem normal.

 

ex aqui as colunas:

ALTER TABLE `char` ADD `QP_CharPref` INT(1) NOT NULL default '0';
ALTER TABLE `login` ADD `MaxQPoints` INT(5) NOT NULL default '0';

Obs: Fiquei um tempo parado então pode ser alguma coisa haver com lógica q estrou me atrapalhando xD

 

Um amigo sugeriu o seguinte: 

query_sql "SELECT `char`.`name`,`login`.`MaxQPoints` FROM `char` LEFT JOIN `login`  WHERE `char`.`QP_CharPref` = 1 AND `login`.`MaxQPoints` > 0 ORDER BY `login`.`MaxQPoints` DESC LIMIT 0,10",.@name$,.@value;
query_sql "SELECT count(account_id) FROM `login` WHERE `MaxQPoints`>='1' LIMIT 0,10",.@count;
for(set .@i,0; .@i< .@count; set .@i,.@i+1)
{
mes " [ "+(.@i+1)+"º ] "+.@name$[.@i]+" ~ "+.@value[.@i]+"";
}
close;
end;

 

Porem algo no join não está correto, tentei executar direto no phpmyadmin a parte do sql e deu o mesmo erro.

wwx4SzL.jpg

 

Se alguém poder explicar pq o meu método não está funcionando me ajudaria muito a compreender ^^, desde já grato Hyro!

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  2
  • Topics Per Day:  0.00
  • Content Count:  22
  • Reputation:   11
  • Joined:  07/16/17
  • Last Seen:  

Então, cara, o erro está  aqui:

"+.@qpname$[.@i]+"

 

Quando você seleciona das tabelas dando apenas um argumento, ele não cria uma array.

Tenta assim:

query_sql "SELECT `account_id`,`MaxQPoints` FROM `login` WHERE `MaxQPoints` > '0' ORDER BY `MaxQPoints` DESC LIMIT 10",.@acid,.@maxqp;
				
				
for(set .@i,0; .@i<getarraysize(.@acid); set .@i,.@i+1)
{
	query_sql "SELECT `name` FROM `char` WHERE `account_id`='"+.@acid[.@i]+"' AND `QP_CharPref`='1'",.@qpname$;
	mes " [ "+(.@i+1)+"º ] "+.@qpname$+" ~ "+.@maxqp[.@i]+"";
}
				
close;

 

Edited by Sindit
  • Like 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  34
  • Topics Per Day:  0.01
  • Content Count:  159
  • Reputation:   58
  • Joined:  07/11/14
  • Last Seen:  

5 hours ago, Sindit said:

Então, cara, o erro está  aqui:


"+.@qpname$[.@i]+"

 

Quando você seleciona das tabelas dando apenas um argumento, ele não cria uma array.

Tenta assim:


query_sql "SELECT `account_id`,`MaxQPoints` FROM `login` WHERE `MaxQPoints` > '0' ORDER BY `MaxQPoints` DESC LIMIT 10",.@acid,.@maxqp;
				
				
for(set .@i,0; .@i<getarraysize(.@acid); set .@i,.@i+1)
{
	query_sql "SELECT `name` FROM `char` WHERE `account_id`='"+.@acid[.@i]+"' AND `QP_CharPref`='1'",.@qpname$;
	mes " [ "+(.@i+1)+"º ] "+.@qpname$+" ~ "+.@maxqp[.@i]+"";
}
				
close;

 

 

Nossa mano eu jurava que que a var era uma array, muito obrigado me ajudou bastante ^^.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...