Ir para conteúdo

POWERED BY:

Arquivado

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

wilnet

Session

Recommended Posts

Olá pessoal,

 

Nunca aprendi corretamente usar as Sessions.

 

Estou tendo um trabalho e tanto e sem exito.

 

Tenho um link de nome "Imagem de Fundo" onde ao clicar abre uma página assim:

 

OBS: Retirei as TAGS de HTML e tabelas para reduzir o CODE ok?

 

Página "img_fundo.asp"

 

<%
Dim img_fundo
set img_fundo = dadosDB.Execute("SELECT imagem FROM img_fundo")
%>

<form name="form1" action="up-img_fundoOK.asp" method="post" enctype="multipart/form-data" onSubmit="return Form_Validator(this)">
<input name="imagem" type="file" class="form" size="22">
<input type="submit" name="enviar" class="botao" value="Enviar Foto">

<div align="center">

<% 
' CODE verificação da imagem de fundo

set img_fundo = dadosDB.Execute("SELECT imagem FROM img_fundo WHERE id ORDER BY id")

'Faz a verificação da Foto, caso não tenha, mostra img de foto não disponivel
     If img_fundo.EOF = False Then
%>
        <div align="center"><img src="../img_fundo/<%=img_fundo("imagem")%>" width="380" height="380"></div>

<% 
else
%>
        <div align="center"><img src="../fotos/semFoto_gr.gif" border=0></div> 
<% 
End if 
%>

</div>

</form>

 

 

A página onde é redirecionada para fazer o UPLOAD é essa.... também está com os CODE reduzido ok?

 

Página "up-img_fundoOK.asp"

 


<%

... Aqui tem os code do upload da AspJpge ....

dadosDB.Execute("update img_fundo set imagem = '"& url_foto &"' WHERE id="& Session("img_fundo"))

Response.write "Sua Foto foi Cadastrada com Sucesso!"

response.write "<br><br>você será redirecionado em 5 segundos...<br>"
response.write "<meta http-equiv='refresh' content='3; url=img_fundo.asp'/>"
%>

 

Banco de dados: ACCESS

Tabela: img_fundo

Campo: Id "auto"

Campo: imagem "texto"

 

Preciso que tenha APENAS um Registro nesta Tabela.

 

Ou seja, quero poder ao clicar no link "Imagem de Fundo" me exibir a Foto que está na Base de dados, e poder troca-la quando necessário.

 

Mas não estou conseguindo fazer com que na hora do UpLoad, ele reconheça o REGISTRO ATUAL para fazer o UpDate no Registro Atual.

 

Muito obrigado a todos

 

Atenciosamente,

 

William

Compartilhar este post


Link para o post
Compartilhar em outros sites

como esta seu code de upload e qual componente esta usando ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Xanburzum, grato.

 

Está assim:

 


<!-- #include file = "../funcoes/upload_funcoes.asp" -->
<!--#include file="../conecta.asp"-->

<% 
If IsEmpty(Session("usuario")) Then Response.Redirect "./index.asp" End If
%>

<% 
Dim img_fundo, img_id, url_img
img_id = Request.querystring("img_id")
url_img = Server.UrlEncode(Request.querystring("url_img"))
Session("img_fundo") = img_fundo("imagem")
%>

<%
' Chamando Funções, que fazem o Upload funcionar
   byteCount = Request.TotalBytes
   RequestBin = Request.BinaryRead(byteCount)
   Set UploadRequest = CreateObject("Scripting.Dictionary")
   BuildUploadRequest (RequestBin)

' FotoVídeo Checa a extensão do arquivo, se é valida ou não
if UploadRequest.Item("imagem").Item("FileName") = "" then
anexo = "nao"
else

' Tipo de arquivo que esta sendo enviado
tipo_arquivo1 = split(UploadRequest.Item("imagem").Item("FileName"),".")
tipo_arquivo_1 = "." & tipo_arquivo1(ubound(tipo_arquivo1))

extensoesOk = ",.jpg,.jpe,.gif,"
'extensoesOk = ",.wmv,.wma,.mov,.mpg,.mpe,.mpeg,.avi,.flv,"  
exte = split(extensoesOk,",")

a = 0
for i=0 to ubound(exte)
if trim(Lcase(tipo_arquivo_1)) = trim(exte(i)) then
a = 1
end if
next

if a <> 1 then
response.write "<center><b>Foto da Imagem</b> está com Tipo de arquivo inválido!<br>"
response.write "Os arquivos permitidos são:<b> "& extensoesOk & "</b><br>"
response.write "Qualquer outra extensao não será permitida!</center>"
%>

