Ir para conteúdo
cristianomg

Gravar no banco após gerar Upload de imagem

Recommended Posts

E ae pessoal,

Preciso de uma orientação no seguinte,

Fazendo algumas pesquisas cheguei no código onde seleciono multiplas imagens e as coloco em uma pasta especifica, até tranquilo.

Mas agora eu preciso que dentro do meu foreach  cada imagem seja gravada na base de dados, ou seja, ao receber cada imagem eu terei de gravar na base linha a linha.

Tentei colocar o insert dentro do foreach mas não deu...algué tem alguma orientação de onde posso incluir meu insert por exem da tabela imagens ( codimg, nomeimagem )

 

Fiz o meu foreach desta forma:

 

 

 

 session_start();
 foreach($_FILES['images']['error'] as $key => $error){
	 
	 if($error == UPLOAD_ERR_OK){
		 $name = $_FILES['images']['name'][$key];
		 $_SESSION['imagens'][] = $name;
		 move_uploaded_file($_FILES['images']['tmp_name'][$key], 'imagens/anuncios/upload/'.$name);
		 }
		 

		// Eu encontrei esta instrução abaixo mas não acredito que seja a forma mais adequada e esta tb não funcionou
		foreach($_SESSION['imagens'] as $key => $imagem){
		$sql = "INSERT INTO fotos_anuncio ( nomeimagem) VALUES ('$imagens');" or die(mysql_error());
		if($resultado=mysql_query($sql)){
			echo "<script>alert('salvou');</script>";
			}else{
			echo  die(mysql_error());
			echo "Deu guru!";
			}
		 }
 }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei desta forma e também não deu..

 

 

 

session_start();
 foreach($_FILES['images']['error'] as $key => $error){
	 
	 if($error == UPLOAD_ERR_OK){
		 $name = $_FILES['images']['name'][$key];
		 $_SESSION['imagens'][] = $name;
		 move_uploaded_file($_FILES['images']['tmp_name'][$key], 'imagens/anuncios/upload/'.$name);
         /// tentei incluir aquei dentro do foreach e não deu ..
$sql = "INSERT INTO fotos_anuncio ( nomeimagem) VALUES ('$imagens');" or die(mysql_error());
		if($resultado=mysql_query($sql)){
			echo "<script>alert('salvou');</script>";
			}else{
			echo  die(mysql_error());
			echo "Deu guru!";
			}

		 }
 }

Alguém sabe outro meio para atender isso ?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que acontece de errado?

 

o primeiro código não faz sentido porque você fez um loop dentro do outro.
mas qual o problema desse segundo? o que aparece? 

 

isso aqui:

$sql = "INSERT INTO fotos_anuncio ( nomeimagem) VALUES ('$imagens');" or die(mysql_error());

está errado.
tente assim:

 

session_start();
foreach($_FILES['images']['error'] as $key => $error){
   
  if($error == UPLOAD_ERR_OK){
    $name = $_FILES['images']['name'][$key];
    $_SESSION['imagens'][] = $name;
    move_uploaded_file($_FILES['images']['tmp_name'][$key], 'imagens/anuncios/upload/'.$name);
         
    $sql = "INSERT INTO fotos_anuncio (nomeimagem) VALUES ('$name');";
    mysql_query($sql) or die(mysql_error());
  }
}

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei,

Na verdade a tela carrega as fotos na div, chama o javascript para upload das fotos na pasta, mas passa batido pelo INSERT.

Nem uma mensagem pelo insert exibe em tela...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então procure no log da aplicação o que está acontecendo.
Sem mensagem de erro é impossível averiguarmos. Como o problema é PHP vou transferir teu tópico de fórum.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem que ver os logs do servidor. E não no F12.

Pesquise como ver os logs do php/apache no teu sistema operacional.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa William,
Olhei no easy nos log files > Apache error e Mysql error , e não contém nada na data atual quando tento executar as inclusões.

