Ir para conteúdo

POWERED BY:

Arquivado

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

Jow Xavier

[Resolvido] UPDATE com upload

Recommended Posts

Tenho um script de update que está ok, está atualizando as minhas informações, e tbm atualiza uma imagem, mas reparei q está havendo um erro, qd tenho imagens e outros dados cadastrados, só atualiza os dados e apaga a imagem. Gostaria q se alterar apenas os dados a imagem continuasse cadastrada. Abaixo o meu script:

 

<!-- #include file = "upload_funcoes.asp" -->
<%
' Chamando Funções, que fazem o Upload funcionar
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin

' Recuperando os Dados Digitados ----------------------
id_categoria = UploadRequest.Item("id_categoria").Item("Value")
cod_produto = UploadRequest.Item("cod_produto").Item("Value")
descricao = UploadRequest.Item("descricao").Item("Value")
id = UploadRequest.Item("id").Item("Value")

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

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

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

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

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

' pasta + nome dos arquivos
cfoto = "imagens" + nome_foto

' Fazendo o Upload do arquivo selecionado
if foto <> "" then
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(pasta & nome_foto)
For i = 1 to LenB(foto)
MyFile.Write chr(AscB(MidB(foto,i,1)))
Next
MyFile.Close
end if %>
<!--#include file="config/conexao.asp"-->
<%

call abre_conectar

sql = "UPDATE produtos SET id_categoria = '"&id_categoria&"', cod_produto='"&cod_produto&"', descricao='"&descricao&"', foto = '"&cfoto&"' WHERE id ="&id

'Caso ocorra um erro esta função de erro será chamada
On error Resume Next
'Executaa inserção no Banco de Dados 
set tab = cnn.execute(sql)
'Fecha o Objeto de Conexão
call fecha_conectar
set tab = nothing 
if err = 0 Then
	'Redireciona o usuário caso não tenha ocorrido erro na transação
	response.redirect "menu.asp"
end if
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça uma verificação no campo antes de atualizar

 

isso aqui resolve

 

if foto <> "" then
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(pasta & nome_foto)
For i = 1 to LenB(foto)
MyFile.Write chr(AscB(MidB(foto,i,1)))
Next
MyFile.Close
sql = "UPDATE produtos SET id_categoria = '"&id_categoria&"', cod_produto='"&cod_produto&"', descricao='"&descricao&"', foto = '"&cfoto&"' WHERE id ="&id
else
sql = "UPDATE produtos SET id_categoria = '"&id_categoria&"', cod_produto='"&cod_produto&"', descricao='"&descricao&"' WHERE id ="&id
end if

repare que após o else eu retirei o campo FOTO!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde Ted'K ñ deu certo, e a tela ficou em branco ñ ecutou o script fiz assim:

if foto <> "" then
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(pasta & nome_foto)
For i = 1 to LenB(foto)
MyFile.Write chr(AscB(MidB(foto,i,1)))
Next
MyFile.Close%>
<!--#include file="config/conexao.asp"-->
<%

call abre_conectar
sql = "UPDATE produtos SET id_categoria = '"&id_categoria&"', cod_produto='"&cod_produto&"', descricao='"&descricao&"', foto = '"&cfoto&"' WHERE id ="&id
else
sql = "UPDATE produtos SET id_categoria = '"&id_categoria&"', cod_produto='"&cod_produto&"', descricao='"&descricao&"' WHERE id ="&id
end if


'Caso ocorra um erro esta função de erro será chamada
On error Resume Next
'Executaa inserção no Banco de Dados 
set tab = cnn.execute(sql)
'Fecha o Objeto de Conexão
call fecha_conectar
set tab = nothing

Compartilhar este post


Link para o post
Compartilhar em outros sites

este é o erro: Tipo de erro:

Erro de tempo de execução do Microsoft VBScript (0x800A01A8)

Objeto necessário: ''

/visao_musical/admin/altera_dados_produtos.asp, line 55 Linha 55 é a set tab = cnn.execute(sql), onde eu exuto meu sql .....

Compartilhar este post


Link para o post
Compartilhar em outros sites

voce nao criou um dos dois objetos usados

Compartilhar este post


Link para o post
Compartilhar em outros sites

