Publicidade

cristianomg

Gravar no banco após gerar Upload de imagem

Patrocínio:

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!";
			}
		 }
 }

 

0

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 ?

 

0

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());
  }
}

 

 

0

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...

0

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.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém ai já passou por algo parecido para dar um norte.

Olhei com f12 para ver logs de erros mas não gerou nada. :persevere:

0

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.

0

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.

 

 

0

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 ?

 

 

 

0

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());
  }
}
 

 

 

0

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.

0

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">

 

0

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

 

0

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 é?

0

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;
0

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

  • Próximos Eventos

  • Conteúdo Similar

    • Por CrazY.
      Olá,
       
      Como faço para inserir o diretório da imagem que fiz upload em um input do tipo text em tempo real? Ou seja, qur o usuário não preciso clicar em algum botão para inserir o endereço da imagem.
    • Por Gilberto Jr
      Boa tarde pessoal,
       
      Eu tenho um sistema de upload de arquivos. Porém estou com o seguinte problema, quando o nome do arquivo tem acentos o sistema faz o upload com caracteres no lugar do nome do arquivo.
       
      Segue abaixo o código de upload
      <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <% Response.AddHeader "Content-Type", "text/html; charset=utf-8" Response.AddHeader "Pragma", "no-cache" response.Charset="utf-8" %> <% 'inicio upload function mask_data( obj ) obj = CDAte( obj ) dia = Day( obj ) mes = Month( obj ) ano = Year( obj ) if dia < 10 then dia = "0" & dia end if if mes < 10 then mes = "0" & mes end if mask_data = ano &"-"& mes &"-"& dia end function dim conn, rs, nome_foto, Consulta, rs3, anonascimento, senha, ct, insert, rs2, codigo, mensagememail, login 'dim arraymodulos() 'Criamos o objeto de conexão Set conn = Server.CreateObject("ADODB.Connection") 'Abrimos uma conexão com o banco de dados - [IMPORTANTE] altere os dados abaixo com as informações de sua base de dados conn.Open("DRIVER={MySQL ODBC 5.1 Driver};SERVER=******;PORT=3306;DATABASE=*****;USER=*****;PASSWORD=*****;OPTION=3;") 'arquivo que checa se existe o login e a senha do usuario que esta tentando logar 'Instancia o componente SET SaFileUp = Server.CreateObject("SoftArtisans.FileUp") server.ScriptTimeout=99999 ' aumenta o tempo para enviar aquivos maiores 'Configura o caminho onde arquivo será salvo SaFileUp.Path = Server.MapPath("../dados/") 'Para Revenda substitua o caminho físico para E:\vhosts\SEU_DOMINIO_COMPLETO\httpdocs\ 'Você pode usar também o caminho relativo se preferir 'SaFileUp.Path = Server.MapPath("./upload/") 'Caso o usuário não indique um arquivo para upload, informa erro. If SaFileUp.IsEmpty Then 'response.write "<center>Por favor, indique um arquivo para upload.</center><br>" response.write ("<script>alert('Seleciona o projeto!');location='index.asp?incluirProjeto=1';</script>") 'caso o campo foto nao esteja vazio entao faz isso Else 'Salva o arquivo no servidor SaFileUp.Save nome_projeto = Right(SaFileUp.Form("projetofile"),Len(SaFileUp.Form("projetofile"))-InstrRev(SaFileUp.Form("projetofile"),"\")) set busca = conn.execute("select max(id_planilha)+1 as id_planilha from tab_caminho where codigo='"&SaFileUp.Form("empresa")&"' and id_projeto='"&SaFileUp.Form("projeto")&"' and id_sub_proj='"&SaFileUp.Form("subprojeto")&"'") 'INSERT COM O NOME DO PREJETO E SUBE O PROJETO set rs1 = conn.execute("insert into tab_caminho (codigo, id_projeto, id_sub_proj, id_planilha, caminho,ativo) values ('"&SaFileUp.Form("empresa")&"','"&SaFileUp.Form("projeto")&"','"&SaFileUp.Form("subprojeto")&"','"&busca("id_planilha")&"','"&nome_projeto&"',1)") end if conn.Close() 'Destruímos o objeto Set conn = Nothing response.write ("<script>alert('Projeto incluido com sucesso');location='index.asp?incluirProjeto=1&empresa="&SaFileUp.Form("empresa")&"&projeto="&SaFileUp.Form("projeto")&"&subprojeto="&SaFileUp.Form("subprojeto")&"';</script>") %>  
      Quando o nome do arquivo contem acentos, o nome fica assim.
      Relatório.xlsx e o nome correto do arquivo é Relatório.xlsx
       
      Alguém poderia me ajudar?
    • Por reaprod
      Pessoal estou fazendo um sistema de upload com Redimensionamento de imagens... acontece que ta mudando o tamanho tudo certinho e até gravando no banco de dados...
      só não esta levando as imagens pra pasta de destino... alguém pode dar uma ajuda ai... 
       
      meus códigos:
      este é o forme
      <form method="post" name="filtro" action="produtos.php?funcao=cadastrar" enctype="multipart/form-data"/>
              <li><label for="email">Foto principal do Produto</label><br/><br/><input type="file" id="fotoproduto" name="fotoproduto" /></li>
                  <li><label for="email">Segunda foto do Produto</label><br/><br/><input type="file" id="file1" name="fotoproduto2" /></li>     
                  <li><br/><label for="email">*Arquivos aceitos: jpeg, jpg e gif.<br/>Outros arquivos serão rejeitados!</label><br/><br/></li>
                
      </ul>
                  <button type="submit" name="button" value="Cadastrar o Produto" /><i class="icon-signin"></i>  Cadastrar o Produto</button>
       
      </form>
       
      Aqui o arquivo produtos.php
       
      <?php
          
          if($_GET['funcao']=="cadastrar"){
          $pasta = '../comerciantes';
          $file = $_FILES['fotoproduto'];
          $temp = $file['tmp_name'];
          $filename = $file['name'];
          $file1 = $_FILES['fotoproduto2'];
          $temp1 = $file1['tmp_name'];
          $filename1 = $file1['name'];
       
         $largura_max    = 800;
         $altura_max    = 630;
         // arquivo que contém a função
         require ('redimensiona_fotos.php');
         // funcao que redimensionará a imagem
         // o retorno da função é o nome do arquivo 
         $result = upload($temp, $filename, $largura_max, $altura_max, $pasta);
         $result1 = upload($temp1, $filename1, $largura_max, $altura_max, $pasta);
         // gravando nome do arquivo no banco de dados
         $sql = mysql_query("INSERT INTO produtos (fotoproduto, fotoproduto2) values ( '".$result."', '".$result1."') ");    
         
          }
          ?>
                 
      aqui o arquivo redimensiona_fotos.php
       
      <?
        function upload($tmp, $fotoproduto, $fotoproduto2, $max_x, $max_y, $pasta){
         //$max_x = 800 $max_y = 630
         $img        = imagecreatefromjpeg($tmp);
         $original_x    = imagesx($img); //largura
         $original_y    = imagesy($img); //altura
         $diretorio    = $pasta."/".$fotoproduto;
         // verifica se a largura ou altura da imagem é maior que o valor
         // máximo permitido
         if ( ( $original_x > $max_x ) || ( $original_y > $max_y ) ){
          // verifica o que é maior na imagem, largura ou altura?
              if ( $original_x > $original_y ) {    
              $max_y    = ( $max_x * $original_y ) / $original_x;
          }else{
              $max_x    = ( $max_y * $original_x ) / $original_y;
          }
          $nova = imagecreatetruecolor($max_x, $max_y);
          imagecopyresampled($nova, $img, 0, 0, 0, 0, $max_x, $max_y, $original_x, $original_y);
          imagejpeg($nova, $diretorio);
          imagedestroy($nova);
          imagedestroy($img);
         // se for menor, nenhuma alteração é feita 
         }else{
          imagejpeg($img, $diretorio);
          imagedestroy($img);
         }
         return($fotoproduto);
         return($fotoproduto2);
      }
      ?>
       
      dá uma força ai pessoal
    • Por juninhogpe
      Boa tarde pessoal.
       
      Estou utilizando o plugin "Tinymce" em um site que estou fazendo e precisava realizar upload de imagens através dele.
       
      Me esbarrei no problema que o código de exemplo de upload de imagens que o editor disponibiliza, salva as mesmas na pasta indicada, mais quando faço a inserção no banco de dados insere o caminho da imagem todo, com o nome da pasta como informado no arquivo "upload.php".
       
      Ex.: No arquivo "upload.php" está assim o caminho: "../img/". Quando salvo no banco de dados vai assim:  "../img/imagem.jpg".
       
      Se faço um select recuperando os dados ele fica buscando a imagem assim: "../img/imagem.jpg", só que minha estrutura é assim:
      - Site  - É aqui que fica a pasta imagem e o arquivo que contém o select recuperando os dados
      - Site / Administração - É aqui que fica o arquivo "upload.php"
       
      Segue o código do upload.php
      <?php /******************************************************* * Only these origins will be allowed to upload images * ******************************************************/ $accepted_origins = array("http://localhost"); /********************************************* * Change this line to set the upload folder * *********************************************/ $imageFolder = "../img/"; reset ($_FILES); $temp = current($_FILES); if (is_uploaded_file($temp['tmp_name'])){ if (isset($_SERVER['HTTP_ORIGIN'])) { // same-origin requests won't set an origin. If the origin is set, it must be valid. if (in_array($_SERVER['HTTP_ORIGIN'], $accepted_origins)) { header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']); } else { header("HTTP/1.0 403 Origin Denied"); return; } } /* If your script needs to receive cookies, set images_upload_credentials : true in the configuration and enable the following two headers. */ // header('Access-Control-Allow-Credentials: true'); // header('P3P: CP="There is no P3P policy."'); // Sanitize input if (preg_match("/([^\w\s\d\-_~,;:\[\]\(\).])|([\.]{2,})/", $temp['name'])) { header("HTTP/1.0 500 Invalid file name."); return; } // Verify extension if (!in_array(strtolower(pathinfo($temp['name'], PATHINFO_EXTENSION)), array("gif", "jpg", "png"))) { header("HTTP/1.0 500 Invalid extension."); return; } // Accept upload if there was no origin, or if it is an accepted origin $filetowrite = $imageFolder . $temp['name']; move_uploaded_file($temp['tmp_name'], $filetowrite); // Respond to the successful upload with JSON. // Use a location key to specify the path to the saved image resource. // { location : '/your/uploaded/image/file'} echo json_encode(array('location' => $filetowrite)); } else { // Notify editor that the upload failed header("HTTP/1.0 500 Server Error"); } ?>  
      Tentei alterar mais realmente não consegui fazer funcionar.
      Alguém poderia me dar uma ajuda de como fazer para que ao salvar no banco salve apenas como: "img/imagem.jpg"?
       
      Agradeço.
    • Por ulissestoga
      Estou utilizando nginx na amazon ec2, utilizo um sistema laravel para carregamento de imagens. Tanto as imagens em KB ou MB, demora muito o carregamento via upload. Gostaria de uma ajuda para implementar no nginx algum modulo que deixe o carregamento mais rapido. Utilizo nginx 1.10.2.
      Obrigado