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.@acide.@maxqp, o problema é na hora de puxar o nome do char, puxa somente o primeiro, os seguintes só mostra o.@maxqpque é 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.@iuma vez:
query_sql "SELECT `name` FROM `char` WHERE `account_id`='"+.@acid[.@i]+"' AND `QP_CharPref`='1'",.@qpname$;
e o resultado é esse:
Como podem ver, o.@ifunciona 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.
Se alguém poder explicar pq o meu método não está funcionando me ajudaria muito a compreender ^^, desde já grato Hyro!
Question
Hyroshima
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.
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:
e o resultado é esse:
Como podem ver, o .@i funciona certinho até por quê a ordem de número aparecem normal.
ex aqui as colunas:
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:
Porem algo no join não está correto, tentei executar direto no phpmyadmin a parte do sql e deu o mesmo erro.
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
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.