A Imagem Está Na Pasta Mas O Banco Tem O Caminho
#1
Posted 06/09/2005, 11:25
Tenho um form em envia as informações p/ o bd tipo nome, etc... e redireciona para outro form onde acontece o upload das imagens e funciona direitinho gravando na pasta certa, mas no bd não grava o caminho da imagem, então qndo chama a página as informações estão lá menos a imagem.Fico até sem jeito de perguntar isso mas, por favor me ajudem aí!
#2
Posted 06/09/2005, 11:39
deve ser coisa cimples..posta aí.
---------------------------------------------------------------------------
> BRdesign.NET - Soluções em Websites e Sistemas E-Commerce.
---------------------------------------------------------------------------
> BR-ecommerce - Sua loja virtual na internet! - Apenas R$99,90 mensais (hospedagem inclusa)!
#3
Posted 06/09/2005, 11:56
<% 'Criando variáveis Dim localbd, meubd 'Indicando local do Banco de dados localbd="driver={microsoft access driver (*.mdb)};dbq=" & server.mappath("../bd/base.mdb") 'Setando conexões set meubd=server.createobject("adodb.connection") meubd.Open localbd 'Declarando as variáveis que receberão os valores do form dim titulo, chamada, tipo, conteudo, expira, data, destaque, fonte, autor titulo=request.form("titulo") chamada=request.form("chamada") tipo=request.form("tipo") conteudo=request.form("conteudo") expira=request.form("expira") data=day(now)&"/"&month(now)&"/"&year(now) destaque=request.form("destaque") fonte=request.form("fonte") autor=request.form("autor") 'Faremos aqui a inserção de todos os dados digitados no form anterior meubd.EXECUTE "INSERT INTO noticias (titulo, chamada, tipo, conteudo, expirar, data, destaque, fonte, autor) values ('"&titulo&"','"&chamada&"',"&tipo&",'"&conteudo&"','"&expira&"','"&data&"',"&destaque&",'"&fonte&"','"&autor&"')" 'Logo após a inserção dos dados, mostrará uma mensagem e voltará para a página principal.asp response.write "<script>location = 'inserefoto1.asp';alert('Sua notícia foi cadastrada com sucesso!')</script>" %>Depois vem a inserefoto1 que é onde tem o outro fom e de pois vem o upload
<%
'este programa recebe infomações binárias de um formulário.
server.scripttimeout=10000
' é importante setar esta propriedade para um valor alto porque pode demorar um bom tempo para as informações trafegarem pela Internet entre o computador cliente e o computador Servidor. Como o ASP tem um tempo máximo para processar um Script, caso esta propriedade esteja baixa você corre o risco de ter um erro de Script Time Out na tela.
On Error Resume Next
Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
' instanciando o componente aspSmartUpload.SmartUpload e setando algumas propriedades muito importantes:
' a propriedade abaixo indica que o componente só deve aceitar arquivos com as terminações indicadas. Isso é muito importante, do contrário um usuário malicioso poderia subir um script que apaga todos os arquivos de um HD e executá-lo no Servidor com resultados desastrosos como você pode imaginar. Impedir a entrada de arquivos BMP é outra boa idéia, eles são imensos e podem esgotar rapidamente o espaço de um HD.
mySmartUpload.AllowedFilesList = "jpg,gif"
' esta propriedade indica que cada arquivo deve ter no máximo 8000 bytes.
mySmartUpload.MaxFileSize = 8000
' esta propriedade indica que a soma dos arquivos deste upload não deve ultrapassar 50000.
mySmartUpload.TotalMaxFileSize = 50000
' executa o upload
mySmartUpload.Upload
' vamos agora escrever na tela as informações recebidas do Formulário
'response.write(mySmartUpload.form("nome"))
'response.write(mySmartUpload.form("telefone"))
'response.write(mySmartUpload.form("endereco"))
' repare que não estamos usando o Objeto Request para acessar as informações de um formulário. Como as informações estão em formato binário, devemos usar o componente AspSmartUpload e seu método chamado FORM.
' tratando a foto do Formulário
For each file In mySmartUpload.Files
If not file.IsMissing Then
file.SaveAs("../imagens/" & file.FileName)
End If
Next
' o loop acima percorrerá todos os controles do tipo File, no nosso exemplo apenas um chamado "foto". O método SaveAs colocará o arquivo na pasta "/pessoas/fotos/" do Servidor.
' tratando eventuais erros
If Err.number>0 Then
Response.Write("<p><br><br>Um dos seguintes erros aconteceu: você tentou subir um arquivo cuja terminação não é GIF nem JPG. Ou então a imagem que você subiu é maior que 8.000 bytes(8 kb. ). A operação foi cancelada. Por favor tente de novo. ")
response.end
End If
Response.redirect "principal.asp"
' fim do programa.
%>
Aí qndo eu tento chamar a imagem na outra página ela não aparece eu chamo a imagem assim:
<img src="imagens/<%=rsNoticias("imagem")%>" border="0" align="left" hspace="8" vspace="2">
Obrigado
#4
Posted 06/09/2005, 13:17
Fiz um script para fazer o upload de ficheiros e registar seu nome na db, só que surge
um problema , como o form é "enctype="multipart/form-data"" ele faz o upload e não
regista na base de dados. Se tirar o "enctype="multipart/form-data"" ele regista na
base de dados e não faz o upload.
Alguem sabe explicar porque isso acontece????
#5
Posted 06/09/2005, 14:15
meubd.EXECUTE "INSERT INTO noticias (titulo, chamada, tipo, conteudo, expirar, data, destaque, fonte, autor) values ('"&titulo&"','"&chamada&"',"&tipo&",'"&conteudo&"','"&expira&"','"&data&"',"&destaque&",'"&fonte&"','"&autor&"')"
O que ele fez foi inserir estes registros e depois chamar a página que usa o componente para fazer o upload na pasta que esta no servidor
For each file In mySmartUpload.Files
If not file.IsMissing Then
file.SaveAs("../imagens/" & file.FileName)
End If
Next
Po isto quando vc chama rsNoticia("imagem"), ele não aparece nada.
Edição feita por: Lengrat, 06/09/2005, 14:17.
#6
Posted 06/09/2005, 14:38
imagem = SmartUpload.form("imagem")???
#7
Posted 06/09/2005, 15:00
<%
Option Explicit
'Criando variáveis
Dim localbd, meubd, rsMenu, rsNoticias, rsOutras
'Indicando local do Banco de dados
localbd="driver={microsoft access driver (*.mdb)};dbq=" & server.mappath("bd/base.mdb")
'Setando conexões
set meubd=server.createobject("adodb.connection")
set rsMenu=server.createobject("adodb.recordset")
set rsNoticias=server.createobject("adodb.recordset")
set rsOutras=server.createobject("adodb.recordset")
meubd.Open localbd
'Esta SELECT irá selecionar todos os tipos de notícias
'Em nosso caso, iremos desenvolver um menu diretamente com os itens cadastrados
rsMenu.Open "SELECT * from noticias_tipo order by tipo", meubd
'Esta SELECT irá obter o registro que o codnoticia é igual ao enviado por querystring
rsNoticias.Open "SELECT * from noticias, noticias_tipo where codnoticia="& request.querystring("cod") &" and codtipo=noticias.tipo", meubd
'Agora selecionaremos todos os outros registros onde o tipo é igual ao da notícia selecionada
'porém o codnotícia seja diferente
'E com as mesmas condições feitas na SELECT da página principal
'A validação de data
rsOutras.Open "SELECT * from noticias where tipo="& rsNoticias("codtipo") &" and codnoticia<> "& rsNoticias("codnoticia") &" and day(expirar)>="& day(now) &" and month(expirar)>="& month(now) &" and year(expirar)>="& year(now) &" order by data desc", meubd
%>
#8
Posted 06/09/2005, 15:11
Ou então, se vc so faz um upload por vez, tente fazer isto para pegar o nome da imagem só:
For each file In mySmartUpload.Files
If not file.IsMissing Then
file.SaveAs("../imagens/" & file.FileName)
imagem= file.FileName
End If
Next
E depois vc faz o insert.
Cria uma conexao, cria um recordset, executa o sql
Set conexao=server.createobject("adodb.connection")
sql= "INSERT INTO noticias (imagem) values ('"&imagem&"')"
Set Rs = conexao.execute(sql)
Em teoria deve funcionar.
Edição feita por: Lengrat, 06/09/2005, 15:32.
#9
Posted 06/09/2005, 15:23
Quando vc faz RsNoticias("imagem"), vc está tentando pegar o valor do campo imagem que deve estar vazio, e por isso nao aparece.
Observe como é montado o RsNoticias
'Esta SELECT irá obter o registro que o codnoticia é igual ao enviado por querystring rsNoticias.Open "SELECT * from noticias, noticias_tipo where codnoticia="& request.querystring("cod") &" and codtipo=noticias.tipo", meubd
Ele está pegando todos os campos (SELECT) da tabela noticias onde( WHERE ) o campo "COD" é o valor do request.querystring("cod"). O Regiustro que tem o cod passado pelo request, deve estar com o campo imagem vazio.
checa isso la no banco.
#10
Posted 06/09/2005, 15:37
#11
Posted 06/09/2005, 16:05
Agora deixa eu entender... vc tem um formulario onde vc insere uma notícia e depois chama um outro formulario para inserir uma imagem referente a esta notícia, correto?
Se for isso, entao na pagina que vc inseriu a noticia vc nao mexe nela e na pagina que insere a imagem vc aletera
For each file In mySmartUpload.Files If not file.IsMissing Then file.SaveAs("../imagens/" & file.FileName) End If Next
para
For each file In mySmartUpload.Files
If not file.IsMissing Then
file.SaveAs("../imagens/" & file.FileName)
imagem= file.FileName
End If
Next
Com isso vc armazena na variavel imagem, o nome exato do arquivo que vai ser "uploadado".
Depois vc faz um Select para saber em qual "CodNoticia" ser inserido a imagem.
como em tese todo índice de tabela, na maioria das vezes, é um campo numérico, creio que codnoticia seja a chave da talela notícia e seja um número. Então eu uso a função max para pegar o valor do ultimo registro inserido sem ter o campo imagem preenchido, lembra?
'Faremos aqui a inserção de todos os dados digitados no form anterior meubd.EXECUTE "INSERT INTO noticias (titulo, chamada, tipo, conteudo, expirar, data, destaque, fonte, autor) values ('"&titulo&"','"&chamada&"',"&tipo&",'"&conteudo&"','"&expira&"','"&data&"',"&destaque&",'"&fonte&"','"&autor&"')"
Pra isso eu faço
Set conexao= server.createobject(adodab.connection)
Sql="Select max(codnoticia) from notícias"
Set Rs_Busca= conexao.execute(sql)
Armazena o valor em uma variavel
cod= Rs_Busca("codnoticia")
Depois vc insere a imagem no codnoticia adequado
sql2= "INSERT INTO noticias (imagem) values ('"&imagem&"') WHERE codnoticias='"&cod&"'"
Set Rs = conexao.execute(sql2)
Edição feita por: Lengrat, 06/09/2005, 16:13.
#12
Posted 06/09/2005, 16:12
#13
Posted 06/09/2005, 16:48
ADODB.Recordset (0x800A0CC1)
O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado.
/sistema_noticias/adm/gravaimagem.asp, line 11
<%
Set conexao= server.createobject("adodb.connection")
localbd="driver={microsoft access driver (*.mdb)};dbq=" & server.mappath("../bd/base.mdb")
conexao.open localbd
Sql="Select max(codnoticia) from noticias"
Set Rs_Busca= conexao.execute(sql)
'Armazena o valor em uma variavel
cod= Rs_Busca("codnoticia")
'Depois vc insere a imagem no codnoticia que foi criado
sql2= "INSERT INTO noticias (imagem) values ('"&imagem&"') WHERE codnoticias='"&cod&"'"
Set Rs = conexao.execute(sql2)
%>
Edição feita por: zeronarfa, 08/09/2005, 08:34.
#14
Posted 06/09/2005, 17:07
Depois de criar ela no Set conexao,
em baixo vc coloca conexao.open
Set conexao= server.createobject("adodb.connection")
localbd="driver={microsoft access driver (*.mdb)};dbq=" & server.mappath("../bd/base.mdb")
conexao.open localdb
Sql="Select max(codnoticia) from noticias"
Set Rs_Busca= conexao.execute(sql)
Edição feita por: Lengrat, 06/09/2005, 17:13.
#15
Posted 06/09/2005, 17:18
REGRAS
[]'s
“Obstáculos são aquelas coisas medonhas que você vê quando tira seus olhos de seu objetivo” (Henry Ford)
“É impossível para um homem aprender aquilo que ele acha que já sabe.” (Epíteto)
“A única razão da existência do tempo é para que todas as coisas não aconteçam de uma vez.”(Albert Einstein)
0 user(s) are reading this topic
0 membro(s), 0 visitante(s) e 0 membros anônimo(s)