Jump to content
  • 0

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


Question

Posted

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!

2 answers to this question

Recommended Posts

  • 0
Posted (edited)

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
  • 0
Posted
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 ^^.

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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...