Vou ver se acho algum outro tipo, de envio com preview de múltiplas imagens pra base de dados.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

RESOLVIDO

 

 

Opa descobri,
havia um bloqueio no servidor, devido ao limite de "mb" de envio das imagens, acho que estava impedindo de certa forma isso.

Segue para quem precisar usar um dia.

 

Seleção das imagens:

 

				<form action="upload.php" enctype="multipart/form-data" method="post" >
					<input type="file" name="images[]" id="images" multiple>
					<button  type="submit" id="btn">Enviar Arquivos</button>
				</form>

 

 

Publicando na base de dados:

 <?php 
session_start();
include "conexao_banco";

foreach($_FILES['images']['error'] as $key => $error){
   
  if($error == UPLOAD_ERR_OK){
    $name = $_FILES['images']['name'][$key];
    $_SESSION['imagens'][] = $name;
    move_uploaded_file($_FILES['images']['tmp_name'][$key], 'local onde ira mover as imagens/'.$name);
         
    $sql = "INSERT INTO tabela (nomeimagem) VALUES ('$name');";
    mysql_query($sql) or die(mysql_error());
  }
}
 
 ?>

 

 

William obrigado pela atenção ae. :thumbsup:

 

 

faz tempo que não entro no site e mudou, onde eu coloco o post como resolvido ?

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me deparei com mais um ultimo ponto para fechar.

Eu precisaria passar um id de anuncio como parâmetro

 

Tentei de duas formas: passando por input text e pegando no $_POST e/ ou passando por GET e pegando por $_GET

Mas ele insere zero na base, tipo não pega o POST ou o GET

 

Não entendi....

<form action="upload.php?id=<?php echo $_GET['id']?>" enctype="multipart/form-data" method="post" >
				<input type="text" name="idanuncio" value="25">
					<input type="file" name="images[]" id="images" multiple>
					<button  type="submit" id="btn">Enviar Arquivos</button>
				</form>

 

Para salvar na base o idanuncio

 


foreach($_FILES['images']['error'] as $key => $error){
  
  
	if($error == UPLOAD_ERR_OK){
    $name = $_FILES['images']['name'][$key];
    $_SESSION['imagens'][] = $name;
    move_uploaded_file($_FILES['images']['tmp_name'][$key], 'imagens/anuncios/upload/'.$name);
	
	$idanuncio = $_POST['idanuncio'];   
**ou usando GET	
	$idanuncio = $_GET['idanuncio'];         

    $sql = "INSERT INTO fotos_anuncio (idanuncio, nomeimagem) VALUES ('$idanuncio','$name');";
    mysql_query($sql) or die(mysql_error());
  }
}
 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
<input type="hidden" name="id" value="<?=$_GET['id']?>">

Add no form um input escondido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ae Williams

Justamente fiz isto mas não vai, as imagens estão sendo salva na base corretamente mas o input text que contém meu valor ou até mesmo o $_GET não absorve o valor no arquivo upload.php

 

Não sei o que pode ser que acontece...

Inseri diretamente o valor e no arquivo upload.php não esta pegando este valor do input,..

<input type="text" name="idanuncio" value="25">

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
<form action="upload.php" enctype="multipart/form-data" method="post" >
    <input type="hidden" name="idanuncio" value="25">
    <input type="file" name="images[]" id="images" multiple>
    <button  type="submit" id="btn">Enviar Arquivos</button>
 </form>



Faça um debug nos dados . 
 

upload.php


var_dump($_POST);

e ve se chega o post

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vem este retorno:

array(1) { ["idanuncio"]=> string(2) "25" }

Só que tem uma coisa Williams...eu uso um js que faz o esquema das imagens multiplas e chama o upload.php .

Cara eu acho que eu deve passar este parametro pelo JS ..

Bha só pode ser isso não é?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o teste, mas se você fez o debug e esta aparecendo a string lá porque já foi enviada ou não!?

