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);
?>
<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çã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)
Pergunta
Carlos Rocha
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:
Feita isso, vamos aos códigos: (É claro que podem ser adicionados dados nessa tabela como por exemplo, nome, endereço, tel...) Multiplos_Uploads.php FormInsert.php FormUpdate.phpBom, é isso ai.
Qualquer dúvida é só perguntar.
Espero ter colaborado com alguém.
Editado por Jonathan QueirozRemover 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
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.