Ir para conteúdo

Arquivado

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

Carcleo

[Resolvido] Upload de Varias imagens

Recommended Posts

Ola pessoal.

 

Estou tendo muitas dificuldades com Upload de Varias imagens.

 

O cadastro é uma beleza. Cadastro tambem no banco, bão de +.

 

Acontece que o site é um site de imobiliaria e corre o risco de o cliente querer trocar(substituir-update) uma das fotos e é ai que minha dificuldade esta.

 

Quando faço o update, a partir do código que criei, o update até feito certo, só que não estou conseguindo dizer o seguinte:

 

Quero alterar apenas a foto 3, ou a 2.

 

Por esse script eu tenho que alterar todas, se não, no caso de alterar apenas, por exemplo, a segunda e a quinta fotos, o script altera a primeira e a segunda.

 

Tem alguma saida pra isso?

 

Segue o meu código:

FormInsert.php

<b>Envio das fotos</b><br />
<? include("../global/conexao.php"); ?>
<?
  if ($acao=="inserir") { ?>
<form action="FormInsert.php?acao=insere" method="post"  enctype="multipart/form-data">
<input type="file" name="Fotos[]"><br />
<input type="file" name="Fotos[]"><br />
<input type="file" name="Fotos[]"><br />
<input type="file" name="Fotos[]"><br />
<input type="file" name="Fotos[]"><br />
<input type="submit" value="OK"/>
</form>
<? } ?>

