Ir para conteúdo
Fórum Script Brasil
  • 0

Upload de várias imagens com insert e update


Carlos Rocha

Pergunta

Upload de várias imagens com insert e update.

Já com paginação

Bom, certa vez me encontrei nua situação difícil, cuja qual não achava solução nem em sites de inglês, consegui resolver e gostaria de compartilhar com vocês.

Trata-se de upload de várias imagens com insert e update já com paginação.

Primeiro é necessário criar uma tabela com pelo menos 6 campos:

ID autoincrementr
FOTO  text 
FOTO2 text
FOTO3 text 
FOTO4 text
FOTO5 text
Feita isso, vamos aos códigos: (É claro que podem ser adicionados dados nessa tabela como por exemplo, nome, endereço, tel...) 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);
?>
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);  
  
  $sql_insere= mysql_query("insert into imoveiscadastrovenda (Foto, Foto2,  Foto3,  Foto4,  Foto5)
                            values ('$NomedasFotos[0]','$NomedasFotos[1]','$NomedasFotos[2]','$NomedasFotos[3]', '$NomedasFotos[4]')
                           ");
  
  if ($sql_insere) {echo "Bão";}
  else {echo "Ruim";}
  
                       }
  ?>
FormUpdate.php
&lt;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"); ?>

<?
function foto2($FotoVer,$ide) {
       $endereco_mini="teste_upload/mini/";    
          $endereco_normal="teste_upload/normal/";    
//aqui ele vai ver se existe alguma coisa escrita no campo foto_receita na tabela
if($FotoVer==""){
                 $foto3 = "<font color=#DEE9EF size=2 face=verdana,arial, Helvetica, sans-serif><strong>Sem foto</strong></font>";
             }
        else {
//se existir um valor no campo na tabela ele testa se a foto esxiste 'fisicamente' na pasta
              if(file_exists($endereco_mini.$FotoVer)){
                              
                 if(file_exists($endereco_normal.$FotoVer)){
                     //se existir ele monta a exibição da foto e coloca numa variavel $foto2
                     $foto_end = "<img src='$endereco_mini$FotoVer' border=0 height=50>";                 
                     list($width, $height) = getimagesize($endereco_normal.$FotoVer); 
                     if ($width > 780) {$width = 780;}
                     $foto3 = "<a href=java script:AbreImagemGrande('Alteracao_ImoveisVenda_Foto.php?Id=$ide','ImpNot','$width','$height')>$foto_end</a>";
                                                           }
                                                       else{
//se tiver um valor na tabela, mas a foto não existir na pasta a variavel fica setada como sem foto
$foto3 = "<font color=#DEE9EF size=2 face=verdana,arial, Helvetica, sans-serif><strong>Sem foto</strong></font>";
                                                            }
                                                                           
                                                                           
                                                        }
                                                    else{                    

//se tiver um valor na tabela, mas a foto não existir na pasta a variavel fica setada como sem foto
$foto3 = "<font color=#DEE9EF size=2 face=verdana,arial, Helvetica, sans-serif><strong>Sem foto</strong></font>";
                                                                                 }
             }
             return $foto3;
}
?>


