Ir para conteúdo

POWERED BY:

Arquivado

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

felipebmfaria

Percorrer array

Recommended Posts

Boa tarde!

 

Estava querendo entender melhor esta coisa de array...

 

tenho um form.html

 

<form action="enviar.php" method="post" enctype="multipart/form-data">
<input type="file" name="foto[]" /><br />
<input type="file" name="foto[]" /><br />
<input type="file" name="foto[]" /><br />

 

no enviar.php preciso upar as fotos e salvar o caminho no banco

      $foto1=$_FILES['foto1']['name'];
      $caminho1=$dir.$foto1;
      if(move_uploaded_file($_FILES['foto1']['tmp_name'],$caminho1))
      {
      list($largura,$altura,$tipo)=getimagesize($caminho1);
  
          $imagem = imagecreatefromjpeg($caminho1);
                  $Thumbnail = imagecreatetruecolor($width, $heigth);
                  imagecopyresampled($Thumbnail, $imagem, 0, 0, 0, 0, $width, $heigth, $largura, $altura);
                  imagejpeg($Thumbnail,$dir.'/pequena_'.$foto1);
                  $pequena1=$caminho_mysql.'pequena_'.$foto1;
       }
  
mysql_query("INSERT INTO tabela (nome, foto1, thumb1) values ('$nome','$caminho1','$pequena1')")or die("Erro! Tente mais tarde!");

Até poderia repetir este trecho do código do php tres vezes e o codigo funcionaria normalmente, mas eu queria saber como fazer para percorrer isto num array e salvar no banco.

 

Alguem pode me ajudar? Talvez um exemplo??

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi muito bem o que você quer, mas pra percorrer array você pode utilizar assim

$array = array(1, 2, 3, 4);
foreach($array as $valor){
   echo $valor;
}
tenta ai no seu projeto e nos fala o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para você entender como está vindo os dados do formulário, coloque este código.

echo '<pre>';
print_r($_FILES);

Veja se assim você consegue entender como fazer, olhando o retorno deste código com o código do jpraminelli.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala felipebmfaria,

 

o que acontece neste caso, é como no PHP...

 

se você faz:

 

<?php
$carros[] = "bmw";
$carros[] = "mercedes";
$carros[] = "porsche";

echo "<pre>";

print_r($carros);

echo "</pre>";
?>

O resultado será:

 

Array
(
	[0] => bmw
	[1] => mercedes
	[2] => porsche
)

Entendeu?

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, tentarei ser um pouco mais claro sobre o que eu quero:

 

tenho um form.html com campos para 3 imagens, correto?

<form action="enviar.php" method="post" enctype="multipart/form-data">
<input type="file" name="foto1" /><br />
<input type="file" name="foto2" /><br />
<input type="file" name="foto3" /><br />...

aih vem o arquivo.php... eu até poderia fazer assim...


$foto1=$_FILES['foto1']['name'];      
$caminho1=$dir.$foto1;      
if(move_uploaded_file($_FILES['foto1']['tmp_name'],$caminho1))      
{      
list($largura,$altura,$tipo)=getimagesize($caminho1);            
$imagem = imagecreatefromjpeg($caminho1);                  
$Thumbnail = imagecreatetruecolor($width, $heigth);                  
imagecopyresampled($Thumbnail, $imagem, 0, 0, 0, 0, $width, $heigth, $largura, $altura);                  imagejpeg($Thumbnail,$dir.'/pequena_'.$foto1);                 
$pequena1=$caminho_mysql.'pequena_'.$foto1;       
}  


$foto2=$_FILES['foto2']['name'];      
$caminho2=$dir.$foto2;      
if(move_uploaded_file($_FILES['foto2']['tmp_name'],$caminho2))      
{      
list($largura,$altura,$tipo)=getimagesize($caminho2);            
$imagem = imagecreatefromjpeg($caminho2);                  
$Thumbnail = imagecreatetruecolor($width, $heigth);                  
imagecopyresampled($Thumbnail, $imagem, 0, 0, 0, 0, $width, $heigth, $largura, $altura);                  imagejpeg($Thumbnail,$dir.'/pequena_'.$foto2);                 
$pequena2=$caminho_mysql.'pequena_'.$foto2;       
}  


