Ir para conteúdo

POWERED BY:

Arquivado

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

wdc_black_

Upload Múltiplo de Fotos

Recommended Posts

eai galera esse é meu primeiro tutorial...

gostaria de agradçer ao Willian Bruno Moderador por me ajudar em varios erros que continham no meu código ;D

vo disponibilizar o código pra todos porque eu acho que é uma dúvida pra muita gente ainda.

 

Bom começando, criem um banco de dados...

e executem o seguinte comando sql

sql

CREATE TABLE IF NOT EXISTS `imagens` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `foto` varchar(30) NOT NULL,
  `data` date NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Criem um arquivo php e coloquem o seguinte código.

index.php

<html>
<head>

<script>
var input = 0;
function mais(campo) {

var nova = document.getElementById("aqui");
var novadiv = document.createElement("div");
var nomediv = "div";
novadiv.innerHTML = ""+input+" <input type='file' name='foto[]' value=''>";
nova.appendChild(novadiv);

input++;
}
</script>
</script>

</head>
<body>


<form method="post" action="enviar.php" enctype="multipart/form-data">
<input type="hidden" name="campo" value="">
<input type="button" value="adicionar input" onClick="mais(campo.value)">
<div id="aqui"></div>
<input type="submit">
</form>

</body>
</html>

Agora criem o arquivo de upload das imagens e coloquem o seguinte código.

enviar.php

<?php
        include 'conexao.php';

        $fotos = $_FILES['foto'];
        $enviadas = 0;
        $erros = Array();
        for( $i=0; $i<count($fotos['name']); $i++ )
        {
                if( !empty($fotos['name'][$i]) )
                {
                        $foto = strtolower( $fotos['name'][$i] );
                        $foto = str_replace(
                                array(" ","ã","á","à","é","ê","è","í","ì","ó","õ",'ô',"ç"), 
                                array("_","a","a","a","e","e","e","i","i","o","o",'o',"c"), 
                                $foto);//muito falha essa verificação

                        
                        if( !preg_match( '/^image\/(jpeg|png|gif|pjpeg|jpg)$/', $fotos['type'][$i]) )
                        {
                                echo 'Formato inválido';
                        }
                        else
                        {
                                if( file_exists( 'imagens/'.$foto) )
                                {
                                        $a = 1;
                                        while(file_exists( "imagens/[{$a}]{$foto}") )
                                                $a++;
                                        $foto = "[{$a}]{$foto}";
                                }

                                if( !@move_uploaded_file($fotos['tmp_name'][$i], 'imagens/'.$foto) )
                                {
                                        $erros[] = $fotos['name'][$i];
                                        echo 'Erro ao enviar o foto';
                                }
                                else 
                                        $enviadas++;
                        }
						$sql = mysql_query("INSERT INTO imagens ( id, foto , data ) VALUES ( '', '".$foto."' , NOW() ) ");
                }
        }
        echo "Foram enviadas {$enviadas} foto(s) <br />";
        foreach( $erros AS $erro )
                echo "Falhou ao enviar a foto: {$erro} <br />";

?>

Criem agora o arquivo para conexão com o bando de dados com o seguinte código.

conexao.php

<?
$db = mysql_connect("localhost", "root", "");
$dados = mysql_select_db("upload", $db);
?>

Por fim criem uma pasta chamada imagens dentro do mesmo diretório dos outros arquivos e aproveitem :)

espero que tenha ajudado alguem com esse tutorial, qualquer dúvida só comentar galera ;)

Abraço até a próxima!

Compartilhar este post


Link para o post
Compartilhar em outros sites

legal! ^_^

 

Parabéns pela iniciativa @wdc_black!

 

só, posso ser 'chato', mais uma vez?

simplificando o js:

<html>
<head>
<script type="text/javascript">
var input = 0;
function mais() 
{
	var onde = document.getElementById('aqui');
	onde.innerHTML += input+' <input type="file" name="foto[]" value="" /><br />';

	input++;
}
</script>
</head>
<body>

	<form method="post" action="enviar.php" enctype="multipart/form-data">
		<input type="button" value="adicionar input" onclick="mais()" />
		<div id="aqui"></div>
		<input type="submit" name="enviar" value="enviar" />
	</form>

</body>
</html>
e o trecho de remover os acentos, considere usar uma função, mais abrangente, como a que postei aqui:

http://forum.imasters.com.br/index.php?/topic/395342-upload-multiplo-de-fotos/page__view__findpost__p__1544152

 

e prefira usar a tag completa do php:

<?php
No mais, excelente script! fica aqui, uma ótima referência, funcional e bem escrita ^_^

qualquer sugestão de melhora é bem vinda! :lol:

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.