Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Request.QueryString


lucascabs

Pergunta

oi, boa tarde a todos!

bom to com um problema com Request.QueryString e estou pedindo ajuda ao pessoal do forum!

estou desenvolvendo um site que na qual existe uma pagina de cadastro, que apos informações preenchidas, ela joga no banco de dados, e depois abre um relatório com essas informações!

até a parte do banco de dados está funcionando perfeitamente, mas o relatório não é capaz de funcionar!

se puderem agradeceria e muito a ajuda de todos! xD

(abaixo segue um resumo dos códigos utilizados)

Formulário de Cadastro - "cadastro.asp"

<form name="cadastro" method="post" action="cadastrar.asp" onSubmit="return Verifica(this);">
  <table width="970" border="0" cellpadding="3" cellspacing="0" bordercolor="#F4F4F4" bgcolor="#F4F4F4">
    <tr>
	<td align="right" height="20"><font face="arial" size="2">Login:</font></td>
      <td><input name="txtLogin" type="text" id="txtLogin">
      *</td>
	  </tr>
	  <tr>
	  <td align="right" height="20"><font face="arial" size="2">Senha:</font></td>
      <td><input name="txtSenha" type="password" id="txtSenha" size="12" maxlength="12"> *</td>
	  </tr>
</table>
</form>
Cadastro no Banco de Dados - "cadastrar.asp"
<!--#include file="conexao.asp"-->
<% 
Dim conexao
Login = Request.form("txtLogin") 
Senha = Request.form("txtSenha")

strInsert = " INSERT into usuarios"
strInsert = strInsert & "(login, senha)"
strInsert = strInsert + "VALUES ('" + Login + "',"
strInsert = strInsert + "'" + Senha + "')"

Call abreConexao
Set rsInsert = conexao.Execute(strInsert) 

Call fechaConexao
Set rsInsert = Nothing

Response.redirect("relatorio.asp")

%>
Conexão com o Banco de Dados - "conexao.asp"
<%
Dim string
string = ("DRIVER={MySQL ODBC 5.1 Driver};SERVER=000.000.000.00;PORT=0000;DATABASE=x;USER=x;PASSWORD=x;OPTION=3;")

Sub AbreConexao
    Set Conexao = Server.CreateObject("ADODB.Connection")
    Conexao.Open string
end sub

Sub FechaConexao
    Conexao.Close
    Set Conexao = Nothing
End Sub
%>
Relatório com as informações cadastradas - "relatorio.asp"
<%
Dim MM_conn_STRING
MM_conn_STRING = ("DRIVER={MySQL ODBC 5.1 Driver};SERVER=000.000.000.00;PORT=0000;DATABASE=x;USER=x;PASSWORD=x;OPTION=3;")
%>

<%
    dim conn
    set conn = SERVER.CreateObject("ADODB.Connection")
    conn.Open MM_conn_STRING
%>

<% IF REQUEST.QueryString("txtSenha") = " " THEN
RESPONSE.Redirect("pg_relatorio.asp?codigo="&REQUEST.QueryString("txtSenha"))

END IF
%>

<%
Dim CA1

Set CA1 = Server.CreateObject("ADODB.Recordset")
CA1.ActiveConnection = MM_conn_STRING
CA1.Source = "SELECT codigo,login, senha FROM usuarios"
CA1.Open()
%>

<body>
<table>
<tr><td colspan="4">Login:<%=(CA1.Fields.Item("login").Value)%></td></tr>
<tr><td colspan="4">Senha:<%=(CA1.Fields.Item("senha").Value)%></td></tr>
</table>
</body>

<%
CA1.Close()
Set CA1 = Nothing
%>
<%
conn.Close()
Set conn = Nothing
%>

Obrigado pela atenção

Lucas de Almeida

Editado por Jonathan Queiroz
Adcionar tag's (Jonathan)
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

você da um redirect para relatorio.asp... ou seja, não terá nada para resgatar por querystring...

