Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

  • Conteúdo Similar

    • Por AlexandreHenrique
      Olá pessoal. preciso de uma ajuda com o meu projeto de upload.
      O projeto de upload roda no IIS + Php;
      Tenho um script que ta enviando  o arquivo para o diretório correto.
      O problema é que ao tentar acessar esse arquivo via URL, o anexo não abre  e exibe a mensagem abaixo.
       

      Notei que o arquivo ao cair no DIR, ele entra sem permissões (vi em propriedades), se eu editar o mesmo alterando as permissões, ele carrega pela url do meu site.
      Quero que o arquivo enviado pelo script caia no DIR correta com as devidas permissões pra eu poder ler no navegador via URL;
       
      Já tentei resolver de toda forma mas nao tive sucesso;.
      No Apache isso é mais simples, mas no IIS ta complicado;
       
       
       
      Alguem pode me dá uma dica?
    • Por Caio Vargas
      Fala pessoa tudo tranquilo ?
      estou com um problema eu fiz um sistema de upload onde tem a marca dagua  o problema e que quando o cadastro da capa e pequena a imagem da marca dagua fica grande
      e qauando a capa e grande  a imagem da marca dagua fica pequena alguem poderia me ajudar 
    • Por mateus.andriollo
      Olá,
      Gostaria de saber se alguem pode me ajudar.
      Meu PHP esta na pasta public_html em um CPanel, quero saber se é possível armazenar em pasta fora da pasta  pública, por segurança mesmo...
      Faço isso em ASP, ai chamo a imagem por um fso, funciona mas queria saber se tem como no PHP.
    • Por DeniseAlencar
      Boar tarde pessoal estou fazendo um teste com upload de imagens gravando no banco de dados porem quando cadastro uma imagem com o nome "foto.jpg" e depois cadastro a mesma imagem com o mesmo nome, no banco de dados aparece dois registros com nomes iguais mas gostaria que os nomes fossem diferentes.
       
      E na pasta arquivos aparece uma unica imagem gostaria que quando cadastrasse fotos iguais o nome mudasse tipo foto.jpg , foto2.jpg  etc (isso automaticamente) vou postar o codigo .
      <?php $diretorio = "arquivos/"; if(!is_dir($diretorio)){ echo "Pasta $diretorio não existe";}else{ $arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE; for ($controle = 0; $controle < count($arquivo['name']); $controle++){ $destino = $diretorio."/".$arquivo['name'][$controle]; $nome_foto = $arquivo['name'][$controle]; if(move_uploaded_file($arquivo['tmp_name'][$controle], $destino)){ $sql="INSERT INTO galeria (arquivo) VALUES ('$nome_foto')"; $qry = mysqli_query($conexao,$sql); echo "<head><meta HTTP-EQUIV='refresh' CONTENT='0;URL=index.php'></head>"; }else{ echo "Erro ao realizar upload"; } } } ?>  
    • Por Sapinn
      Estou precisando salvar fotos dos usuários de um sistema e não estou conseguindo fazer com OO já assisti video aulas e li algumas matérias mas sempre dá erro. Alguém sabe algum jeito de se fazer?? Eu até tentei mas fica sempre com erro, vou postar aqui talvez tenha algo que eu esteja fazendo errado.
       
      class para salvar a foto:
         private function salvarFoto($foto){         $fotos = $_FILES['foto_admin'];         $fotoDir = "imagens/fotos_admins/";         $fotoPath = $fotoDir . basename($foto['foto_admin']['name']);         $fotoTmp = $foto['foto_admin']['tmp_name'];         if(move_uploaded_file($fotoTmp, $fotoPath)):             return $fotoPath;         else:             return false;         endif;     } E estou chamando ela assim:
       $upload = $this->salvarFoto($_FILES);                 if(gettype($upload) == 'string'):                     $dados['foto_admin'] = $upload;                 endif;  
      E o erro é o seguinte: move_uploaded_file(imagens/fotos_admins/sapinn.jpg): failed to open stream: No such file or directory in
       
      Não sei o que está errado a pasta imagens/fotos_admins está dentro da minha pasta Controller
×

Informação importante

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