você está dezendo q eu ñ executei um algúm sql: fiz assim

' Fazendo o Upload do arquivo selecionado
if foto <> "" then
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(pasta & nome_foto)
For i = 1 to LenB(foto)
MyFile.Write chr(AscB(MidB(foto,i,1)))
Next
MyFile.Close%>
<!--#include file="config/conexao.asp"-->
<%

call abre_conectar
sql = "UPDATE produtos SET id_categoria = '"&id_categoria&"', cod_produto='"&cod_produto&"', descricao='"&descricao&"', foto = '"&cfoto&"' WHERE id ="&id
'Caso ocorra um erro esta função de erro será chamada
On error Resume Next
'Executaa inserção no Banco de Dados 
set tab = cnn.execute(sql)

else

sql = "UPDATE produtos SET id_categoria = '"&id_categoria&"', cod_produto='"&cod_produto&"', descricao='"&descricao&"' WHERE id ="&id
end if
'Caso ocorra um erro esta função de erro será chamada
On error Resume Next
'Executaa inserção no Banco de Dados 
set tab = cnn.execute(sql)
'Fecha o Objeto de Conexão
call fecha_conectar
set tab = nothing

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu particularmente estou achando esse tópico muito grande (hauahuaha)

 

vamos logo terminar com isso, faz assim:

 

<!--#include file="upload_funcoes.asp"-->
<!--#include file="config/conexao.asp"-->
<%
' Chamando Funções, que fazem o Upload funcionar
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin

' Recuperando os Dados Digitados ----------------------
id_categoria = UploadRequest.Item("id_categoria").Item("Value")
cod_produto = UploadRequest.Item("cod_produto").Item("Value")
descricao = UploadRequest.Item("descricao").Item("Value")
id = UploadRequest.Item("id").Item("Value")

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

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

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

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

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

' pasta + nome dos arquivos
cfoto = "imagens" + nome_foto


call abre_conectar
' Fazendo o Upload do arquivo selecionado
if foto <> "" then
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(pasta & nome_foto)
For i = 1 to LenB(foto)
MyFile.Write chr(AscB(MidB(foto,i,1)))
Next
MyFile.Close
sql = "UPDATE produtos SET id_categoria = '"&id_categoria&"', cod_produto='"&cod_produto&"', descricao='"&descricao&"', foto = '"&cfoto&"' WHERE id ="&id
cnn.execute(sql)
if err = 0 Then : response.redirect "menu.asp" : end if
Else
sql = "UPDATE produtos SET id_categoria = '"&id_categoria&"', cod_produto='"&cod_produto&"', descricao='"&descricao&"' WHERE id ="&id
cnn.execute(sql)
if err = 0 Then : response.redirect "menu.asp" : end if
end if
'Caso ocorra um erro esta função de erro será chamada
On error Resume Next
'Executaa inserção no Banco de Dados
'Fecha o Objeto de Conexão
call fecha_conectar
set tab = nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara acabei de fazer isso, eu ia postar a minha resolução igualzinha a sua hehehehe ... Ae valeu mais uma vez pela ajuda ... Brigadão. Problema resolvido ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estava com o mesmo problema no mesmo script só que faço upload de duas imagens ao mesmo tempo. Daí olhando o post de vocês e tentanto arrumar esse probleminha, acredito que consegui resolver o problema com menos código. É assim:

Declarei a variável img_produto que vai receber como parâmetro a informação do form que se quer atualizar

CODE
img_produto = UploadRequest.Item("img_produto").Item("Value")

e no trecho do código que move a imagem para a pasta selecionada, acrescentei um else informando que a variável responsável pela atualização do campo de imagem, caso ela estivesse vazia, ela seria igual à variável "img_produto" declarada acima. sendo assim, temos o código:

 

CODE
if foto1 <> "" then

Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")

Set MyFile = ScriptObject.CreateTextFile(pasta & nome_foto1)

For i = 1 to LenB(foto1)

MyFile.Write chr(AscB(MidB(foto1,i,1)))

Next

MyFile.Close

else

cfoto1=img_produto 'a variável cfoto fará parte do uptade na base de dados

end if

e por fim, acrescenta-se o código de update para a base de dados.

 