O jeito é na mesma rotina de insert criar uma session com a senha e o usuário e depois resgatar essa session na hora de fazer a consulta no bd, ou seja:

cadastrar.asp fica assim:

<!--#include file="conexao.asp"-->
<%
Dim conexao
Login = Request.form("txtLogin")
Senha = Request.form("txtSenha")

strInsert = " INSERT into usuarios"
strInsert = strInsert & "(login, senha)"
strInsert = strInsert + "VALUES ('" + Login + "',"
strInsert = strInsert + "'" + Senha + "')"

Call abreConexao
Set rsInsert = conexao.Execute(strInsert)

session("login") = Login
session("senha") = Senha

Call fechaConexao
Set rsInsert = Nothing
Response.redirect("relatorio.asp") %> e a relatorio.asp ficara assim:
<%
Dim MM_conn_STRING
MM_conn_STRING = ("DRIVER={MySQL ODBC 5.1 Driver};SERVER=000.000.000.00;PORT=0000;DATABASE=x;USER=x;PASSWORD=x;OPTION=3;")
%>

<%
    dim conn
    set conn = SERVER.CreateObject("ADODB.Connection")
    conn.Open MM_conn_STRING
%>

<% 
senha = session("senha")
login = session("login")

IF senha = " " THEN
response.write "senha inexistente"
response.end
end if
'RESPONSE.Redirect("pg_relatorio.asp?codigo="&REQUEST.QueryString("txtSenha"))

'END IF
%>

<%
Dim CA1

Set CA1 = Server.CreateObject("ADODB.Recordset")
CA1.ActiveConnection = MM_conn_STRING
CA1.Source = "SELECT codigo,login, senha FROM usuarios where senha = "&senha&""
CA1.Open()
%>

<body>
<table>
<tr><td colspan="4">Login:<%=(CA1.Fields.Item("login").Value)%></td></tr>
<tr><td colspan="4">Senha:<%=(CA1.Fields.Item("senha").Value)%></td></tr>
</table>
</body>

<%
CA1.Close()
Set CA1 = Nothing
%>
<%
conn.Close()
Set conn = Nothing
%>

Enfim... mais ou menos isso!

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

muito obrigado cara, vou testar agora e te respondo se funcionou ou não!

mas existe uma maneira mais facil de fazer isso???

porque o q eu quero é que quando o cliente após cadastrar, jogue as informações no Banco de dados e retorne uma pagina com os dados que ele acabou de cadastrar! acho que deu para entender não é??

so um comentario, com o codigo q eu havia feito ele cadastrava, mas retornava a página com as informações do 1 codigo! sendo que o cliente que cadastrou, por exemplo, é o 15!

Obrigado pela atenção

Lucas de Almeida

Link para o comentário
Compartilhar em outros sites

  • 0

cara deu certo!

mas não era bem isso q eu queria!

é tipo assim!

o que estou fazendo é uma tela de cadastro!

conforme o aluno preencher as informações e clicar no botão cadastrar, vai enviar para um banco de dados meu e retornar para ele uma tela com as informações que ele preencheu para ele poder imprimir!

tendeu??

o que foi passado funcionou beleza, mas ele ta gerando o relatorio de acordo com a senha que ele se cadastrou mas na realidade não é isso!

eu queria que quando o cara cadastra abre uma tela com os dados dele e quando um outro cadastrar apareca no relatorio os dados do outro!

expliquei bem??

PS. o request.querystring eu so usei com a senha so para teste!

Link para o comentário
Compartilhar em outros sites

  • 0
Então você fez alguma coisa errada! Posta seu código aí pra vermos como está e tentarmos te ajudar, ok?

[]'s

é tipo assim, vamos dizer que o cadastro so tenha senha e login! a pessoa entra no site, digita os 2 campos e manda o submit, pronto ta criado o usuario no banco de dados (se não tiver repetido o login claro)!

so que minha tabela no banco contem 3 campos: codigo, login, senha!