<?
  if ($acao=="insere") { 
  
  include ("Multiplos_Uploads.php");

  $NomedasFotos = explode(';',$NomeTodasFotos);  
  print $NomedasFotos[1];
  
  $sql_insere= mysql_query("insert into imoveiscadastrovenda (Foto, Foto2,  Foto3,  Foto4,  Foto5)
                            values ('$NomedasFotos[0]','$NomedasFotos[1]','$NomedasFotos[2]','$NomedasFotos[3]', '$NomedasFotos[4]')
						   ") or die ("m*****");
  
  if ($sql_insere) {echo "Bão";}
  else {echo "Ruim";}
  
                       }
  ?>
FormUpdate.php

<script>
function AbreImagemGrande(UrlPagI,NameI,Wi,He,scrolling) {
	if (!scrolling) { scrolling = 'auto' }
    PopImagemGrande = window.open(UrlPagI,NameI,'width='+Wi+',height='+He+',scrollbars=no,toolbar=no,location=no,status=no,menubar=no,resizable=no');
}
</script>
<? include("../global/conexao.php"); ?>
<?
  if ($acao=="listar") { ?>
   <b>Envio das fotos</b><br />
    <form action="FormUpdate.php?acao=alterar" method="post"  enctype="multipart/form-data">
<?  
 $sql = "Select Foto, Foto2, Foto3, Foto4, Foto5 from imoveiscadastrovenda where Id=4";
          $sql1 = mysql_query($sql) or die ("Select mau feito");
      
          $nome_das_fotos = mysql_fetch_array($sql1);
      
          $Foto[1] = $nome_das_fotos['Foto'];
          $Foto[2] = $nome_das_fotos['Foto2'];
          $Foto[3] = $nome_das_fotos['Foto3'];
          $Foto[4] = $nome_das_fotos['Foto4'];
          $Foto[5] = $nome_das_fotos['Foto5'];		

		  
	      $endereco_mini="teste_upload/mini/";	
		  $endereco_normal="teste_upload/normal/";	

          for ($i=1; $i<6;$i++)	{	  
			$foto_mini = $endereco_mini.$Foto[$i];
			$foto_normal = $endereco_normal.$Foto[$i];
	  
			//aqui ele vai ver se existe alguma coisa escrita no campo foto_receita na tabela
			if($Foto[$i]==""){
							 $Fotografia = "<font color=#DEE9EF size=2 face=verdana,arial, Helvetica, sans-serif><strong>Sem foto1</strong></font>";
						 }
					else {
			//se existir um valor no campo na tabela ele testa se a foto esxiste 'fisicamente' na pasta
						  if(file_exists($foto_mini)){
							 if(file_exists($foto_normal)){
							 //se existir ele monta a exibição da foto e coloca numa variavel $foto2
							 $Fotografia = "<img src=$foto_mini border=0 height=40>";				 
							 list($width, $height) = getimagesize($foto_normal); 
							 $Fotografia = "<a href=javascript:AbreImagemGrande('ImoveisVenda_Conteudo_Con.php?id=$Id','ImpNot','$width','$height')>$Fotografia</a>";
																	 }
							 else                                    {
			//se tiver um valor na tabela, mas a foto não existir na pasta a variavel fica setada como sem foto
			$Fotografia = "<font color=#DEE9EF size=2 face=verdana,arial, Helvetica, sans-serif><strong>Sem foto2</strong></font>";
																	 }
																}
															else{
			//se tiver um valor na tabela, mas a foto não existir na pasta a variavel fica setada como sem foto
			$Fotografia = "<font color=#DEE9EF size=2 face=verdana,arial, Helvetica, sans-serif><strong>Sem foto3</strong></font>";
																}
						 } 
						
			echo "
				  <input type='file' name='Fotos[]'>
				  $Fotografia<br>
				";
                              		 }//Fimdo for
?>
 <input type="submit" value="OK"/>
    </form>
<? 	 } ?>

<?
  if ($acao=="alterar") { 
  
  include ("Multiplos_Uploads.php");

  $NomedasFotos = explode(';',$NomeTodasFotos);  
  
  $sql_insere= mysql_query("update imoveiscadastrovenda set Foto='$NomedasFotos[0]', Foto2='$NomedasFotos[1]', Foto3='$NomedasFotos[2]', Foto4='$NomedasFotos[3]', Foto5='$NomedasFotos[4]' where id=4");
  
  if ($sql_insere) {echo "Bão";}
  else {echo "Ruim";}
  
                       }
  ?>
Multiplos_Uploads.php

<?
$dir="teste_upload/normal/";
$dir_mini="teste_upload/mini/";
$Fotos = $_FILES['Fotos'];

for($i = 0; $i < sizeof($Fotos['name']); $i++){
	
    $Nome    = $Fotos['name'][$i];
    $Tamanho = $Fotos['size'][$i];
    $Tipo    = $Fotos['type'][$i];
    $Tmpname = $Fotos['tmp_name'][$i];
	
	if (!$Nome) { 
				  echo 'Você não enviou nada na posição' . ($i+1) . '<br/>';
				 }
	else         {		
	                ereg ("(.*)\.([^.]+)$", $Nome, $partes);
 	                if(($partes[2] != "jpg") and ($partes[2] != "jpeg") and  ($partes[2] != "png") and ($partes[2] != "gif"))	
							{
					
							echo 'O arquivo ' . ($i+1) . ' não é um arquivo válido.<br/>';
									
									// Faz contagem de enviada com sucesso
									$Conta++;
							}
					else    {    
					
								// Pega extensão do arquivo
								preg_match("/\.(gif|png|jpg|jpeg){1}$/i", $Nome, $ext);
								
								   //  Retira a extensao do nome do arquivo
								$nome_sem_extensao = $Nome;
								$nome_sem_extensao = basename ($nome_sem_extensao,".gif");
								$nome_sem_extensao = basename ($nome_sem_extensao,".jpeg");
								$nome_sem_extensao = basename ($nome_sem_extensao,".jpg");
								$nome_sem_extensao = basename ($nome_sem_extensao,".png");
								
								  //  Retira espaços em branco do nome do arquivo
								$nome_banco = str_replace(" ","_",$nome_sem_extensao);
								
										//Gera um nome único para a imagem
								//$imagem_nome = $nome_banco . "." . md5(uniqid(time())) . "." . $ext[1];
								$imagem_nome = md5(uniqid(time())) . "." . $ext[1];

                                         //Diretórios de Gravação das imagens
                                $Caminho = $dir . $imagem_nome;
                            	$Caminho_mini = $dir_mini . $imagem_nome;	

		
								if(move_uploaded_file($Tmpname, $Caminho))			
								{
									echo 'Foto ' . ($i+1) . ' enviada.<br/>';
									// Faz contagem de enviada com sucesso
								   $Conta++;
									///cria a miniatura e faz io move_uploaded_file
													  
						//IMAGEM A SER ABERTA Nesse momento será o $Caminho pois o upload já foi feito e o arquivo temporario apagado
									  
									  //CRIA UMA NOVA IMAGEM
									  if ($ext[1] =="jpg") { $imagem_orig = imagecreatefromjpeg($Caminho); }
								      else if ($ext[1] =="jpeg") { $imagem_orig = imagecreatefromjpeg($Caminho); }
									  else if ($ext[1] =="gif") { $imagem_orig = imagecreatefromgif($Caminho); }
									  else if ($ext[1] =="png") { $imagem_orig = imagecreatefrompng($Caminho); }
									  //LARGURA
									  $pontoX = ImagesX($imagem_orig);
									  //ALTURA
									  $pontoY = ImagesY($imagem_orig); 
									  
									  //DEFINE OS PARÂMETROS DA MINIATURA
									  $largura = 150;
									  $altura = ($pontoY * $largura) / $pontoX;
									  
									  //CRIA O THUMBNAIL
									  $imagem_fin = imagecreatetruecolor($largura, $altura); 
									  
									  //COPIA A IMAGEM ORIGINAL PARA DENTRO
									  imagecopyresampled($imagem_fin, $imagem_orig, 0, 0, 0, 0, $largura+1, $altura+1, $pontoX, $pontoY); 
									  
									  //SALVA A IMAGEM
									  if ($ext[1] =="jpg") { imagejpeg($imagem_fin, $Caminho_mini ,100);  }
								      else if ($ext[1] =="jpeg") { imagejpeg($imagem_fin, $Caminho_mini ,100);  }
									  else if ($ext[1] =="gif") { imagegif($imagem_fin, $Caminho_mini ,100);  }
									  else if ($ext[1] =="png") { imagepng($imagem_fin, $Caminho_mini); }

									  $NomesFotos[] = $imagem_nome;
									  //LIBERA A MEMÓRIA
									  imagedestroy($imagem_orig);
									  imagedestroy($imagem_fin);

								  }            
								  else // Erro no envio
								  {
									  echo 'Não foi possível enviar a foto' . ($i+1) . '<br/>';
								  }
							}
				  }
                                          } //FIM DO FOR
			$NomeTodasFotos = implode(';',$NomesFotos);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, não vi do o script, mas a logica é simples

 

você tem que deletar a foto do servidor e fazer update da nova

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha o melhor a fazer neste caso, e você trabalhar da seguinte forma, enviar as fotos normais por multiplos selects, já com as fotos cadastradas, adicionar um botão com nome alterar foto para cada uma, quando cricar utilize de uma função em javascript que muda para o select de envio fazendo a alteração pelo id da foto.

 

ou pode mandar para outra pagina se desejar, ou deixar enviar quantas fotos desejar dando a opção de excluir.

 

Utilizar novamente selects multiplos para fazer alteração de foto ae tem que ser magaiver

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou fazendo exatamente isso.

 

Mas, no script de Multiplos_Uploads;.php, caso a imagem não venha, ai em vez de gravar por exemplo a imagem 2, grava na 1

 

Conseui resolver o problema atribuindo valor vazio para a variavel que leva os dados pro banco.

 

agora o problema é que se eu não enviar nova imagem para as que estão cadastradas, ai vai valor vazio e altera tambem as fotos ja cadastradas descadastrando-as

Assimn:


if (!$Nome) { 
				  echo 'Você não enviou nada na posição' . ($i+1) . '<br/>';
				  $NomesFotos[] = "";
				 }

No caso de eu fizer assim no campo file:

 

<input type='file' name='Fotos[]' value='alguma_coisa'>

Tem, como eu recuperar através de $_Files o valor do value='alguma coisa'?

 

Se eu coinseguir eu vou consegui resolver, alem do meu,o problema de muiiiiiiiiiita gente aqui no forum.

 

Só falta isso.

 

Então, após o input file ser enviado, como faço para enviar um campo qualquer associado ao input file que envie junto o valor que vem do banco de dados referente a aquela imagem que esta sendo alterada?

 

Como recuperar esse valor?

 

A ideia é a seguinte:

 

Se eu envio um campo file, e ele esta sendoi exibido através de um formulario de alteração, porem essa imagem que esta sendo exibida não será alterada, somente as outras num total de por exemplo 5 fotos. Ao enviar este campoo, o upload eu contorno e não faço, mas, o envio de valor vazio para o banco não estou conseguindo.;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só, que eui quero é o seguite.

 

Se você enviar um campo file vazio, o upload não será feito certo?

 

Porem, o banco de dados (path a imagem) receberá valor vazio tambem. Certo?

 

Poias é, mas pense agora no caso da imagem no form de alteração e não de inserção, onde a imagem 1 precisa não precisa de ser alterada apenas a 2 e a 4 num total de 5 imagens.

 

Nesse caso, quando eu envio as iagens 2 e 4, o vaor vazio da imagem 1 vai pro banco, dai eu perco a imagem que á esta gravada.

 

Eu preciso de arranjar um jeito de enviar, junto com, o campo File, um atributo value por exemplo, contendo o nome da imagem no banco de dados. e pegar esse valor com $_Post sem envio de imagen. apneas o valor.

 

caso contrario, terei que ver o pathda imagem normal que ja esta gravada e fazer novamente o upload dela.

 

pesoal, me ajuda a testar esse código podr favor.

 

Acho que consegui.

 

foi só abaixo do input file, no form, enviar tambem um, input hidenn enviando o nome da imagem, caso ela exista no banco.

 

Como disse u outro colega, acho que ainda que eu não seja umk magaiver um dia quem sabe né?;

 

Segue:

 

FormInsert.php

<b>Envio das fotos</b><br />
<? include("../global/conexao.php"); ?>
<?
  if ($acao=="inserir") { ?>
<form action="FormInsert.php?acao=insere" method="post"  enctype="multipart/form-data">
<input type="file" name="Fotos[]"><br />
<input type="file" name="Fotos[]"><br />
<input type="file" name="Fotos[]"><br />
<input type="file" name="Fotos[]"><br />
<input type="file" name="Fotos[]"><br />
<input type="submit" value="OK"/>
</form>
<? } ?>

<?
  if ($acao=="insere") { 
  
  include ("Multiplos_Uploads.php");

  $NomedasFotos = explode(';',$NomeTodasFotos);  
  print $NomedasFotos[1];
  
  $sql_insere= mysql_query("insert into imoveiscadastrovenda (Foto, Foto2,  Foto3,  Foto4,  Foto5)
							values ('$NomedasFotos[0]','$NomedasFotos[1]','$NomedasFotos[2]','$NomedasFotos[3]', '$NomedasFotos[4]')
						   ") or die ("m*****");
  
  if ($sql_insere) {echo "Bão";}
  else {echo "Ruim";}
  
					   }
  ?>

FormUpdate.php

<script>
function AbreImagemGrande(UrlPagI,NameI,Wi,He,scrolling) {
	if (!scrolling) { scrolling = 'auto' }
	PopImagemGrande = window.open(UrlPagI,NameI,'width='+Wi+',height='+He+',scrollbars=no,toolbar=no,location=no,status=no,menubar=no,resizable=no');
}
</script>
<? include("../global/conexao.php"); ?>
<?
  if ($acao=="listar") { ?>
   <b>Envio das fotos</b><br />
	<form action="FormUpdate.php?acao=alterar" method="post"  enctype="multipart/form-data">
<?  
 $sql = "Select Foto, Foto2, Foto3, Foto4, Foto5 from imoveiscadastrovenda where Id=5";
		  $sql1 = mysql_query($sql) or die ("Select mau feito");
	  
		  $nome_das_fotos = mysql_fetch_array($sql1);
	  
		  $Foto[1] = $nome_das_fotos['Foto'];
		  $Foto[2] = $nome_das_fotos['Foto2'];
		  $Foto[3] = $nome_das_fotos['Foto3'];
		  $Foto[4] = $nome_das_fotos['Foto4'];
		  $Foto[5] = $nome_das_fotos['Foto5'];		

		  
		  $endereco_mini="teste_upload/mini/";	
		  $endereco_normal="teste_upload/normal/";	

		  for ($i=1; $i<6;$i++)	{	  
			$foto_mini = $endereco_mini.$Foto[$i];
			$foto_normal = $endereco_normal.$Foto[$i];
	  
			//aqui ele vai ver se existe alguma coisa escrita no campo foto_receita na tabela
			if($Foto[$i]==""){
							 $Fotografia = "<font color=#DEE9EF size=2 face=verdana,arial, Helvetica, sans-serif><strong>Sem foto1</strong></font>";
						 }
					else {
			//se existir um valor no campo na tabela ele testa se a foto esxiste 'fisicamente' na pasta
						  if(file_exists($foto_mini)){
							 if(file_exists($foto_normal)){
							 //se existir ele monta a exibição da foto e coloca numa variavel $foto2
							 $Fotografia = "<img src=$foto_mini border=0 height=40>";				 
							 list($width, $height) = getimagesize($foto_normal); 
							 $Fotografia = "<a href=java script:AbreImagemGrande('ImoveisVenda_Conteudo_Con.php?id=$Id','ImpNot','$width','$height')>$Fotografia</a>";
																	 }
							 else									{
			//se tiver um valor na tabela, mas a foto não existir na pasta a variavel fica setada como sem foto
			$Fotografia = "<font color=#DEE9EF size=2 face=verdana,arial, Helvetica, sans-serif><strong>Sem foto2</strong></font>";
																	 }
																}
															else{
			//se tiver um valor na tabela, mas a foto não existir na pasta a variavel fica setada como sem foto
			$Fotografia = "<font color=#DEE9EF size=2 face=verdana,arial, Helvetica, sans-serif><strong>Sem foto3</strong></font>";
																}
						 } 
						
			echo "
				  <input type='file' name='Fotos[]'>
				  <input type='hidden' name=FotosPost[] value='$Foto[$i]'>
				  $Fotografia<br>
				";
									   }//Fimdo for
?>
 <input type="submit" value="OK"/>
	</form>
<? 	 } ?>

<?
  if ($acao=="alterar") { 
  
  include ("Multiplos_Uploads.php");

  $NomedasFotos = explode(';',$NomeTodasFotos);  
  
  $sql_insere= mysql_query("update imoveiscadastrovenda set Foto='$NomedasFotos[0]', Foto2='$NomedasFotos[1]', Foto3='$NomedasFotos[2]', Foto4='$NomedasFotos[3]', Foto5='$NomedasFotos[4]' where id=5");
  
  if ($sql_insere) {echo "Bão";}
  else {echo "Ruim";}
  
					   }
  ?>

Multiplos_Uploads.php

<?
$dir="teste_upload/normal/";
$dir_mini="teste_upload/mini/";
$Fotos = $_FILES['Fotos'];



for($i = 0; $i < sizeof($Fotos['name']); $i++){
	
	$Nome	= $Fotos['name'][$i];
	$Tamanho = $Fotos['size'][$i];
	$Tipo	= $Fotos['type'][$i];
	$Tmpname = $Fotos['tmp_name'][$i];
	
	if (!$Nome) { 
				  echo 'Você não enviou nada na posição' . ($i+1) . '<br/>';

				  if ($FotosPost[$i]!="") {$NomesFotos[] = $FotosPost[$i];}
				  else { $NomesFotos[] = ""; }
				 }
	else		 {		
					ereg ("(.*)\.([^.]+)$", $Nome, $partes);
 					if(($partes[2] != "jpg") and ($partes[2] != "jpeg") and  ($partes[2] != "png") and ($partes[2] != "gif"))	
							{
					
							echo 'O arquivo ' . ($i+1) . ' não é um arquivo válido.<br/>';
									
									// Faz contagem de enviada com sucesso
									$Conta++;
							}
					else	{	
					
								// Pega extensão do arquivo
								preg_match("/\.(gif|png|jpg|jpeg){1}$/i", $Nome, $ext);
								
								   //  Retira a extensao do nome do arquivo
								$nome_sem_extensao = $Nome;
								$nome_sem_extensao = basename ($nome_sem_extensao,".gif");
								$nome_sem_extensao = basename ($nome_sem_extensao,".jpeg");
								$nome_sem_extensao = basename ($nome_sem_extensao,".jpg");
								$nome_sem_extensao = basename ($nome_sem_extensao,".png");
								
								  //  Retira espaços em branco do nome do arquivo
								$nome_banco = str_replace(" ","_",$nome_sem_extensao);
								
										//Gera um nome único para a imagem
								//$imagem_nome = $nome_banco . "." . md5(uniqid(time())) . "." . $ext[1];
								$imagem_nome = md5(uniqid(time())) . "." . $ext[1];

										 //Diretórios de Gravação das imagens
								$Caminho = $dir . $imagem_nome;
								$Caminho_mini = $dir_mini . $imagem_nome;	

		
								if(move_uploaded_file($Tmpname, $Caminho))			
								{
									echo 'Foto ' . ($i+1) . ' enviada.<br/>';
									// Faz contagem de enviada com sucesso
								   $Conta++;
									///cria a miniatura e faz io move_uploaded_file
													  
						//IMAGEM A SER ABERTA Nesse momento será o $Caminho pois o upload já foi feito e o arquivo temporario apagado
									  
									  //CRIA UMA NOVA IMAGEM
									  if ($ext[1] =="jpg") { $imagem_orig = imagecreatefromjpeg($Caminho); }
									  else if ($ext[1] =="jpeg") { $imagem_orig = imagecreatefromjpeg($Caminho); }
									  else if ($ext[1] =="gif") { $imagem_orig = imagecreatefromgif($Caminho); }
									  else if ($ext[1] =="png") { $imagem_orig = imagecreatefrompng($Caminho); }
									  //LARGURA
									  $pontoX = ImagesX($imagem_orig);
									  //ALTURA
									  $pontoY = ImagesY($imagem_orig); 
									  
									  //DEFINE OS PARÂMETROS DA MINIATURA
									  $largura = 150;
									  $altura = ($pontoY * $largura) / $pontoX;
									  
									  //CRIA O THUMBNAIL
									  $imagem_fin = imagecreatetruecolor($largura, $altura); 
									  
									  //COPIA A IMAGEM ORIGINAL PARA DENTRO
									  imagecopyresampled($imagem_fin, $imagem_orig, 0, 0, 0, 0, $largura+1, $altura+1, $pontoX, $pontoY); 
									  
									  //SALVA A IMAGEM
									  if ($ext[1] =="jpg") { imagejpeg($imagem_fin, $Caminho_mini ,100);  }
									  else if ($ext[1] =="jpeg") { imagejpeg($imagem_fin, $Caminho_mini ,100);  }
									  else if ($ext[1] =="gif") { imagegif($imagem_fin, $Caminho_mini ,100);  }
									  else if ($ext[1] =="png") { imagepng($imagem_fin, $Caminho_mini); }

									  $NomesFotos[] = $imagem_nome;
									  //LIBERA A MEMÓRIA
									  imagedestroy($imagem_orig);
									  imagedestroy($imagem_fin);

								  }			
								  else // Erro no envio
								  {
									  echo 'Não foi possível enviar a foto' . ($i+1) . '<br/>';
								  }
							}
				  }
										  } //FIM DO FOR
			$NomeTodasFotos = implode(';',$NomesFotos);
?>

Isso partindo do principio de que voc~e já tem o id do registro gravado para trocar la na update o 5 pela variavel id né!

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.