I'm making a form, where you have a part of registering images for a photo gallery.
In this field I use a script with a add field button so that a new field can be inserted for each photo
<label>Galeria de Foto</label>
<BR><BR>
<button type="button" id="add_field" class="btn btn-success"><i class="fa fa-check"></i> Adicionar + Foto</button>
<br>
<div id="listas">
<div><input name="fotos[]" type="file" class="form-control" aria-describedby="fileHelp" style="width: 70%;"></div>
</div>
This is the script that adds the new field:
<script>
$(document).ready(function() {
var campos_max = 10; //max de 10 campos
var x = 1; // campos iniciais
$('#add_field').click (function(e) {
e.preventDefault(); //prevenir novos clicks
if (x < campos_max) {
$('#listas').append('<div>\
<input name="fotos[]" type="file" class="form-control" aria-describedby="fileHelp" style="width: 70%;">\
<a href="#" class="remover_campo">Remover</a>\
</div>');
x++;
}
});
// Remover o div anterior
$('#listas').on("click",".remover_campo",function(e) {
e.preventDefault();
$(this).parent('div').remove();
x--;
});
});
</script>
So far so good. It creates a new file field, named photos [] . And upload it to the folder I set, without any error.
The problem is when you save the name of each image in the database.
After sending the form by post it performs the following:
<?
//include_once("config.php");
$nome_embarcacao = $_POST[nome];
$tipo = $_POST[tipo];
$arquivo = $_POST[arquivo];
$capacidade = $_POST[capacidade];
$tamanho = $_POST[tamanho];
$motorizacao = $_POST[motorizacao];
$equipamentos = $_POST[equipamentos];
$periodo_passeio = $_POST[periodo_passeio];
$area_navegacao = $_POST[area_navegacao];
$descricao = $_POST[descricao];
$sql = "INSERT INTO 'embarcacao' ('id', 'nome', 'tipo', 'arquivo', 'capacidade', 'tamanho', 'motorizacao', 'equipamentos', 'periodo_passeio', 'area_navegacao', 'descricao') VALUES (NULL, '$nome_embarcacao', '$tipo', '$arquivo', '$capacidade', '$tamanho', '$motorizacao', '$equipamentos', '$periodo_passeio', '$area_navegacao', '$descricao');";
$sql = mysql_query($sql);
$id_recuperado = mysql_insert_id();
// inicia criação de pasta
$pasta = @mkdir("../assets/images/embarcacoes/$id_recuperado");
// fim da criação da pasta
$uploaddir="../assets/images/embarcacoes/$id_recuperado/";
if($arquivo != "none") {// verifica campo foto 1
if (copy($_FILES['arquivo']['tmp_name'], $uploaddir . $_FILES['arquivo']['name'])) {
$varfoto01 = $_FILES['arquivo']['name'];
$var1 = mysql_query("update embarcacao set arquivo='$varfoto01' where
id='$id_recuperado'");
}}
// Pasta de destino das fotos
$Destino = "../assets/images/embarcacoes/$id_recuperado/";
// Obtém dados do upload
$Fotos = $_FILES["fotos"];
// Contagem de fotos enviadas
$Conta = 0;
// Itera sobre as enviadas e processa as validações e upload
for($i = 0; $i < sizeof($Fotos); $i++)
{
// Passa valores da iteração atual
$Nome = $Fotos["name"][$i];
$Tamanho = $Fotos["size"][$i];
$Tipo = $Fotos["type"][$i];
$Tmpname = $Fotos["tmp_name"][$i];
// Verifica se tem arquivo enviado
if($Tamanho > 0 && strlen($Nome) > 1)
{
// Verifica se é uma imagem
if(preg_match("/^image\/(gif|jpeg|jpg|png)$/", $Tipo))
{
// Caminho completo de destino da foto
$Caminho = $Destino . $Nome;
// Tudo OK! Move o upload!
if(move_uploaded_file($Tmpname, $Caminho))
{
$sql_fotos = "INSERT INTO 'embarcacao_fotos' ('id', 'id_embarcacao', 'arquivo') VALUES";
foreach($_POST['fotos'] AS $indice => $valor) {
$sql_fotos .= " (NULL, '{$id_recuperado}', '{$valor}'),";
}
echo "Foto #" . ($i+1) . " enviada.<br/>";
// Faz contagem de enviada com sucesso
$Conta++;
}
else // Erro no envio
{
// $i+1 porque $i começa em zero
echo "Não foi possível enviar a foto #" . ($i+1) . "<br/>";
}
}
}
}
if($Conta) // Imagens foram enviadas, ok!
{
echo "<br/>Foi(am) enviada(s) " . $Conta . " foto(s).";
}
else // Nenhuma imagem enviada, faz alguma ação
{
echo "Você não enviou fotos!";
}
?>
In foreach ($ _ POST ['photos'] , it does not enter the name of each file in the database.
I wonder if anyone can help me. With this function save the file names of the fotos[]
field in the database. I just need this. Save your names, as the upload in the created folder it is already doing normal.
Sorry if my post is duplicate and sorry if I could not explain it right. I am new to creating article for help. I can always find someone with the same problem and solve for his question. But this one I have already tried and I do not find anyone with the same problem.
Hugs to all