o campo codigo é um campo com autonumeração, então so de cadastrar, o codigo é colocado automaticamente!

pela ajuda que voce me deu, voce me passou que conforme o usuario cadastra-se ficava no session a senha, como colocar o codigo nesse session???

é que o que você me passou funcionou perfeito cara! mas ai vendo depois não era isso que eu queria! =/

ele mostra o relatorio de acordo com a senha!

mas vamos dizer que um cidadão e se cadastrou, beleza?! mas depois de sei la quanto tempo um outro cidadão cadastre uma senha igual! então o relatório mostra o primeiro cara que se cadastrou! então é mais facil trabalhar com o codigo da tabela para não ter esse problema nunca!

foi esse meu problema quando cadastrei por preguiça dois cara com senha igual! kkkkkk

PS. minha duvida principal é como colocar o campo codigo no session ao invés da senha! sendo que o usuario nunca vai cadastrar na tela de cadastro o campo codigo! ele é gerado automaticamente na minha tabela do banco de dados!

se tem outro jeito mais facil melhor ainda! essa maneira é beleza, mas não sei como o fazer!

se você me ajudar cara vou ficar devendo essa!

obrigado mesmo pela ajuda! so iniciante mas vou ficar bom nisso! xD

Lucas de Almeida

Editado por lucascabs
Link para o comentário
Compartilhar em outros sites

  • 0

Cara...

Vamos pensar...

O campo código é autonumerico né? Então é barbada... basta antes de cadastrarmos saber qual será o proximo numero...

Para isso basta fazermos um select pegando o último codigo cadastrado e somar a este numero 1...

ficaria assim:

SQL = "Select top 1 campo_codigo from sua_tabela ORDER BY codigo desc"
Set objRs = objConn.Execute(SQL )

ultimocodigo = objRs ("campo_codigo")
proximocodigo = ultimocodigo + 1

id = session("proximocodigo")

Ou seja, com a instrução acima selecionamos no bd o "último código" depois somamos "+ 1" para achar o próximo e na sequência lançamos o número na session!

Era isso?

[]'s

Editado por Rafael Spilki
Link para o comentário
Compartilhar em outros sites

  • 0

tu é o cara!

fica assim então?

<%
Dim MM_conn_STRING
MM_conn_STRING = ("DRIVER={MySQL ODBC 5.1 Driver};SERVER=000.000.000.00;PORT=0000;DATABASE=x;USER=x;PASSWORD=x;OPTION=3;")
%>

<%
    dim conn
    set conn = SERVER.CreateObject("ADODB.Connection")
    conn.Open MM_conn_STRING
%>

<%
SQL = "Select top 1 codigo from usuarios ORDER BY codigo desc"
Set objRs = objConn.Execute(SQL )

ultimocodigo = objRs ("campo_codigo")
proximocodigo = ultimocodigo + 1

id = session("proximocodigo")
senha = session("senha")
login = session("login")

%>

<%
Dim CA1

Set CA1 = Server.CreateObject("ADODB.Recordset")
CA1.ActiveConnection = MM_conn_STRING
CA1.Source = "SELECT codigo,login, senha FROM usuarios where codigo = "&id&""
CA1.Open()
%>

<body>
<table>
<tr><td colspan="4">Login:<%=(CA1.Fields.Item("login").Value)%></td></tr>
<tr><td colspan="4">Senha:<%=(CA1.Fields.Item("senha").Value)%></td></tr>
</table>
</body>

<%
CA1.Close()
Set CA1 = Nothing
%>
<%
conn.Close()
Set conn = Nothing
%>

aqui não da para testar mas acho q é isso não é???

valeu abraço!

Link para o comentário
Compartilhar em outros sites

  • 0
Isso aí! Teste e poste os resultados!

DICA: Desista dos códigos prontos do DW... Esses codigos são umas m*****...

[]'s

otimo esse conselho! kkk

cara deu esso erro:

Microsoft VBScript runtime error '800a01f4'