$foto3=$_FILES['foto3']['name'];      
$caminho3=$dir.$foto3;      
if(move_uploaded_file($_FILES['foto3']['tmp_name'],$caminho3))      
{      
list($largura,$altura,$tipo)=getimagesize($caminho3);            
$imagem = imagecreatefromjpeg($caminho3);                  
$Thumbnail = imagecreatetruecolor($width, $heigth);                  
imagecopyresampled($Thumbnail, $imagem, 0, 0, 0, 0, $width, $heigth, $largura, $altura);                  imagejpeg($Thumbnail,$dir.'/pequena_'.$foto3);                 
$pequena3=$caminho_mysql.'pequena_'.$foto3;       
}  

mysql_query("INSERT INTO tabela (foto1, thumb1, foto2, thumb2, foto3, thumb3) values ('$caminho1','$pequena1','$caminho2','$pequena2','$caminho3','$pequena3')")or die("Erro! Tente mais tarde!");

 

 

MAS sei que posso fazer isto com array, correto? Afinal, e se eu tiver 50 inputs??? Sakou??

 

Queria saber como posso montar este loop com um array? Talvez em exemplo...

 

grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O teu formulário tá perfeito amigo.

Veja, oque você vai receber será:

$_FILES['foto']['tmp_name'][1];
$_FILES['foto']['tmp_name'][2];
..

$_FILES['foto']['tmp_name'][n];
Usando o laço:

$fotos = $_FILES['foto'];
for( $i=0; $i<count($fotos['tmp_name']); $i++ )
{
   if( move_uploaded_file( $fotos['tmp_name'][$i], $caminho ) ){
...
}
fiz correndo aqui na facul.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz assim mas deu erro no move_uploaded_file.

 

form.html

<form action="enviar.php" method="post" enctype="multipart/form-data">
<input type="file" name="foto[]" /><br />
<input type="file" name="foto[]" /><br />
<input type="file" name="foto[]" /><br />

php

$fotos = $_FILES['foto'];
for( $i=0; $i<count($fotos['tmp_name']); $i++ )
  {   
      $caminho[$i]=$dir.$rand.$foto[$i];
	  if( move_uploaded_file( $fotos['tmp_name'][$i], $caminho[$i] ) )
	  {
	      list($largura,$altura,$tipo)=getimagesize($caminho[$i]);
          $imagem = imagecreatefromjpeg($caminho[$i]);
          $Thumbnail = imagecreatetruecolor($width, $heigth);
          imagecopyresampled($Thumbnail, $imagem, 0, 0, 0, 0, $width, $heigth, $largura, $altura);
          imagejpeg($Thumbnail,$dir.'/pequena_'.$rand.$foto[$i]);
          $pequena[$i]=$caminho_mysql.'pequena_'.$rand.$foto[$i];
      }
  }	    

mysql_query("INSERT INTO tabela (foto1, thumb1, foto2, thumb2, foto3, thumb3) values ('$caminho[$i]','$pequena[$i]','$caminho[$i]','$pequena[$i]','$caminho[$i]','$pequena[$i]')")or die("Erro! Tente mais tarde!");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz assim:

$caminho=$dir.$rand.$foto['name'][$i];
      echo $caminho;
          if( move_uploaded_file( $fotos['tmp_name'][$i], $caminho ) )
          {

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa a demora para voltar a postar, é que tive de dar uma parada com este código devido a uma outra urgencia que pintou...

 

Willian Bruno, fiz as alteracoes que sugeriu mas continua com o erro:

 

Warning: move_uploaded_file(fotos/) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\xampp\htdocs\array\enviar.php on line 16

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\xampp\tmp\phpCA.tmp' to 'fotos/' in C:\xampp\htdocs\array\enviar.php on line 16

Warning: move_uploaded_file(fotos/) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\xampp\htdocs\array\enviar.php on line 16

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\xampp\tmp\phpCB.tmp' to 'fotos/' in C:\xampp\htdocs\array\enviar.php on line 16

Warning: move_uploaded_file(fotos/) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\xampp\htdocs\array\enviar.php on line 16

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\xampp\tmp\phpCC.tmp' to 'fotos/' in C:\xampp\htdocs\array\enviar.php on line 16
Erro! Tente mais tarde!

 

o codigo que estou usando

 

$dir="fotos/";
$caminho_mysql = 'fotos/'; 
$width = '75';
$heigth = '75';

  
$fotos = $_FILES['foto'];
for( $i=0; $i<count($fotos['tmp_name']); $i++ )
  {   
      $caminho=$dir.$rand.$foto[$i];
	  if( move_uploaded_file( $fotos['tmp_name'][$i], $caminho ) )
	  {
	      list($largura,$altura,$tipo)=getimagesize($caminho[$i]);
          $imagem = imagecreatefromjpeg($caminho[$i]);
          $Thumbnail = imagecreatetruecolor($width, $heigth);
          imagecopyresampled($Thumbnail, $imagem, 0, 0, 0, 0, $width, $heigth, $largura, $altura);
          imagejpeg($Thumbnail,$dir.'/pequena_'.$rand.$foto[$i]);
          $pequena[$i]=$caminho_mysql.'pequena_'.$rand.$foto[$i];
      }
  }	    

mysql_query("INSERT INTO tabela 

(foto1, thumb1, foto2, thumb2, foto3, thumb3) 

values 

(''$caminho[$i]','$pequena[$i]','$caminho[$i]','$pequena[$i]','$caminho[$i]','$pequena[$i]')

")or die("Erro! Tente mais tarde!");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retirei o

 

$caminho=$dir.$rand.$foto[$i];

mas o mesmo erro persiste:

 

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\xampp\tmp\phpCA.tmp' to 'fotos/' in C:\xampp\htdocs\array\enviar.php on line 16Warning: move_uploaded_file(fotos/) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\xampp\htdocs\array\enviar.php on line 16Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\xampp\tmp\phpCB.tmp' to 'fotos/' in C:\xampp\htdocs\array\enviar.php on line 16Warning: move_uploaded_file(fotos/) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\xampp\htdocs\array\enviar.php on line 16Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\xampp\tmp\phpCC.tmp' to 'fotos/' in C:\xampp\htdocs\array\enviar.php on line 16Erro! Tente mais tarde!

alguem pode me ajudar a resolver?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz assim mas deu erro no move_uploaded_file.

 

Você está utilizando o índice no lugar errado, tenta assim:

 

//...
	if( move_uploaded_file( $fotos[ $i ]['tmp_name'], $caminho[$i] ) )
//...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não foi...

 

As fotos não foram upadas e no banco entraram uns registros estranhos do tipo "o" nos campos de foto1, foto2 e foto3.

 

o codigo que estou usando agora:

 

$dir="fotos/";
$caminho_mysql = 'fotos/'; 
$width = '75';
$heigth = '75';

$fotos = $_FILES['foto'];
for( $i=0; $i<count($fotos['tmp_name']); $i++ )
  {   
      $caminho=$dir.$rand.$foto[$i];
	  if( move_uploaded_file( $fotos[$i]['tmp_name'], $caminho[$i] ) )
	  {
	      list($largura,$altura,$tipo)=getimagesize($caminho[$i]);
          $imagem = imagecreatefromjpeg($caminho[$i]);
          $Thumbnail = imagecreatetruecolor($width, $heigth);
          imagecopyresampled($Thumbnail, $imagem, 0, 0, 0, 0, $width, $heigth, $largura, $altura);
          imagejpeg($Thumbnail,$dir.'/pequena_'.$rand.$foto[$i]);
          $pequena[$i]=$caminho_mysql.'pequena_'.$rand.$foto[$i];
      }
  }	    
  
mysql_query("INSERT INTO galeria 

(foto1, thumb1, foto2, thumb2, foto3, thumb3) 
values 
('$caminho[$i]','$pequena[$i]','$caminho[$i]','$pequena[$i]','$caminho[$i]','$pequena[$i]')

")or die("Erro! Tente mais tarde!");
?>
<script language="JavaScript">alert('*** Sucesso! ****');location.href='index.php';</script>

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.