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

 

Share this post


Link to post
Share on other 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 ?

 

Share this post


Link to post
Share on other 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());
  }
}

 

 

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

 

 

Share this post


Link to post
Share on other 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 ?

 

 

 

Share this post


Link to post
Share on other 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());
  }
}
 

 

 

Share this post


Link to post
Share on other sites
<input type="hidden" name="id" value="<?=$_GET['id']?>">

Add no form um input escondido.

Share this post


Link to post
Share on other 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">

 

Share this post


Link to post
Share on other 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

 

Share this post


Link to post
Share on other 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 é?

Share this post


Link to post
Share on other 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;

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By GiovannaRamos
      Olá pessoal,  gostaria de adicionar outra função ao meu botão 'Finalizar10()' ,  por enquanto ele faz a exportação dos dados da minha 'tabela' para um Excel e salva na pasta downloads do meu computador,  alguém sabe se teria alguma forma fazer esse arquivo gerado (Excel) ao invés de  fazer download, fazer o upload no caminho do meu servidor?
      function Finalizar10() { $(document).ready(function Finalizar() { $("#btnExport").click(function exportar (e) { e.preventDefault(); var blobData = new Blob(['\ufeff'+tabela], { type: 'application/vnd.ms-excel' }); var url = window.URL.createObjectURL(blobData); var a = document.createElement('a'); a.href = url; a.download = codigo; a.click(); }); }); }  
    • By merlinus
      Saudações, tive recentemente a troca de servidor, no novo servidor um script para envios de arquivos parou de funcioar para arquivos maiores de 1M (acho)
      Consigo enviar um arquivo de 130k tranquilamente, qdo envio de 1.5M dá o sequinte erro:
       
      estou com as seguintes configurações do php.ini (confirmei usando phpinfo)
      memory_limit: 128M
      post_max_size: 8M
      upload_max_filesize: 10M
       
      Alguma ideia de que configuração pode estar dando erro?
    • By jmggames
      boa noite, estou com um script de upload de imagens, que após fazer o upload, ele finaliza com uma miniatura da imagem que acabou de ser enviada.
      porem alem de mostrar a miniatura da imagem, eu gostaria que mostrasse também um link gerado do upload da imagem, para que a pessoa que fez o upload, pegue o link e guarde para poder chegar ate a imagem futuramente.
      eu gostaria que o link fosse gerado logo após a mensagem "imagem enviada com sucesso!"  alguém pode me ajudar?
      script do site:
       
      <html>
      <head>
       <title>Upload de imagens</title>
       <meta charset="utf-8">
       <meta name="viewport" content="width=device-width, initial-scale=1">
       <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
       <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
       <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
       <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
      </head>
      <body>
      <div class="container">
      <h2><strong>Envio de imagens</strong></h2><hr>
      <form method="POST" enctype="multipart/form-data">
        <label for="conteudo">Enviar imagem:</label>
        <input type="file" name="pic" accept="image/*" class="form-control">
        <div align="center">
          <button type="submit" class="btn btn-success">Enviar imagem</button>
        </div>
      </form>
       
       <hr>
       
       <?php
       if(isset($_FILES['pic']))
       {
          $ext = strtolower(substr($_FILES['pic']['name'],-4)); //Pegando extensão do arquivo
          $new_name = date("Y.m.d-H.i.s") . $ext; //Definindo um novo nome para o arquivo
          $dir = './imagens/'; //Diretório para uploads
       
          move_uploaded_file($_FILES['pic']['tmp_name'], $dir.$new_name); //Fazer upload do arquivo
          echo '<div class="alert alert-success" role="alert" align="center">
                <img src="./imagens/' . $new_name . '" class="img img-responsive img-thumbnail" width="200"> 
                <br>
                Imagem enviada com sucesso!
                <br>
                <a href="exemplo_upload_de_imagens.php">
                <button class="btn btn-default">Enviar nova imagem</button>
                </a></div>';
       } ?>
      </div>
      <body>
      </html>
       

    • By jmggames
      bom dia, eu tinha uns anos atras um script de upload de imagens que depois de fazer o envio do upload, ele gerava um link para a pessoa ter acesso a essa imagem, como em um site de upload normal, porem eu acabei perdendo o script, e por ter anos, acho que a pagina onde estava não existe mais.
      gostaria de saber se alguém pode me ajudar com esse script.
    • By Evaldo snieto
      Olá galera , estou com um probleminha no meu upload . As imagens PNG estão ficando com o fundo preto

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.