Variable is undefined: 'SQL'

PS. eu não declarei quando disse que: " SQL = "Select top 1 codigo from usuarios ORDER BY codigo desc" " ???

Link para o comentário
Compartilhar em outros sites

  • 0
O erro indicou alguma linha? Qual?

desculpa ae cara, não to colocando a linha!

segue de novo com a linha do erro:

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/html/cadastro_distancia2/relatorio_distancia.asp, line 15

pra te ajudar, precisamente na expressão: " Set objRs = objConn.Execute(SQL) "

tem que colocar assim sera : Set objRs = objConn.Execute("SQL") ???

[edit] tentei aqui fazer isso e não é porque retornou o mesmo erro! [edit]

Editado por lucascabs
Link para o comentário
Compartilhar em outros sites

  • 0

É que objConn foi apenas meu exemplo... Se refere ao objeto de conexão com o bd... que no seu caso é conexao...

substitua essa linha do erro por essa aqui:

Set objRs = conexao.Execute(SQL)
conexao é o seu objeto setado, conforme esse trecho do seu codigi:
Call abreConexao
Set rsInsert = conexao.Execute(strInsert)

Sacou?

[]'s

Editado por Rafael Spilki
Link para o comentário
Compartilhar em outros sites

  • 0
É que objConn foi apenas meu exemplo... Se refere ao objeto de conexão com o bd... que no seu caso é conexao...

substitua essa linha do erro por essa aqui:

Set objRs = conexao.Execute(SQL)
conexao é o seu objeto setado, conforme esse trecho do seu codigi:
Call abreConexao
Set rsInsert = conexao.Execute(strInsert)

Sacou?

[]'s

ahh entendi, obrigado!

então a variavel conexao foi declarada em outra pagina então eu declarei de novo!

ficou assim:

<%

Dim MM_conn_STRING

MM_conn_STRING = ("DRIVER={MySQL ODBC 5.1 Driver};SERVER=000.000.000.00;PORT=0000;DATABASE=x;USER=x;PASSWORD=x;OPTION=3;")

%>

<%

dim conn

set conn = SERVER.CreateObject("ADODB.Connection")

conn.Open MM_conn_STRING

%>

<%

dim SQL, objRs, conexao

SQL = "Select top 1 campo_codigo from sua_tabela ORDER BY codigo desc"

Set objRs = conexao.Execute(SQL )

ultimocodigo = objRs ("campo_codigo")

proximocodigo = ultimocodigo + 1

id = session("proximocodigo")

senha = session("senha")

login = session("login")

%>

<%

Dim CA1

Set CA1 = Server.CreateObject("ADODB.Recordset")

CA1.ActiveConnection = MM_conn_STRING

CA1.Source = "SELECT codigo,login, senha FROM usuarios where codigo = "&id&""

CA1.Open()

%>

<body>

<table>

<tr><td colspan="4">Login:<%=(CA1.Fields.Item("login").Value)%></td></tr>

<tr><td colspan="4">Senha:<%=(CA1.Fields.Item("senha").Value)%></td></tr>

</table>

</body>

<%

CA1.Close()

Set CA1 = Nothing

%>

<%

conn.Close()

Set conn = Nothing

%>

mas deu o mesmo erro que o anterior!

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/html/cadastro_distancia2/relatorio_distancia.asp, line 15

Link para o comentário
Compartilhar em outros sites

  • 0

você tem essa conexão na sua página

<%
Dim MM_conn_STRING
MM_conn_STRING = ("DRIVER={MySQL ODBC 5.1 Driver};SERVER=000.000.000.00;PORT=0000;DATABASE=x;USER=x;PASSWORD=x;OPTION=3;")
%>

<%
dim conn
set conn = SERVER.CreateObject("ADODB.Connection")
conn.Open MM_conn_STRING
%>
que se chama conn enquanto fica tentando roda essa página sem ao menos tentar entender o que ta fazendo vai continuar a ter estes erros idiotas... na página você tenta executar um rs usando conexao que não aparece em sua página... o que já deve resolver é:
Set objRs = conn.Execute(SQL )