<table WIDTH="100%" BGCOLOR="#0080C0">
<?php
if ($acao == "listar"){
//Inicio da lista dos dados
$Sql = mysql_query("select id, Foto, Foto2, Foto3, Foto4, Foto5 from ImoveisCadastroVenda where Baixa = 'N'");
$total = mysql_num_rows($Sql); // Esta função irá retornar o total de linhas na tabela
$lpp = 15; // Especifique quantos resultados você quer por página
$paginas = ceil($total / $lpp); // Retorna o total de páginas
if(!isset($pagina)) { $pagina = 0; } // Especifica uma valor para variavel pagina caso a mesma não esteja setada
$inicio = $pagina * $lpp; // Retorna qual será a primeira linha a ser mostrada no MySQL
$Sql = mysql_query("select id, Foto, Foto2, Foto3, Foto4, Foto5 from ImoveisCadastroVenda where Baixa = 'N' LIMIT $inicio, $lpp");

    if ($total == "0") {?><tr><td colspan=13 align="center" valign="middle" bgcolor="#FFFFFF"><center><font color=red>=>Não foi encontrado nenhum imóvel para a sua pesquiza</font>
</center></td></tr><?php }
    else {?>

<tr><td colspan=13><center>
  <b><font color="#FFFFFF" size=+2>Edi&ccedil;&atilde;o de Imagens</font><br>
  <font color="#FFFF00">Para alterar as imagens, clike em alterar </font></b>
</center></td></tr>
<tr BGCOLOR="#CCCCCC">
<td><div align="center"><b>Id</b></div></td>
<td><div align="center"><b>Foto</b></div></td>
<td><div align="center"><b>Foto2</b></div></td>
<td><div align="center"><b>Foto3</b></div></td>
<td><div align="center"><b>Foto4</b></div></td>
<td><div align="center"><b>Foto5</b></div></td>
<td><div align="center"><b>Alterar</b></div></td>
<?php
while(list($id, $Foto, $Foto2, $Foto3, $Foto4, $Foto5) = mysql_fetch_row($Sql)) {
echo "
      <tr BGCOLOR=#FFFFCC>
      <td><font face=Arial size=-2><b>". $Id ."</b></font></td>
      <td><font face=Arial size=-2><b>". foto2($Foto,$id) ."</b></font></td>            
      <td><font face=Arial size=-2><b>". foto2($Foto2,$id) ."</b></font></td>          
      <td><font face=Arial size=-2><b>". foto2($Foto3,$id) ."</b></font></td>          
      <td><font face=Arial size=-2><b>". foto2($Foto4,$id) ."</b></font></td>          
      <td><font face=Arial size=-2><b>". foto2($Foto5,$id) ."</b></font></td>          
      <td align=center><a href='?acao=alterar&id=". $id ."'><img border=0 src=../figuras/alterar.ico></a></td>
      </tr>
    ";
}
if($pagina > 0) {
   $menos = $pagina - 1;
   $url = "$PHP_SELF?acao=listar&pagina=$menos";
   echo "<a href=".$url.">Anterior</a>"; // Vai para a página anterior
}
for($i=0;$i<$paginas;$i++) { // Gera um loop com o link para as páginas
   $url = "$PHP_SELF?acao=listar&pagina=$i";
   echo " | <a href=".$url.">$i</a>";
}
if($pagina < ($paginas - 1)) {
   $mais = $pagina + 1;
   $url = "$PHP_SELF?acao=listar&pagina=$mais";
   echo " | <a href=".$url.">Próxima</a>";


}
}}
  //Fim do envio dos dados
?></table>
                  
  
<?
  if ($acao=="alterar") {  ?>  
   <b>Envio das fotos</b><br />
   
    <form action="FormUpdate.php?acao=altera&id=<?=$id;?>" method="post"  enctype="multipart/form-data">
<?  
 $sql = "Select id, Foto, Foto2, Foto3, Foto4, Foto5 from imoveiscadastrovenda where id=$id";
          $sql1 = mysql_query($sql) or die ("Select mau feito");
      
          $nome_das_fotos = mysql_fetch_array($sql1);
      
          $Id = $nome_das_fotos['id'];
          $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

                        ///É necessario enviar junto ao file, um campo hidden contendo o valor dos campos das fotos no banco de dados pois, se não enviar, haverá sobscrição no banco e a imaghem que já esta cadastrada terá seu valor apagado
            echo "
                  <input type='file' name='Fotos[]'>
                  <input type='hidden' name=FotosPost[] value='$Foto[$i]'> 
                                    ";
            echo  foto2($Foto[$i],Id)."<br>";

                                       }//Fimdo for
?>
 <input type="submit" value="OK"/>
    </form>
<?      } ?>

<?
  if ($acao=="altera") { 
  
  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=$id");
  
  if ($sql_insere) {echo "Bão";}
  else {echo "Ruim";}
  
                       }
  ?>

Bom, é isso ai.

Qualquer dúvida é só perguntar.

Espero ter colaborado com alguém.

Editado por Jonathan Queiroz
Remover caixa alta do título conforme regra 3.7 (Jonathan)
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Olha só, eu tenho um problema com um formulário simples de atualização de informações do banco de dados.

Tudo funciona, mas quando visualizo um item para edição se não atualizar a imagem ela some quando se clica

no botão para fazer a atualização das informações.

Certamente deve ter relação com o fato de que todos os outros campos já estão preenchidos (óbvio!) e o campo

da imagem é um input tipo "file".

A minha pergunta é: Você ou outra pessoa caridosa que ler esse post saberia como posso evitar esse problema?

Obrigado!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...