Paulo Daniel Oliveira Posted May 10, 2012 at 09:34 AM Report #454218 Posted May 10, 2012 at 09:34 AM Boas... tou com duvidas em colocar uma inserir uma imagem no BD. Eu pretendo escolher a imagem que eu quero num formulário para inserir a imagem na base de dados. aqui fica o meu código. <form action="inserir.php" method="POST"> <table width="100" height="250"> <tr> <td width=250> Nome</td> <td> <input type="text" name="Nome" size="30"/>*</td> </tr> <tr> <td width=250>  Descrição</td> <td> <input type="textarea" name="descricao" value="descricao" size="200"/>*</td> </tr> <tr> <td width=250> Imagem</td> <td><input type="file" name="imagem" id="imagem" /></td> </tr> <table width="100" height="10" > <tr> </tr> </table> </form> $Nome=$_POST['Nome']; $descricao=$_POST['descricao']; $Imagem=$_files["Imagem"]; //$Pass=$_POST['pass']; echo $sql="INSERT INTO fogo (Nome,descricao,Imagem) VALUES ('$Nome','$descricao','$Imagem')"; ele consegue inserir todos os campos, menos a imagem... algem me poderá dizer o que fiz mal e como posso corrigir?
AndreLC Posted May 10, 2012 at 10:34 AM Report #454240 Posted May 10, 2012 at 10:34 AM Bom dia, No formulário falta-te o enctype="multipart/form-data". Ficará: <form action="inserir.php" method="POST" enctype="multipart/form-data"> Esse código abaixo do form é o que está no inserir.php, correcto? É que tens o form a apontar para a página inserir.php mas depois tens esse código em baixo. Fazendo o POST da imagem e se queres guardar o nome da imagem coloca: $imagem = $_FILES["imagem"]["name"]; Depois para mover o ficheiro tens que utilizar a função move_uploaded_file(), eu faço uso de uma função que fiz: function saveUploadedFileToCurrentPHPFolder (){ //patch absoluta do ficheiro na origem $origin=$_FILES["imagem"]['tmp_name']; //Onde está uploads é o nome da pasta que queres que a imagem vá $destination="uploads/".$_FILES["imagem"]["name"]; //path relativa do ficheiro, no directório corrente move_uploaded_file($origin, $destination); //move o ficheiro return $destination; } //saveUploadedFileToCurrentPHPFolder $whereIsTheSavedFile = saveUploadedFileToCurrentPHPFolder('imagem'); E entâo depois a query. Cumprimentos, AndreLC echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious.";
HappyHippyHippo Posted May 10, 2012 at 10:54 AM Report #454251 Posted May 10, 2012 at 10:54 AM tou com duvidas em colocar uma inserir uma imagem no BD. Eu pretendo escolher a imagem que eu quero num formulário para inserir a imagem na base de dados. não é boa política guardar a imagem na base de dados. o que normalmente se faz é guardar o ficheiro no servidor tendo uma referência na base de dados (nome original, nome no servidor) vê o exemplo dado para ver como se faz IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Paulo Daniel Oliveira Posted May 10, 2012 at 11:22 AM Author Report #454268 Posted May 10, 2012 at 11:22 AM antes de mais obrigado pelas respostas... Sim, agora também fiquei com a ideia que não é boa politica guardar a imagem na BD, acho que é melhor guardar o nome da imagem na bd, e guardar a imagem numa pasta a parte, e é isso que o exemplo do AndreLC me está a dizer para fazer, pelo menos foi o que eu percebi.. xD Copiei o código e alterei o necessário, (penso eu), mas isto dei-me uma serie de erros com a variável $imagem dizendo que a variável estava indefinida. Aqui fica o código que eu teho actualmente e os erros, talvez vos possa ajudar a ajudarem-me. mysql_select_db("teste2", $con); $Nome=$_POST['Nome']; $descricao=$_POST['descricao']; //$Imagem=$Imagem["Imagem"]; //$Pass=$_POST['pass']; $imagem = $_FILES["imagem"]["name"]; //LINHA17 function saveUploadedFileToCurrentPHPFolder (){ //patch absoluta do ficheiro na origem $origin=$_FILES["imagem"]['tmp_name']; //LINHA 21 //Onde está uploads é o nome da pasta que queres que a imagem vá $destination="C:\xampp\htdocs\siphp\PRAP\testes2/imagens".$_FILES["imagem"]["name"]; //path relativa do ficheiro, no directório corrente //LINHA23 move_uploaded_file($origin, $destination); //move o ficheiro return $destination; } //saveUploadedFileToCurrentPHPFolder $whereIsTheSavedFile = saveUploadedFileToCurrentPHPFolder('imagem'); echo $sql="INSERT INTO fogo (Nome,descricao,Imagem) VALUES ('$Nome','$descricao','$Imagem')"; //LINHA31 if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } Erros: Notice: Undefined index: imagem in C:\xampp\htdocs\siphp\PRAP\testes2\inserir.php on line 17 Notice: Undefined index: imagem in C:\xampp\htdocs\siphp\PRAP\testes2\inserir.php on line 21 Notice: Undefined index: imagem in C:\xampp\htdocs\siphp\PRAP\testes2\inserir.php on line 23 Notice: Undefined variable: Imagem in C:\xampp\htdocs\siphp\PRAP\testes2\inserir.php on line 31 INSERT INTO fogo (Nome,descricao,Imagem) VALUES ('gds','descricao','')
HappyHippyHippo Posted May 10, 2012 at 11:29 AM Report #454273 Posted May 10, 2012 at 11:29 AM qual o nome do parâmetro do ficheiro enviado no post ??? (não faço ideia mas não é Imagem) qual o nome que assumes no código apresentado ??? $origin=$_FILES["imagem"]['tmp_name']; // nome do parâmetro do post = "Imagem" IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Paulo Daniel Oliveira Posted May 10, 2012 at 11:34 AM Author Report #454275 Posted May 10, 2012 at 11:34 AM sim é se for isto que estejas a perguntar ai está a linha do botão.. <td><input type="file" name="imagem" /></td>
AndreLC Posted May 10, 2012 at 11:55 AM Report #454282 Posted May 10, 2012 at 11:55 AM O PHP é case sensitive. Logo $imagem VS $Imagem, são variáveis distintas. Na query tens $Imagem e deveria ser $imagem. Ali onde tens aquele caminho todo para onde queres que a imagem vá, bastará somente "imagens", isto se usares caminhos relativos... echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious.";
Paulo Daniel Oliveira Posted May 10, 2012 at 12:07 PM Author Report #454286 Posted May 10, 2012 at 12:07 PM ya... como ele para algumas coisas não é esquecime que ele era case sensitive para as variaveis... no entanto corrigi, e dá-me os mesmos erros...
HappyHippyHippo Posted May 10, 2012 at 12:09 PM Report #454287 Posted May 10, 2012 at 12:09 PM se da os mesmos erros é porque de alguma forma não estás a enviar o ficheiro : - verifica se realmente estas a enviar o ficheiro - verifica se colocaste o enctype no form IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now