Ir para conteúdo

POWERED BY:

Arquivado

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

MBarros

[Resolvido] Enviar imagens para pasta e seus nomes para um BD

Recommended Posts

Pessoal!

 

 

Criei um sistema que envia um grupo de 4 arquivos para uma pasta. Cada grupo com 4 imagens possui seus dados no BD, só que o que acontece é que no BD, para cada imagem, ele cria uma nova entrada no BD, sendo que eu quero que o nome das imagens apareçam juntas em um campo chamado imagens BD e não cada imagem numa entrada diferente, acho que tem algo a ver com os 4 <input type="file" name="imagens[]" /> mas não sei ao certo? Teria eu que remover os colchetes e nomea-los 1 2 3 4? Caso seja, como mostra-las juntos no BD?

 

index.php

<form method="post" action="enviar.php" enctype="multipart/form-data">
  <fieldset>
    <label for="imagens">Imagens: </label>
      <input type="file" name="imagens[]" />
      <input type="file" name="imagens[]" />
      <input type="file" name="imagens[]" />
      <input type="file" name="imagens[]" />
					
      <label for="titulo">Título: </label>
      <input type="text" name="titulo" />
					
      <label for="resumo">Resumo: </label>
      <input type="text" name="resumo" />
					
      <label for="producao">Produção: </label>
      <textarea name="producao" cols="50" rows="10"></textarea>	
					
      <label for="detalhes">Detalhes: </label>
      <textarea name="detalhes" cols="50" rows="10"></textarea>
					
      <input type="submit" name="enviar" value="Enviar" />				
  </fieldset>
</form>

enviar.php

<?php
  $numeroCampos = 4;
  $caminho = "../uploads/";
  $substituir = false;
	
  for ($i = 0; $i < $numeroCampos; $i++)
  {
    $nomeArquivo = $_FILES["imagens"]["name"][$i];
    $nomeTemporario = $_FILES["imagens"]["tmp_name"][$i];	
    
    if (!empty($nomeArquivo)) 
    {
      $erro = false;
			
      if (file_exists($caminho . $nomeArquivo) AND !$substituir)
      {
        $erro = "O arquivo <strong>".$nomeArquivo."</strong> já existe";
      }
			
      if (!$erro) 
      {
        $nomeArquivo = ($_FILES['imagens']['name'][$i]);
        $titulo = $_POST['titulo'];
        $resumo = $_POST['resumo'];
        $producao = $_POST['producao'];
        $detalhes = $_POST['detalhes'];
						
       mysql_connect("localhost","root","") or die ("Não foi possível conectar ao Servidor.");
       mysql_select_db("lab") or die ("Não foi possível selecionar a base de dados");
				
       mysql_query("INSERT INTO `envio` (imagens, titulo, resumo, producao, detalhes) VALUES('$nomeArquivo', '$titulo', '$resumo', '$producao', '$detalhes')");
				
       move_uploaded_file($nomeTemporario, ($caminho . $nomeArquivo));
				
       echo "Arquivos enviados!";
     }
   }
   else
   {
     echo "Problema";
   }
  }
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Dee, @Alaerte Gabriel

 

Vocês estavam corretíssimos, mas agora as imagens vão para a pasta, os dados vão para o BD mas, no campo imagens, ao invés de aparecer o nome das imagens enviadas, aparece escrito Array. Como solucionar a questão?

 

<?php
	$numeroCampos = 4;
	$caminho = "../uploads/";
	$substituir = false;
	
	$nomeArquivo = ($_FILES['imagens']['name']);
	$titulo = $_POST['titulo'];
	$resumo = $_POST['resumo'];
	$producao = $_POST['producao'];
	$detalhes = $_POST['detalhes'];
						
	mysql_connect("localhost","root","") or die ("Não foi possível conectar ao Servidor.");
	mysql_select_db("lab") or die ("Não foi possível selecionar a base de dados");
				
	mysql_query("INSERT INTO `trabalhos` (imagens, titulo, resumo, producao, detalhes) VALUES('$nomeArquivo', '$titulo', '$resumo', '$producao', '$detalhes')");
	
	for ($i = 0; $i < $numeroCampos; $i++)
	{
		$nomeArquivo = $_FILES["imagens"]["name"][$i];
		$nomeTemporario = $_FILES["imagens"]["tmp_name"][$i];	
		
		if (!empty($nomeArquivo)) 
		{
			$erro = false;
			
			if (file_exists($caminho . $nomeArquivo) AND !$substituir)
			{
				$erro = "O arquivo <strong>".$nomeArquivo."</strong> já existe";
			}
			
			if (!$erro) 
			{				
				move_uploaded_file($nomeTemporario, ($caminho . $nomeArquivo));
			}
			echo "Arquivos enviados!";
		}
		else
		{
			echo "Problema";
		}
	}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

owieowieowi

Mano, você tirou o INSERT do FOR, mas coloca ele DEPOIS, nao ANTES do FOR. você colocou ANTES.

Dae ele nao coloca nome, coloca 'array'.

ASsim ó:

 

        for ($i = 0; $i < $numeroCampos; $i++)
        {
                $nomeArquivo = $_FILES["imagens"]["name"][$i];
                $nomeTemporario = $_FILES["imagens"]["tmp_name"][$i];   
                
                if (!empty($nomeArquivo)) 
                {
                        $erro = false;
                        
                        if (file_exists($caminho . $nomeArquivo) AND !$substituir)
                        {
                                $erro = "O arquivo <strong>".$nomeArquivo."</strong> já existe";
                        }
                        
                        if (!$erro) 
                        {                               
                                move_uploaded_file($nomeTemporario, ($caminho . $nomeArquivo));
                        }
                        echo "Arquivos enviados!";
                }
                else
                {
                        echo "Problema";
                }
        }
 mysql_query("INSERT INTO `trabalhos` (imagens, titulo, resumo, producao, detalhes) VALUES('$nomeArquivo', '$titulo', '$resumo', '$producao', '$detalhes')");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho 4 campos para envio de imagens

 

<input type="file" name="imagens[]" />
<input type="file" name="imagens[]" />
<input type="file" name="imagens[]" />
<input type="file" name="imagens[]" />

As imagens estão indo para a pasta, mas o nome de apenas 1 delas aparece registrado no BD. Como fazer com que o nome das outras 3 imagens também seja registrado no BD?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que você tem que separar e juntar =), tpw assim:

 

$imagens = implode('-', $nomeArquivo['name']);
Dae você coloca a variavel $imagens no insert

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que você tem que separar e juntar =), tpw assim:

 

$imagens = implode('-', $nomeArquivo['name']);
Dae você coloca a variavel $imagens no insert

 

 

@Dee

 

Muito obrigado mesmo! Funcionou! Agradeço e fico à disposição!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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