<tr><td><div align="center"><a href="javascript:history.back()"><img src="../imagem/bt_voltar.gif" width="62" height="28" border="0"></a></div></td></tr>

<%
response.end
end if
end if

' Recuperando os Dados Digitados 

If UploadRequest.Item("imagem").Item("Value") <> "" Then 
   img_fundo = UploadRequest.Item("imagem").Item("Value")
Else
   img_fundo = "/"
End If


' Tipo de arquivo que esta sendo enviado
tipo_foto = UploadRequest.Item("imagem").Item("ContentType")

' Caminho completo dos arquivos enviados
caminho_foto = UploadRequest.Item("imagem").Item("FileName")

' Nome dos arquivos enviados
nome_foto = Right(caminho_foto,Len(caminho_foto)-InstrRev(caminho_foto,"\"))

' Conteudo binario dos arquivos enviados
img_fundo = UploadRequest.Item("imagem").Item("Value")

' pasta onde as imagens serao guardadas
   pasta = Server.MapPath("../img_fundo/")
nome_foto = "/"&nome_foto

' pasta + nome dos arquivos
url_foto = "" + nome_foto

' Fazendo o Upload do arquivo selecionado

   if img_fundo <> "" then
       Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
       Set MyFile = ScriptObject.CreateTextFile(pasta & nome_foto)
       For i = 1 to LenB(img_fundo)
       MyFile.Write chr(AscB(MidB(img_fundo,i,1)))
       Next
       MyFile.Close

'Reduz a Foto Maior "FOTOS".
Set Jpeg = Server.CreateObject("Persits.Jpeg")
Jpeg.Open up_5 + nome_foto

'L = 100

'If jpeg.OriginalWidth > jpeg.OriginalHeight Then
  'jpeg.Width = L
  'jpeg.Height = jpeg.OriginalHeight * L / jpeg.OriginalWidth
'Else
  'jpeg.Height = L
  'jpeg.Width = jpeg.OriginalWidth * L / jpeg.OriginalHeight
'End If


Jpeg.Save up_5 + nome_foto

Else
%>

<div align="center"><img src="../Fotos/semFoto_gr.gif" border=0></div>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>

<% 
End If 
%>

<%
dadosDB.Execute("update img_fundo set imagem = '"& url_foto &"' WHERE id="& Session("img_fundo"))

Response.write "Sua Foto foi Cadastrada com Sucesso!"

response.write "<br><br>você será redirecionado em 5 segundos...<br>"
response.write "<meta http-equiv='refresh' content='3; url=up-img_fundo.asp'/>"
%>

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Note que no update, você chama a session para comparar, mas não vi ela sendo criada na pagina anterior.

 

Trabalhar com session em asp é extremamente simples:

 

Criando uma session:

nomecli=request.form("clinome")
sql="select nome from cliente where nome='"&nomecli&"'"
set rs = conn.execute(sql)
Session("Cliente") = rs("nome")

 

Usando a session:

 

sql="select desconto from cliente where nome='"&Session("Cliente")&"'"
set rs = conn.execute(sql)

 

Limpando a session:

Session.Contents.Remove("Cliente")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na página "img_fundo.asp"

 

está dando erro

 

Type mismatch 

./img_fundo.asp, line 36

 

A linha 36 é essa:

Session("img_fundo") = imgFundo("imagem")

 

<%
Dim imgFundo
set imgFundo = dadosDB.Execute("SELECT imagem FROM img_fundo where imagem='"&imgFundo&"'")
imgFundo=request.form("imagem")
Session("img_fundo") = imgFundo("imagem")
%>

 

AGORA desta forma:

 

<%
Dim imgFundo, SQL, rs
imgFundo=request.form("imagem")
sql="select imagem from img_fundo where imagem='"&imgFundo&"'"
set rs = dadosDB.execute(sql)
Session("img_fundo") = rs("imagem")
%>

 

Da esse erro:

 

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record. 

./img_fundo.asp, line 36 

 

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Note que aqui:

 

<%
Dim imgFundo
set imgFundo = dadosDB.Execute("SELECT imagem FROM img_fundo where imagem='"&imgFundo&"'")
imgFundo=request.form("imagem")
Session("img_fundo") = imgFundo("imagem")
%>

 

Você declarara uma variável que será usada para armazenar o recordset e também servirá como parâmetro para o sql (?!?)

Por isso dá o erro de tipos incompatíveis.

 

No outro exemplo, existem 2 possibilidades:

A primeira mais obvia seria não ter registros no banco de dados.

A segunda seria a falta dos comandos que abrem a conexão ao banco de dados e o recordset:

set conn=server.createobject("adodb.connection")

conn.open strConexao

set rs=server.createobject("adodb.recordset")

...
...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Vinicius, grato,

 

Eu fiz assim agora:

 

<%
Dim imgFundo, url_img
imgFundo=Request.querystring("imagem")
imgFundo=Request.Form("imagem")
url_img = Server.UrlEncode(Request.querystring("url_img"))
set imgFundo = dadosDB.Execute("SELECT imagem FROM img_fundo where imagem='"&Session("imagem")&"'")

while not imgFundo.EOF 
img_id = imgFundo("imagem")

Session("imagem") = imgFundo("imagem")
%>
<%
imgFundo.MoveNext
wend
%>
       <form name="form1" action="up-img_fundoOK.asp" method="post" enctype="multipart/form-data" onSubmit="return Form_Validator(this)">
         <tr> 
           <td colspan="2">
		  <div align="left"><span class="cor4">FOTO da Imagem de Fundo </span></div></td>
         </tr>

         <tr> 
           <td width="260"> <input name="imagem" type="file" class="form" size="22" value="<%=Session("imagem")%>"></td>
           <td width="140">
		<div align="center"> 
               <input type="submit" name="enviar" class="botao" value="Enviar Foto">
             </div>
	    </td>
         </tr>

         <tr>
           <td colspan="2"> </td>
         </tr>

         <tr>
           <td colspan="2">

<div align="center">

<% 
' CODE verificação da imagem de fundo

set imgFundo = dadosDB.Execute("SELECT imagem FROM img_fundo WHERE id ORDER BY id")

'Faz a verificação da Foto, caso não tenha, mostra img de foto não disponivel
     If imgFundo.EOF = False Then
%>
        <div align="center"><img src="../img_fundo/<%=imgFundo("imagem")%>" width="380" height="380"></div>

<% 
else
%>
        <div align="center"><img src="../fotos/semFoto_gr.gif" border=0></div> 
<% 
End if 
%>

</div>

<br />			
		</td>
         </tr>
       </form>



<%
imgFundo.close
set imgFundo = nothing
%>

 

Assim redireciona para a Página de "up-img_fundoOK.asp"

 

Até sobe a Imagem para o SERVER..

 

Mas da erro na Página "up-img_fundoOK.asp"

 

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'id='. 

./up-img_fundoOK.asp, line 126 


LINHA 126 [code]dadosDB.Execute("update img_fundo set imagem = '"& url_foto &"' WHERE id="& Session("imagem"))

 

Parte do codigo está aqui:

 

<%
dadosDB.Execute("update img_fundo set imagem = '"& url_foto &"' WHERE id="& Session("imagem"))

Response.write "Sua Foto foi Cadastrada com Sucesso!"

response.write "<br><br>você será redirecionado em 5 segundos...<br>"
response.write "<meta http-equiv='refresh' content='3; url=up-img_fundo.asp'/>"
%>

 

[/code]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja que aqui:

... WHERE id="& Session("imagem")

 

Você faz a comparação de um campo numérico com um valor que provavelmente contem o nome da foto

Ao fazer o select na pagina anterior e criar a session, você precisa pegar o valor do id.

 

Seria algo assim:

set imgFundo = dadosDB.Execute("SELECT id,imagem FROM img_fundo where imagem='"&Session("imagem")&"'")
...

Session("id_imagem") = imgFundo("id")

 

e na outra página:

dadosDB.Execute("update img_fundo set imagem = '"& url_foto &"' WHERE id="& Session("id_imagem"))

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Vinicius, grato.

 

Ainda está com o mesmo erro.

 

Na segunda página.

 

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'id='. 

./up-img_fundoOK.asp, line 127 

 

na primeira página está assim:

 

<%
Dim imgFundo, url_img
imgFundo=Request.querystring("imagem")
imgFundo=Request.Form("imagem")
url_img = Server.UrlEncode(Request.querystring("url_img"))
set imgFundo = dadosDB.Execute("SELECT id,imagem FROM img_fundo where imagem='"&Session("imagem")&"'")

while not imgFundo.EOF 
img_id = imgFundo("imagem")

Session("id_imagem") = imgFundo("id")
%>
<%
imgFundo.MoveNext
wend
%>

 

na segunda página:

 

dadosDB.Execute("update img_fundo set imagem = '"& url_foto &"' WHERE id="& Session("id_imagem"))

 

O mesmo erro ainda...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se colocando aspas simples no where resolve:

 

... WHERE id='"& Session("id_imagem")&"'")

 

 

Caso não resolva, troque o dadosdb.execute por response.write e veja como está sendo construida a query sql, se os valores esperados estão sendo passados como deveriam

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Vinicius, grato.

 

Agora não apresenta erro, sobe a imagem para o SERVER, porém não GRAVA ou faz o UPDATE.

 

<%
Dim imgFundo, url_img
imgFundo=Request.querystring("id")
url_img = Server.UrlEncode(Request.querystring("url_img"))
set imgFundo = dadosDB.Execute("SELECT id, imagem FROM img_fundo where imagem='"&Session("imagem")&"'")


while not imgFundo.EOF 
img_id = imgFundo("imagem")

Session("imagem") = imgFundo("id")
%>

<%
imgFundo.MoveNext
wend
%>
       <form name="form1" action="up-img_fundoOK.asp" method="post" enctype="multipart/form-data" onSubmit="return Form_Validator(this)">
         <tr> 
           <td colspan="2">
		  <div align="left"><span class="cor4">FOTO da Imagem de Fundo </span></div></td>
         </tr>

         <tr> 
           <td width="260"> <input name="imagem" type="file" class="form" size="22"></td>
           <td width="140">
		<div align="center"> 
               <input type="submit" name="enviar" class="botao" value="Enviar Foto">
             </div>
	    </td>
         </tr>

         <tr>
           <td colspan="2"> </td>
         </tr>

         <tr>
           <td colspan="2">

<div align="center">

<% 
' CODE verificação da imagem de fundo

set imgFundo = dadosDB.Execute("SELECT imagem FROM img_fundo WHERE id ORDER BY id")

'Faz a verificação da Foto, caso não tenha, mostra img de foto não disponivel
     If imgFundo.EOF = False Then
%>
        <div align="center"><img src="../img_fundo/<%=imgFundo("imagem")%>" width="380" height="380"></div>

<% 
else
%>
        <div align="center"><img src="../fotos/semFoto_gr.gif" border=0></div> 
<% 
End if 
%>

</div>

<br />			
		</td>
         </tr>
       </form>



<%
imgFundo.close
set imgFundo = nothing
%>

 

 

A página do UPload e Update.

 

<%
dadosDB.Execute("update img_fundo set imagem = '"& url_foto &"' where imagem='"&Session("imagem")&"'")

Response.write "Sua Foto foi Cadastrada com Sucesso!"

response.write "<br><br>você será redirecionado em 5 segundos...<br>"
response.write "<meta http-equiv='refresh' content='3; url=up-img_fundo.asp'/>"
%>

 

Já não sei o que fazer....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai Ai, é por isso que até hoje nunca entendi sobre isso SESSION... é muito complicado.

 

Dei o Response.Write:

 

Página "up-img_fundo.asp"

 

<%
Dim imgFundo, url_img, SQL
imgFundo=Request.querystring("id")
url_img = Server.UrlEncode(Request.querystring("url_img"))
SQL="SELECT id, imagem FROM img_fundo where imagem='"&Session("imagem")&"'"

'response.write sql
'response.end()

set imgFundo = dadosDB.Execute(SQL)


while not imgFundo.EOF 
img_id = imgFundo("imagem")

Session("imagem") = imgFundo("id")
%>

<%
imgFundo.MoveNext
wend
%>

 

RESULTADO:

SELECT id, imagem FROM img_fundo where imagem=''

 

 

Página "up-img_fundoOk.asp"

 

<%
Dim SQL
SQL="update img_fundo set imagem = '"& url_foto &"' where imagem='"&Session("imagem")&"'"
'response.write SQL
'response.end()
dadosDB.Execute(SQL)

Response.write "Sua Foto foi Cadastrada com Sucesso!"

response.write "<br><br>você será redirecionado em 5 segundos...<br>"
response.write "<meta http-equiv='refresh' content='3; url=up-img_fundo.asp'/>"
%>

 

RESULTADO:

update img_fundo set imagem = '/img_meditacao.jpg' where imagem=''

 

 

Ele faz o Up da foto para o Server, mas não faz o Update no Banco de Dados.

 

 

Onde está esse erro???? por favor.

 

Grato

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.