A lógica uilizada foi a seguinte: Se o campo de foto não for preenchido, utilizo a informação já existente no banco de dados, caso contrário, altero com a informação selecionada pelo usuário.

 

Código completo para a atualização de uma base de dados com duas opções de upload de imagem.

 

CODE
<!-- #include file="Upload.inc" -->

 

<%

 

' Chamando Funções, que fazem o Upload funcionar

byteCount = Request.TotalBytes

RequestBin = Request.BinaryRead(byteCount)

Set UploadRequest = CreateObject("Scripting.Dictionary")

BuildUploadRequest RequestBin

 

' Recuperando os Dados Digitados ----------------------

cod_produto = UploadRequest.Item("cod_produto").Item("Value")

 

nome_produto = UploadRequest.Item("nome_produto").Item("Value")

descricao = UploadRequest.Item("descricao").Item("Value")

cod_categoria = UploadRequest.Item("cod_categoria").Item("Value")

cod_subcategoria = UploadRequest.Item("cod_subcategoria").Item("Value")

motor = UploadRequest.Item("motor").Item("Value")

voltagem = UploadRequest.Item("voltagem").Item("Value")

detalhe = UploadRequest.Item("detalhe").Item("Value")

img_produto = UploadRequest.Item("img_produto").Item("Value")

explodida = UploadRequest.Item("explodida").Item("Value")

 

' Tipo de arquivo que esta sendo enviado

tipo_foto = UploadRequest.Item("foto").Item("ContentType")

tipo_foto1 = UploadRequest.Item("foto1").Item("ContentType")

'response.Write(""&tipo_foto&"")

' Caminho completo dos arquivos enviados

caminho_foto = UploadRequest.Item("foto").Item("FileName")

caminho_foto1 = UploadRequest.Item("foto1").Item("FileName")

 

' Nome dos arquivos enviados

nome_foto = Right(caminho_foto,Len(caminho_foto)-InstrRev(caminho_foto,"\"))

nome_foto1 = Right(caminho_foto1,Len(caminho_foto1)-InstrRev(caminho_foto1,"\"))

 

' Conteudo binario dos arquivos enviados

foto = UploadRequest.Item("foto").Item("Value")

foto1 = UploadRequest.Item("foto1").Item("Value")

 

' pasta onde as imagens serao guardadas

pasta = Server.MapPath("../imagem/")

pasta1 = Server.MapPath("../explodidas/")

nome_foto = "/"&nome_foto

nome_foto1 = "/"&nome_foto1

 

' pasta + nome dos arquivos

cfoto = nome_foto

cfoto1 = nome_foto1

 

 

' Fazendo o Upload do arquivo selecionado

if foto <> "" then

Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")

Set MyFile = ScriptObject.CreateTextFile(pasta1 & nome_foto)

For i = 1 to LenB(foto)

MyFile.Write chr(AscB(MidB(foto,i,1)))

Next

MyFile.Close

else

cfoto=explodida

end if

 

if foto1 <> "" then

Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")

Set MyFile = ScriptObject.CreateTextFile(pasta & nome_foto1)

For i = 1 to LenB(foto1)

MyFile.Write chr(AscB(MidB(foto1,i,1)))

Next

MyFile.Close

else

cfoto1=img_produto

end if

 

' Conecta-se ao Banco de Dados

url_conexao = Server.MapPath("../bd/azzurra.mdb")

set conexao = Server.CreateObject("ADODB.Connection")

conexao.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&url_conexao

 

 

sql = "update produto set nome_produto='"&nome_produto&"', descricao='"&descricao&"', detalhe='"&detalhe&"', cod_categoria='"&cod_categoria&"', cod_subcategoria='"&cod_subcategoria&"', motor='"&motor&"', voltagem='"&voltagem&"', img_produto='"&cfoto1&"', explodida='"&cfoto&"' where cod_produto="&cod_produto&""

set rs = conexao.execute(sql)

'response.Write(""&sql&"")

response.redirect "admin.asp?pagina=" & Request.QueryString("pagina")

rs.close

db.close

set rs = nothing

set db = nothing

 

 

%>

 

 

Notem os campos em negrito, eles são referentes aos campos de imagem utilizados no script. Espero que ajude.

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.