PHP + MYSQL: Insert de Multiplos Uploads.
Existem algumas maneiras
bem bacanas de se trabalhar o envio de imagens, uploads, e quando se fala em
múltiplos uploads a maneira mais vista atualmente é aquela em que em um único
campo file você com o botão shift pressionado escolhe varias imagens e em um
único campo tudo é enviado, no meu caso, eu optei por criar 10 campos de
uploads, e um botão para enviar as 10 imagens ao mesmo tempo, a diferença é que
não se usa o shift, vc precisar escolher as fotos uma por uma, esse é o modelo
que se encaixou bem no meu projeto, e é isto que torna o múltiplo envio de
uploads bacana, tem opções para todos os tipos de projetos.
Vou compartilhar com vocês
a opção que escolhi.
Primeiramente criamos uma
tabela no banco de dados:
CREATE TABLE fotografiaportfolio (idfotografiaportfolio INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,fotoportfolio01 TEXT NULL,PRIMARY KEY(idfotografiaportfolio));
Onde, idfotografiaportfolio é a nossa primary key, auto-increment, e fotoportfolio01 é o campo que irá armazenar as nossas fotografias.
Em seguida deve-se criar o arquivo php de conexão com o banco de dados, no meu caso criei o arquivo conn.php que contem os seguintes dados:
<?//coneta ao servidor
$servidor = "localhost";//seleciona o banco de dados criado$basedados = "sitetestes";//seleciona o usuario do banco$utilizador = "root";//verifica a senha$chavepass = "";//faz a conexão com a função mysql_connect , se os dados estiverem incorretos um erro será apresentado.$conn = mysql_connect($servidor, $utilizador, $chavepass);if (!$conn){die('Erro; ' . mysql_error());}mysql_select_db($basedados, $conn);?>
Em seguida, na pagina em que você pretende colocar o arquivo de carregamento(upload) coloque o seguinte código(lembrando que eu optei por ter 10 campos de carregamento de imagens):
//crie um formulário e no action coloque o nome inserirfoto.php , este arquivo criaremos posteriormente.<form id="inserir" name="inserir" method="post" action="inserirfoto.php" enctype="multipart/form-data">//nos inputs utilize o tipo file ou seja type=file e de ao name o nome da seu campo do banco de dados acompanhado de chaves, ou seja, "fotoportfolio01[]" Imagem01: <input name="fotoportfolio01[]" type="file" size="45" /><br /> Imagem02: <input name="fotoportfolio01[]" type="file" id="fotoportfolio01[]" size="45" /><br /> Imagem03: <input name="fotoportfolio01[]" type="file" id="fotoportfolio01[]" size="45" /><br /> Imagem04: <input name="fotoportfolio01[]" type="file" id="fotoportfolio01[]" size="45" /><br /> Imagem05: <input name="fotoportfolio01[]" type="file" id="fotoportfolio01[]" size="45" /><br /> Imagem06: <input name="fotoportfolio01[]" type="file" id="fotoportfolio01[]" size="45" /><br /> Imagem07: <input name="fotoportfolio01[]" type="file" id="fotoportfolio01[]" size="45" /><br /> Imagem08: <input name="fotoportfolio01[]" type="file" id="fotoportfolio01[]" size="45" /><br /> Imagem09: <input name="fotoportfolio01[]" type="file" id="fotoportfolio01[]" size="45" /><br /> Imagem10: <input name="fotoportfolio01[]" type="file" id="fotoportfolio01[]" size="45" /><br/><br/><input class="button" type="submit" name="submit" id="submit" value=""></form>
Depois crie o arquivo inserirfoto.php e coloque o seguinte codigo:
<?//cria uma função para não deixar a pessoa tentar cadastrar com acentosfunction trocar_acentos ($img){$img = str_replace(' ','_',$ img);$img = str_replace('á','a',$ img);$img = str_replace('Á','a',$ img);$img = str_replace('é','e',$ img);$img = str_replace('É','e',$ img);$img = str_replace('í','i',$ img);$img = str_replace('Í','i',$ img);$img = str_replace('ó','o',$ img);$img = str_replace('Ó','o',$ img);$img = str_replace('ú','u',$ img);$img = str_replace('Ú','u',$ img);$img = strtolower($img);return $img;}$img = $_FILES['fotoportfolio01'];$pasta = 'img/portfolio';$contar = count($img['name']);$ok = 0;$erro = 0;for($i = 0; $i < $contar; $i++){$nome = $img['name'][$i];$tmp = $img['tmp_name'][$i];if(!empty($nome)){if(move_uploaded_file($tmp, $pasta.$nome)){//aqui vc inseria na tabela imagens_extras$sql = "INSERT INTO fotografiaportfolio ( fotoportfolio01) VALUES ('" . $nome . "')";$qr = mysql_query($sql) or die(mysql_error());$ok++;}else{$erro++;}}}?>
Tranquilo não é verdade?
Tente fazer, e em caso de dificuldades deixe um comentário que respondo assim
que puder, mas não desista, tente fazer, preste bastante atenção nos campos e
variáveis que você criou, para ver se elas batem direitinho. Espero que tenham
gostado e até a próxima.
Certo!
ResponderExcluirDai vai inserir todas as urls das img em 1 campo soh da tabela do BD...
Suponhamos q do Upload de 10 Fotos preciso puxar a url de cada uma (pra exibir num slide js)...como eu faria pra puxar cada url de cada imagem do mysql??
Muito bom serviu direitinho para um form no qual necessitava de envio de várias fotos.
ResponderExcluirParabéns!
Ah só para facilitar um pouco mais as coisas no lugar da função para substituir os acentos use um preg_replace:
ResponderExcluir$img = preg_replace("/[^a-zA-Z0-9\s]/ ", "", $img);