betolima Postado Outubro 16, 2008 Denunciar Share Postado Outubro 16, 2008 Olá, tenho um sistema de upload onde envia 5 imagens.1) Envia o caminho pro mysql2) Envia as imagens pra pasta (Grande e Pequena).3) Ainda pode escolher pra qual album mandar...Gostaria que alguém pudesse fazer o download aqui e testasse localmente....Estou com um pequeno problema, na verdade não sei onde é, o que acontece é o seguinte:Após o submit das 5 imagens, ele grava no banco os nomes das imagens e o thumb. Só que alguns nomes de imagens ficam repetidos.Vejam:Consequentemente grava somente 4 imagens la nas pastas porque o sistema escolhe uma das repetidas e descarta o outro.O que eu queria é que ele gravasse sem repetir, que gravasse corretamente...Agradeço quem puder ajudar.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 RodrigoGomes Postado Outubro 16, 2008 Denunciar Share Postado Outubro 16, 2008 poste o código. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 betolima Postado Outubro 16, 2008 Autor Denunciar Share Postado Outubro 16, 2008 ok, vou postar jáindex.php<?php require_once ("class_upload.php"); $upload = new Upload(); $file=isset($_FILES['arquivo']) ? $_FILES['arquivo']['tmp_name'] : FALSE; if($file!=FALSE){ $cn=count($file); for($i=0;$i<$cn;$i++){ if($file[$i]{ 1 } ) { $upload->Envia_Arquivo($i); } } } ?> <html> <head> <title>Upload de imagens</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <table align="center" width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td align="left"> <form action="index.php" method="post" enctype="multipart/form-data" name="form1" id="form1"> <input name="arquivo[]" type="file" id="arquivo[]" /><br> <textarea name="descricao[]" rows="2" id="descricao[]"></textarea><br><br> <input name="arquivo[]" type="file" id="arquivo[]" /><br> <textarea name="descricao[]" rows="2" id="descricao[]"></textarea><br><br> <input name="arquivo[]" type="file" id="arquivo[]" /><br> <textarea name="descricao[]" rows="2" id="descricao[]"></textarea><br><br> <input name="arquivo[]" type="file" id="arquivo[]" /><br> <textarea name="descricao[]" rows="2" id="descricao[]"></textarea><br><br> <input name="arquivo[]" type="file" id="arquivo[]" /><br> <textarea name="descricao[]" rows="2" id="descricao[]"></textarea><br><br> <br> <label>Selecione o Album <select name="seleciona_album" id="seleciona_album"> <option>Selecione</option> <?php $q = "SELECT * FROM album ORDER BY id ASC"; $d = mysql_query($q); while($r = mysql_fetch_array($d)) echo '<option value="'.$r['id'].'">'.$r['album'].'</option>'; ?> </select> </label> <input type="submit" name="Submit" value="Enviar"> </form> </td> </tr> </table> </body> </html> class_upload.php <?php $_host = "localhost"; $_user = "root"; // usuário $_pass = ""; // senha $_db = "banco"; // banco de dados mysql_pconnect($_host, $_user, $_pass) or trigger_error(mysql_error(),E_USER_ERROR); mysql_select_db($_db); ?> <?php set_time_limit(0); include "funcoes.php"; class Upload { var $arquivo = ""; var $erro = array ( "0" => "<script language=javascript>window.alert('\"Foto Enviada com sucesso!\"') </script>", "1" => "<script language=javascript>window.alert('\"O arquivo é maior que o permitido pelo Servidor!\"') </script>", "2" => "<script language=javascript>window.alert('\"O arquivo é maior que o permitido pelo formulario!\"') </script>", "3" => "<script language=javascript>window.alert('\"O upload do arquivo foi feito parcialmente!\"') </script>", "4" =>"<script language=javascript>window.alert('\"Não foi feito o upload do Arquivo!\"') </script>"); function Verifica_Upload($z="0") { $this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE; if(!is_uploaded_file($this->arquivo['tmp_name'][$z])) { return false; } $get = getimagesize($this->arquivo['tmp_name'][$z]); if(($get["mime"] != "image/jpeg") AND ($get["mime"] != "image/gif") AND ($get["mime"] != "image/png")) { echo "<span style=\"color: white; border: solid 1px; background: red;\">Esse arquivo não é uma imagem válida</span>"; exit; } return true; } function Envia_Arquivo($z="0") { if($this->Verifica_Upload($z)) { $this->gera_fotos($z); return true; } else { echo "<span style=\"color: white; border: solid 1px; background: red;\">".$this->erro[$this->arquivo['error']]."</span>"; } } function gera_fotos($z="0") { $diretorio = "images/"; $diretorio_g = "images/big/"; $diretorio_p = "images/small/"; if(!file_exists($diretorio)) { mkdir($diretorio); } if(!file_exists($diretorio_g)) { mkdir($diretorio_g); } if(!file_exists($diretorio_p)) { mkdir($diretorio_p); } $get2 = getimagesize($this->arquivo['tmp_name'][$z]); /* Vai servir para verificar se é GIF ou JPG ou PNG*/ $aux_tipo_imagem = $get2["mime"]; /* Vai servir para verificar se é GIF ou JPG ou PNG*/ if ($aux_tipo_imagem == "image/jpeg") { $nome_foto = "imagem_".time().".jpg"; $nome_thumb = "thumb_".time().".jpg"; //determino uma resolução maxima e se a imagem for maior ela sera reduzida reduz_imagem_jpg($this->arquivo['tmp_name'][$z], 500, 400, $diretorio_g.$nome_foto); //passo o tamanho da thumbnail reduz_imagem_jpg($this->arquivo['tmp_name'][$z], 150, 150, $diretorio_p.$nome_thumb); } if ($aux_tipo_imagem == "image/gif") { $nome_foto = "imagem_".time().".gif"; $nome_thumb = "thumb_".time().".gif"; //determino uma resolução maxima e se a imagem for maior ela sera reduzida reduz_imagem_gif($this->arquivo['tmp_name'][$z], 500, 400, $diretorio_g.$nome_foto); //passo o tamanho da thumbnail reduz_imagem_gif($this->arquivo['tmp_name'][$z], 150, 150, $diretorio_p.$nome_thumb); } if ($aux_tipo_imagem == "image/png") { $nome_foto = "imagem_".time().".png"; $nome_thumb = "thumb_".time().".png"; //determino uma resolução maxima e se a imagem for maior ela sera reduzida reduz_imagem_png($this->arquivo['tmp_name'][$z], 500, 400, $diretorio_g.$nome_foto); //passo o tamanho da thumbnail reduz_imagem_png($this->arquivo['tmp_name'][$z], 150, 150, $diretorio_p.$nome_thumb); } echo "<span style=\"color: white; border: solid 1px; background: purple;\">".$this->erro[$this->arquivo['error'][$z]]."</span>"; $descricao= $_POST['descricao'][$z]; // Isso aqui faz gravar o nome do arquivo no banco de dados, lembrando que você deve fazer a conexao antes... :D mysql_query("INSERT INTO galeria SET grande='$nome_foto', pequena='$nome_thumb', descricao='$descricao', album='".$_POST['seleciona_album']."'"); } } ?> <?php /* $dir = "images/g"; $dir1=opendir($dir); while ($res=readdir($dir1)){ if ($res!='' && $res!='.' && $res!='..'){ $url = $dir."/".$res; unlink($url); }} closedir($dir1); //rmdir("fotos/g/"); ?> <?php unlink("images/g/$nome_thumb"); */?> funcoes.php <?php //######################## Função para imagem JPG ########################### function reduz_imagem_jpg($img, $max_x, $max_y, $nome_foto) { //pega o tamanho da imagem ($original_x, $original_y) list($width, $height) = getimagesize($img); $original_x = $width; $original_y = $height; // se a largura for maior que altura if($original_x > $original_y) { $porcentagem = (100 * $max_x) / $original_x; } else { $porcentagem = (100 * $max_y) / $original_y; } $tamanho_x = $original_x * ($porcentagem / 100); $tamanho_y = $original_y * ($porcentagem / 100); $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y); $image = imagecreatefromjpeg($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagejpeg($image_p, $nome_foto, 70); } //######################## Função para imagem GIF ########################### function reduz_imagem_gif($img, $max_x, $max_y, $nome_foto) { //pega o tamanho da imagem ($original_x, $original_y) list($width, $height) = getimagesize($img); $original_x = $width; $original_y = $height; // se a largura for maior que altura if($original_x > $original_y) { $porcentagem = (100 * $max_x) / $original_x; } else { $porcentagem = (100 * $max_y) / $original_y; } $tamanho_x = $original_x * ($porcentagem / 100); $tamanho_y = $original_y * ($porcentagem / 100); $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y); $image = imagecreatefromgif($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagegif($image_p, $nome_foto, 70); } //######################## Função para imagem PNG ########################### function reduz_imagem_png($img, $max_x, $max_y, $nome_foto) { //pega o tamanho da imagem ($original_x, $original_y) list($width, $height) = getimagesize($img); $original_x = $width; $original_y = $height; // se a largura for maior que altura if($original_x > $original_y) { $porcentagem = (100 * $max_x) / $original_x; } else { $porcentagem = (100 * $max_y) / $original_y; } $tamanho_x = $original_x * ($porcentagem / 100); $tamanho_y = $original_y * ($porcentagem / 100); $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y); $image = imagecreatefrompng($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagepng($image_p, $nome_foto, 70); } ?> sql CREATE TABLE `album` ( `id` int(10) NOT NULL auto_increment, `album` varchar(60) NOT NULL, `capa` varchar(100) default NULL, `mostra` varchar(3) NOT NULL, `data_criacao` date NOT NULL, `taime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=13; -- -- Extraindo dados da tabela `album` -- INSERT INTO `album` (`id`, `album`, `capa`, `mostra`, `data_criacao`, `taime`) VALUES (1, 'album1', 'thumb_1222476832.jpg', '2', '2008-10-05', '2008-10-10 18:00:44'); -- -------------------------------------------------------- -- -- Estrutura da tabela `galeria` -- CREATE TABLE `galeria` ( `id` int(10) NOT NULL auto_increment, `grande` varchar(100) NOT NULL, `pequena` varchar(100) NOT NULL, `album` varchar(450) NOT NULL, `descricao` varchar(50) default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=267;Precisa-se crirar os diretórios:images/bigimages/small Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 RodrigoGomes Postado Outubro 16, 2008 Denunciar Share Postado Outubro 16, 2008 em class_upload.php susbtitua pelo código abaixo:<?php $_host = "localhost"; $_user = "root"; // usuário $_pass = ""; // senha $_db = "banco"; // banco de dados mysql_pconnect($_host, $_user, $_pass) or trigger_error(mysql_error(),E_USER_ERROR); mysql_select_db($_db); ?> <?php set_time_limit(0); include "funcoes.php"; class Upload { var $arquivo = ""; var $erro = array ( "0" => "<script language=javascript>window.alert('\"Foto Enviada com sucesso!\"') </script>", "1" => "<script language=javascript>window.alert('\"O arquivo é maior que o permitido pelo Servidor!\"') </script>", "2" => "<script language=javascript>window.alert('\"O arquivo é maior que o permitido pelo formulario!\"') </script>", "3" => "<script language=javascript>window.alert('\"O upload do arquivo foi feito parcialmente!\"') </script>", "4" =>"<script language=javascript>window.alert('\"Não foi feito o upload do Arquivo!\"') </script>"); function Verifica_Upload($z="0") { $this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE; if(!is_uploaded_file($this->arquivo['tmp_name'][$z])) { return false; } $get = getimagesize($this->arquivo['tmp_name'][$z]); if(($get["mime"] != "image/jpeg") AND ($get["mime"] != "image/gif") AND ($get["mime"] != "image/png")) { echo "<span style=\"color: white; border: solid 1px; background: red;\">Esse arquivo não é uma imagem válida</span>"; exit; } return true; } function Envia_Arquivo($z="0") { if($this->Verifica_Upload($z)) { $this->gera_fotos($z); return true; } else { echo "<span style=\"color: white; border: solid 1px; background: red;\">".$this->erro[$this->arquivo['error']]."</span>"; } } function gera_fotos($z="0") { $diretorio = "images/"; $diretorio_g = "images/big/"; $diretorio_p = "images/small/"; if(!file_exists($diretorio)) { mkdir($diretorio); } if(!file_exists($diretorio_g)) { mkdir($diretorio_g); } if(!file_exists($diretorio_p)) { mkdir($diretorio_p); } $get2 = getimagesize($this->arquivo['tmp_name'][$z]); /* Vai servir para verificar se é GIF ou JPG ou PNG*/ $aux_tipo_imagem = $get2["mime"]; /* Vai servir para verificar se é GIF ou JPG ou PNG*/ if ($aux_tipo_imagem == "image/jpeg") { $nrand = rand(10000000,99999999); $nome_foto = "imagem_".$nrand.".jpg"; $nome_thumb = "thumb_".$nrand.".jpg"; //determino uma resolução maxima e se a imagem for maior ela sera reduzida reduz_imagem_jpg($this->arquivo['tmp_name'][$z], 500, 400, $diretorio_g.$nome_foto); //passo o tamanho da thumbnail reduz_imagem_jpg($this->arquivo['tmp_name'][$z], 150, 150, $diretorio_p.$nome_thumb); } if ($aux_tipo_imagem == "image/gif") { $nome_foto = "imagem_".time().".gif"; $nome_thumb = "thumb_".time().".gif"; //determino uma resolução maxima e se a imagem for maior ela sera reduzida reduz_imagem_gif($this->arquivo['tmp_name'][$z], 500, 400, $diretorio_g.$nome_foto); //passo o tamanho da thumbnail reduz_imagem_gif($this->arquivo['tmp_name'][$z], 150, 150, $diretorio_p.$nome_thumb); } if ($aux_tipo_imagem == "image/png") { $nome_foto = "imagem_".time().".png"; $nome_thumb = "thumb_".time().".png"; //determino uma resolução maxima e se a imagem for maior ela sera reduzida reduz_imagem_png($this->arquivo['tmp_name'][$z], 500, 400, $diretorio_g.$nome_foto); //passo o tamanho da thumbnail reduz_imagem_png($this->arquivo['tmp_name'][$z], 150, 150, $diretorio_p.$nome_thumb); } echo "<span style=\"color: white; border: solid 1px; background: purple;\">".$this->erro[$this->arquivo['error'][$z]]."</span>"; $descricao= $_POST['descricao'][$z]; // Isso aqui faz gravar o nome do arquivo no banco de dados, lembrando que você deve fazer a conexao antes... :D mysql_query("INSERT INTO galeria SET grande='$nome_foto', pequena='$nome_thumb', descricao='$descricao', album='".$_POST['seleciona_album']."'"); } } ?> <?php /* $dir = "images/g"; $dir1=opendir($dir); while ($res=readdir($dir1)){ if ($res!='' && $res!='.' && $res!='..'){ $url = $dir."/".$res; unlink($url); }} closedir($dir1); //rmdir("fotos/g/"); ?> <?php unlink("images/g/$nome_thumb"); */?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 betolima Postado Outubro 16, 2008 Autor Denunciar Share Postado Outubro 16, 2008 Deu certo, muitíssimo obrigado Caro Vampyro....tava a dias com este problema....Abração Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 betolima Postado Outubro 17, 2008 Autor Denunciar Share Postado Outubro 17, 2008 Caro Vampyro, por acaso poderia me ajudar novamente?Estou conseguindo deletar o registro do banco, mas não apaga as imagens das pastas...também tentei colocar uma confirmação quando pressionado o deletar, mas mesmo cancelando a confirmação ele apaga.listar.php<?php $con = mysql_connect('localhost','root','')or die(mysql_error()); mysql_select_db('banco',$con); $_nome_album = $_REQUEST["album"]; $fotos = mysql_query("SELECT * FROM galeria WHERE album =$_nome_album order by id desc")or die(mysql_error()); $pasta_dir = "../../images/fotos/small/"; $k = 0; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br" lang="pt-br"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script type="text/javascript"> function envioForm(tipo,num) { var formulario = document.getElementsByName("alteracao"+num)[0]; if(tipo == 1) { formulario.action = "alterar.php?album=<?php echo $_nome_album;?>"; } else { //confirm ('Apagar imagem?'); formulario.action = "excluir.php?album=<?php echo $_nome_album;?>"; } formulario.method = "post"; formulario.submit(); } </script> <script type="text/javascript"> <!-- function capa_album(targ,selObj,restore){ //v3.0 eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'"); if (restore) selObj.selectedIndex=0; } //--> </script> <style type="text/css"> .descr { border:1px solid #333; } .textos { font-size:12px; font-family:Arial, Helvetica, sans-serif; } .combo { font-size:12px; width:146px; } .botao { font-size:15px; background-color:#ccc; border:1px solid #333; } </style> </head> <body bgcolor="#efefeb"> <?php echo "<table align=\"center\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"600px\"><tr>"; while($ver = mysql_fetch_array($fotos)){ $id = $ver["id"]; $pequena = $ver["pequena"]; $descricao = $ver["descricao"]; $grande = $ver["grande"]; $k ++; echo "<td align=\"center\"> <form name=\"alteracao$k\" method=\"POST\"> <table> <tr> <td align=\"left\"><img src=\"../../images/fotos/small/$pequena\" border=\"1\" title=\"$pequena\"></a></td> <tr><td align=\"left\" class=\"textos\"> <input name=\"id\" type=\"hidden\" value=\"$id\" />Descrição da Foto <input name=\"descricao\" type=\"text\" id=\"textfield\" value=\"$descricao\" class=\"descr\"> <br> <form> <select name=\"capa\" id=\"capa\" onchange=\"capa_album('parent',this,1)\" class=\"combo\"> <option>Capa do album?</option> <option value=\"capa.php?album=$_nome_album&capa=N\">não</option> <option value=\"capa.php?album=$_nome_album&capa=$pequena\">Sim</option> </select> </form> </tr> </tr> <tr> <td colspan=\"2\"> <input name=\"id\" type=\"hidden\" value=\"$id\" /> <input name=\"pequena\" type=\"hidden\" value=\"$pequena\" /> <input name=\"grande\" type=\"hidden\" value=\"$grande\" /> <input type=\"button\" class=\"botao\" onclick=\"envioForm(1,$k)\" name=\"alterar\" value=\"Editar\" /> <input type=\"button\" class=\"botao\" onclick=\"envioForm(2,$k)\" name=\"ok\" value=\"Excluir\" /> <br> </td> </tr> </table> </form> </td>"; if ( $k == 4) { echo "</tr><tr>"; $k = 0; } } echo "</tr></table>"; ?> <?php echo "<br /><br /><div align='center' class='textos'><a href='enviar.php'>Enviar mais fotos</a></div>";?> </body> </html> excluir.php <?php $con=mysql_connect('localhost','root','')or die('Erro na conexão, verifique os dados'.mysql_error($con)); mysql_select_db('banco',$con)or die('Erro ao selecionar a tabela'.mysql_error($con)); $_nome_album = $_REQUEST["album"]; @chmod('../../images/fotos/',0777); if($_SERVER['REQUEST_METHOD']=='POST'){ @unlink('../../images/fotos/small/'.$_POST['pequena']); @unlink('../../images/fotos/big/'.$_POST['grande']); //echo '../arquivos/'.$_POST['foto']; $apagar=mysql_query("DELETE FROM galeria WHERE id='{$_POST['id']}'")or die(mysql_error()); } ($apagar) ? header("location:listar.php?album=$_nome_album") : die('Erro ao excluir os dados.'); ?>Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 betolima Postado Outubro 20, 2008 Autor Denunciar Share Postado Outubro 20, 2008 Vampyro....O class_upload que você postou ae tá funcionando beleza...te agradeço muito pela força...só que me deparei agora com arquivos maiores que 2Mb....sei que no php ini da pra mudar, mas vou deixar em 2mb mesmo.ele não está upando e também não avisa nada na tela...o problema é que não está dando o alert de erro na tela....Valeu... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
betolima
Olá, tenho um sistema de upload onde envia 5 imagens.
1) Envia o caminho pro mysql
2) Envia as imagens pra pasta (Grande e Pequena).
3) Ainda pode escolher pra qual album mandar...
Gostaria que alguém pudesse fazer o download aqui e testasse localmente....
Estou com um pequeno problema, na verdade não sei onde é, o que acontece é o seguinte:
Após o submit das 5 imagens, ele grava no banco os nomes das imagens e o thumb. Só que alguns nomes de imagens ficam repetidos.
Vejam:
Consequentemente grava somente 4 imagens la nas pastas porque o sistema escolhe uma das repetidas e descarta o outro.
O que eu queria é que ele gravasse sem repetir, que gravasse corretamente...
Agradeço quem puder ajudar....
Link para o comentário
Compartilhar em outros sites
6 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.