Link para o comentário
Compartilhar em outros sites

  • 0
você tem essa conexão na sua página

<%
Dim MM_conn_STRING
MM_conn_STRING = ("DRIVER={MySQL ODBC 5.1 Driver};SERVER=000.000.000.00;PORT=0000;DATABASE=x;USER=x;PASSWORD=x;OPTION=3;")
%>

<%
dim conn
set conn = SERVER.CreateObject("ADODB.Connection")
conn.Open MM_conn_STRING
%>
que se chama conn enquanto fica tentando roda essa página sem ao menos tentar entender o que ta fazendo vai continuar a ter estes erros idiotas... na página você tenta executar um rs usando conexao que não aparece em sua página... o que já deve resolver é:
Set objRs = conn.Execute(SQL )

obrigado hein cara ...

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[MySQL][ODBC 5.1 Driver][mysqld-5.1.30-community-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1 codigo from usuarios ORDER BY codigo desc' at line 1

/html/cadastro_distancia2/relatorio_distancia.asp, line 15

tava qui pensando, acho q o select top não funciona no mysql

tenho que usar isso: " SELECT * FROM usuarios ORDER BY codigo desc LIMIT 0, 1 "???

Editado por lucascabs
Link para o comentário
Compartilhar em outros sites

  • 0
exatamente em mysql se usa o limit em vez de top

deu certo o que você passou! mas ta retornando erro de mysql!

vou dar uma verificada depois...

o erro:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[MySQL][ODBC 5.1 Driver][mysqld-5.1.30-community-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

/html/cadastro_distancia2/relatorio_distancia.asp, line 32

a linha do erro é essa: " CA1.Source = "SELECT codigo,login, senha FROM usuarios where codigo = "&id&"" "

o codigo ficou exatamente assim:

<%
Dim MM_conn_STRING
MM_conn_STRING = ("DRIVER={MySQL ODBC 5.1 Driver};SERVER=000.000.000.00;PORT=0000;DATABASE=x;USER=x;PASSWORD=x;OPTION=3;")
%>

<%
dim conn
set conn = SERVER.CreateObject("ADODB.Connection")
conn.Open MM_conn_STRING
%>

<%
dim SQL, objRs, conexao,ultimocodigo,proximocodigo,id,senha,login
SQL = "SELECT * FROM usuarios ORDER BY codigo desc LIMIT 0, 1"
Set objRs = conexao.Execute(SQL )

ultimocodigo = objRs ("campo_codigo")
proximocodigo = ultimocodigo + 1

id = session("proximocodigo")
senha = session("senha")
login = session("login")

%>

<%
Dim CA1

Set CA1 = Server.CreateObject("ADODB.Recordset")
CA1.ActiveConnection = MM_conn_STRING
CA1.Source = "SELECT codigo,login, senha FROM usuarios where codigo = "&id&""
CA1.Open()
%>

<body>
<table>
<tr><td colspan="4">Login:<%=(CA1.Fields.Item("login").Value)%></td></tr>
<tr><td colspan="4">Senha:<%=(CA1.Fields.Item("senha").Value)%></td></tr>
</table>
</body>

<%
CA1.Close()
Set CA1 = Nothing
%>
<%
conn.Close()
Set conn = Nothing
%>

brigado a ajuda

Link para o comentário
Compartilhar em outros sites

  • 0

volto a repetir se pretende entender algo disso esqueça o lixo do dreamweaver como coder... faça na mão...

verifique os campos da tabela... e teste

set CA1=MM_conn_STRING.execute("SELECT * FROM usuarios where codigo = "&id)

você já tem um recordet em cima aberto com o limit que fica aberto no final, isso depois de um tempo derruba o site no servidor.

e se você já tem o login,senha e id gravado em uma session para que puxar do banco?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...