Testa diretamente, cara isso é bem básico, seja passado por js ou não!
 

$idanuncio = isset( $_POST['idanuncio'] ) ? $_POST['idanuncio'] : false;

echo $idanuncio;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por onedev
      Olá Pessoal,

      qual a forma mais segura de filtrar um upload asp de arquivos para somente imagens?

      Tentei reconhecer a extensão do arquivo e limitar apenas upload de arquivo .gif/.jpg e também filtrar pelo tipo de arquivo. Porém algum mal intencionado pode simplesmente renomear um arquivo malicioso para .gif, fazer o upload e depois acessar o arquivo para executa-lo. Alguém conhece ou recomenda algum filtro eficiente?

      Utilize os seguintes recursos:
      For Each File in Upload.Files 
         If File.ContentType <> "image/gif" Then 
            Resposta = "Arquivo enviado nao e um formato valido de imagem." 
            File.Delete 
         End If 
      Next
       
      For Each File in Upload.Files 
         If UCase(Right(File.Path, 3)) <> "gif" Then 
            Resposta = "Arquivo enviado nao e um formato valido de imagem." 
            File.Delete 
         End If 
      Next
       
    • Por Mateus_Jp
      Boa Tarde Senhores,
       
      Estou iniciando meus estudos em PHP e já consegui fazer várias coisas hehe...
       
      Meu sistema de Upload de Arquivos está funcionando tudo OK, copiando a imagem do PC para a pasta img dentro do www.
      Porém essa mensagem de erro está me incomodando e não sei como solucionar, já vi algumas sugestões na internet mas nada resolveu ainda.
      Não queria meu sistema funcionando mas com uma mensagem de erro.
       
      Warning: copy(): Filename cannot be empty in C:\AppServ\www\login\pags\cadastro.php on line 48
       
      Meu código (cadastro.php):
      <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>    <script>     $(document).ready(function(){     $('#showPassword').on('click', function(){          var passwordField = $('#password');     var passwordFieldType = passwordField.attr('type');     if(passwordFieldType == 'password')     {         passwordField.attr('type', 'text');         $(this).val('Ocultar');     } else {         passwordField.attr('type', 'password');         $(this).val('Mostrar');     }   }); }); </script> </head> <body> <h4>Cadastre-se</h4> <hr> <link href='https://fonts.googleapis.com/css?family=Ubuntu' rel='stylesheet' type='text/css'> <div class="container">   <form action="" id="loginForm" method="POST" enctype="multipart/form-data">     <p><label for="nome">Nome *</label><br><input type="text" name="nome" placeholder="Nome Completo" class="form-control"/></p><br>     <p><label for="usuario">Usuário *</label><br><input type="text" name="usuario" placeholder="Nome do Usuário" class="form-control"/></p><br>     <p><label for="password">Senha *</label><br><input type="password" name="senha" id="password" placeholder="Senha" /> <img id="showPassword" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABDUlEQVQ4jd2SvW3DMBBGbwQVKlyo4BGC4FKFS4+TATKCNxAggkeoSpHSRQbwAB7AA7hQoUKFLH6E2qQQHfgHdpo0yQHX8T3exyPR/ytlQ8kOhgV7FvSx9+xglA3lM3DBgh0LPn/onbJhcQ0bv2SHlgVgQa/suFHVkCg7bm5gzB2OyvjlDFdDcoa19etZMN8Qp7oUDPEM2KFV1ZAQO2zPMBERO7Ra4JQNpRa4K4FDS0R0IdneCbQLb4/zh/c7QdH4NL40tPXrovFpjHQr6PJ6yr5hQV80PiUiIm1OKxZ0LICS8TWvpyyOf2DBQQtcXk8Zi3+JcKfNafVsjZ0WfGgJlZZQxZjdwzX+ykf6u/UF0Fwo5Apfcq8AAAAASUVORK5CYII=" /><br><br>     <p><label for="email">E-Mail *</label><br><input type="email" name="email" placeholder="Endereço de E-Mail" class="form-control"/></p><br>     <p><label for="avatar">Avatar</label><br><input type="file" name="avatar" id="avatar"><br><br><input type="reset" value="Apagar"><br><br><br><br>     <input type="submit" value="Cadastrar" class="btn btn-primary btn-lg btn-block">     <input type="hidden" name="cadastrar" value="register">   </form> </div>      </body> </html> <?php      $nome_temporario=$_FILES["avatar"]["tmp_name"];     $nome_real=$_FILES["avatar"]["name"];     copy($nome_temporario,"img/$nome_real");     cadastro($con); ?> Esse cadastro($con) é uma function que efetua o cadastro e está em outro php, mas creio que ele não será necessário.
      O erro está informando que é esta linha: copy($nome_temporario,"img/$nome_real");
       
      Alguém teria alguma luz pra me ajudar???
       
      Grato, Mateus.
    • Por Bobrinha
      Olá, 
       
      Estou com um probleminha e não encontrei uma solução, se alguém souber o que pode ser eu agradeço.
       
      Ao tentar fazer upload de imagens, o navegador esta me retornando a seguinte mensagem
       
       
      Formulario 
      <form name="form" method="POST" enctype="multipart/form-data"> <input type="file" name="capa" /> </form> if (isset($dados) && $dados['enviar']):     $dados['capa'] = ($_FILES['capa']['tmp_name'] ? $_FILES['capa'] : null);     $cadastra = new Noticias(); endif;  
      A mensagem quando aparece no navegador se eu clico em cancelar ela para, mais se clico em continuar ela reenvia os dados, o que pode ser?
    • Por brunocarvalho
      Boa tarde,
       
      estou com uma duvida. Tenho um form onde este faz upload de multiplas imagens ao mesmo tempo. até ai esta tudo bem e esta a funcionar bem. mas tenho a necessidade de baixar a qualidade de imagem para 50%. EX uma imagem que tenha 4Mb ficar bem mais leve.
       
      andei a pesquisar e encontrei este codigo só qu nao sei como devo aplicar: 
       
      // Skip the to parameter using NULL, then set the quality to 75% imagejpeg($im, NULL, 75); // Free up memory imagedestroy($im); Alguem me pode dar uma ajuda?
       
      Obrigado 
       
       
      protected function moveUpload($a, $fileName){ $nome =$this->changeName(); //$ext = pathinfo($fileName, PATHINFO_EXTENSION); //penso que deve ser aqui move_uploaded_file($this->files[$a]["tmp_name"],$this->output_dir.$nome.".".$this->file_extension($fileName)); if($this->fileCount==1 && $this->fileCount<>0){ //$this->return_file_name($nome); $this->file_name = $nome.".".$this->file_extension($fileName); return $nome; }else if($this->fileCount>1 && $this->fileCount<>0){ $this->return_files_array_names($nome.".".$this->file_extension($fileName)); //return $nome; } //return $nome; }  
    • Por davi gasparino 1987
      Boa noite, eu estou estudando PHP e comecei a me arriscar na criação de um theme para o Wordpress, fui lendo as documentações do site e a coisa até estava fluindo, mas agora eu criei o theme-options.php seguindo os exemplos que tem no site do wordpress, e me veio a curiosidade de fazer um upload de imagens para esse theme-options, para no caso de talvez criar um banner rotativo onde se insere as imagens dentro do theme-options ou sei lá para mais coisas que se possa ser útil eu tentei um monte de coisas mas não consegui ainda, será que alguém pode me ajudar que seja indicando algum artigo ou de fato me explicando como funciona, como seria uma função que fizesse o upload ali dentro dessa opções de themas que eu criei. Desde já agradeço quem possa me ajudar com meus estudos, um abraço.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.