Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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.
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")
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
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")
...
...
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
dadosDB.Execute("update img_fundo set imagem = '"& url_foto &"' WHERE id="& Session("imagem"))
Parte do codigo está aqui:
"
%>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"))
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...
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
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....
Dá um response.write nas querys sql e na session e veja como estão sendo construidas e se estão com os valores certos.
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
como esta seu code de upload e qual componente esta usando ?