Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Almir Rebouças

[Resolvido] Erro usando o Request.QueryString

Recommended Posts

Boa noite pessoal.

 

 

Eu já pesquisei bastante, mas quando digo bastante é bastante mesmo sobre este erro e não achei ninguém que tenha passado por ele. Vou descrevê-lo aqui para melhor entendimento.

 

São 2 páginas:

Página 1 - Onde eu passo o Request.QueryString

Página2 - Onde eu trato o valor passado.

 

Eu tenho um link passando um valor via Request.QueryString na página 1, onde na página 2 eu trato o valor do Request.QueryString e redireciono novamente para a página 1.

 

Contudo, depois de 2 ou 3 vezes sequenciais clicando no link, o Request.QueryString concatena os valores.

 

Sendo assim, qdo ele deveria me passar "INFORMAÇÃO 2", ele me passa o valor "INFORMAÇÃO1INFORMAÇÃO2" quando na verdade eu só estou querendo a informação 2.

 

Existe alguma maneira de evitar que isso aconteça??

 

Mais uma vez obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta a parte do código...

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta a parte do código...

arquivo banco.asp

 

<% If Tipo = "anel" Then %>		
		<a href="ativaritem.asp?nome=<%=ItemNome%>&tipo=<%=tipo%>&lado=direito">Ativar Anel Direito</a><br>
		<a href="ativaritem.asp?nome=<%=ItemNome%>&tipo=<%=tipo%>&lado=esquerdo">Ativar Anel Esquerdo</a>		
<% Else %>
		<a href="ativaritem.asp?nome=<%=ItemNome%>&tipo=<%=tipo%>">Ativar Item</a><br>
<% End If %>

 

Arquivo AtivarItem.asp

 

SQLQuery = "update personagem set arma = '" & [b]Request.QueryString("nome")[/b] & "' where logon = '"
SQLQuery = SQLQuery & Session("logon") & "' and personagem = '" & Session("personagem") & "'"
Conexao.Execute(SQLQuery)

Como eu falei está tudo correto. Contudo ao usar o link Ativar várias vezes ele guarda junta 2 valores. O atual e o do click anterior.

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write na consulta SQL

para ver o que esta passando nela.

 

<%
SQLQuery = "update personagem set arma = '" & Request.QueryString("nome") & "' where logon = '"& Session("logon") & "' and personagem = '" & Session("personagem") & "'"
response.write(SQLQuery)
response.End()
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi através do Response.Write que eu descobri que ele está passando o valor antigo e o novo junto.

 

 

Vou tentar especificar mais.

 

 

Link aqui, eu clico.

 

OK, funciona. volto pra página do banco. (o QueryString passa o valor certo)

 

clico de novo. (passa o valor anterior e o valor que eu juntos, concatenados.

 

O que eu preciso é um jeito de forçar passar o valor ou limpar o querystring.

Compartilhar este post


Link para o post
Compartilhar em outros sites

na hora que retornar, ela nao esta vindo com o valor da 1º querystrig ???

verifique se o retorno ela tb retorno com o valor !!!

tenta fazer quando ela voltar você passar sem valores

Compartilhar este post


Link para o post
Compartilhar em outros sites

SQLQuery = "update personagem set arma = '" & Request.QueryString("nome") & "' where logon = '"
SQLQuery = SQLQuery & Session("logon") & "' and personagem = '" & Session("personagem") & "'"
Conexao.Execute(SQLQuery)
No código acima tem uma coisa errada, note que no logon, você está concatenando a Query ao invés de passar simplesmente o valor da Session, tente alterar para isso:

SQLQuery = "update personagem set arma = '" & Request.QueryString("nome") & "' where logon = '" & Session("logon") & "' and personagem = '" & Session("personagem") & "'"
Conexao.Execute(SQLQuery)

Compartilhar este post


Link para o post
Compartilhar em outros sites

a sql da pagina que captura as informações não está duplicando o registro?

manda essa sql aí!

Compartilhar este post


Link para o post
Compartilhar em outros sites

na hora que retornar, ela nao esta vindo com o valor da 1º querystrig ???

verifique se o retorno ela tb retorno com o valor !!!

tenta fazer quando ela voltar você passar sem valores

Eu preciso de um único valor por vez. O que acontece é que vem com um valor que eu passei anteriormente. E já chequei o código, não sou eu quem está passando o primeiro valor, eu só passo um único valor por vez. E quando eu preciso dos segundo valor, vem o primeiro e o segundo, como se não limpasse a QueryString.

Compartilhar este post


Link para o post
Compartilhar em outros sites

SQLQuery = "update personagem set arma = '" & Request.QueryString("nome") & "' where logon = '"
SQLQuery = SQLQuery & Session("logon") & "' and personagem = '" & Session("personagem") & "'"
Conexao.Execute(SQLQuery)
No código acima tem uma coisa errada, note que no logon, você está concatenando a Query ao invés de passar simplesmente o valor da Session, tente alterar para isso:

SQLQuery = "update personagem set arma = '" & Request.QueryString("nome") & "' where logon = '" & Session("logon") & "' and personagem = '" & Session("personagem") & "'"
Conexao.Execute(SQLQuery)

Sim, realmente está concatenando. O código SQL que você escreveu é exatamente a mesma coisa que eu fiz. Somente não gosto de ter uma sequência em SQL que ultrapasse mais de uma linha, então com o objetivo de localizar mais rápido os erros, eu concateno sempre que uma linha vai acabar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

a sql da pagina que captura as informações não está duplicando o registro?

manda essa sql aí!

Não está duplicando o registro. Infelizmente eu estou há 3 dias com esse problema. Já fiz todos os testes que me vieram a cabeça, já refiz o código inteiro 2 vezes.

 

O problema é justamente que no SQL eu preciso de um único valor por vez, senão não consigo efetuar a atualização no banco do jeito que é preciso.

 

O SQL está ok, o meu único problema é dois valores na mesma QueryString.

 

SQLQuery = "select * from banco where item = '" & Request.QueryString("nome") & "' and ativado = 'não'"

Set RsBanco = Conexao.Execute(SQLQuery)

 

No caso do primeiro SQL que eu passei realmente não tem problema, porque eu só gravaria um valor duplicado no banco. A questão é que em um select específico como acima, não retorna valor nenhum porque o valor da QueryString está errado quando eu estou passando de maneira correta, e sem o retorno do valor correto, nada abaixo funcionaria da maneira esperada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde pessoal.

 

Eu consegui resolver o problema do QueryString fazendo umas "gambiarras".

 

Na verdade tratei a excessão causada pelo valor duplicado.

 

 

O que eu fiz foi simplesmente caso o valor seja diferente do esperado eu redireciono a página de volta e pego os valores novamente.

 

E ao mesmo tempo fiz um script para checagem do banco de dados para averiguar se os dados estão como o esperado.

 

Grato pela ajuda.

 

Se não tivesse trocado idéias aqui provalvemente iria demorar bastante para encontrar alguma solução parecida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fico feliz que conseguiu, kker coisa só postar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.