Multiple PHP uploads and insert into the mysql database multiple images

1

Maybe it's duplicated, but I could not find any explanation that follows in my reasoning.

I have the following code taken from the Web, through a video lesson.

<form class="form-horizontal" method="POST" action="administrativo/processa/adm_proc_cad_produtos.php" enctype="multipart/form-data">

    <div class="form-group">
                <label for="inputEmail3" class="col-sm-2 control-label">Imagens</label>
                <div class="col-sm-10">
                    <input name="arquivo[]" type="file" multiple="multiple"/>
                </div>
    </div>

</form> 


<?php       

        if(isset($_FILES['arquivo'])){
        // informações da imagens
        $imagem = $_FILES['arquivo'];   
        $numArquivo = count(array_filter($imagem['name']));
        // Local de upload
        $pasta = "../../../imagens/produtos/";
        // Permissões de arquivos
        $tipo       = array('image/jpeg', 'image/png');
        $maxsize    = 1024 * 1024 * 10;
        // mensagens
        $msg        = array();
        $errorMsg   = array(
                                1 => 'Arquivos no upload é maior qye o limite definido de upload_max_filesize, por favor reduza suas imagens',
                                2 => 'O arquivo ultrapassa o limite de tamanho em MAX_FILE_SIZE',
                                3 => 'Upload feito parcialmente, e pode conter erros',
                                4 => 'Upload de arquivo não realizado'
                            );

        if($numArquivo <= 0)
                echo 'Selecione uma imagem';
            else{
                for($i = 0; $i < $numArquivo; $i++){
                    $name = $imagem['name'][$i];
                    $type = $imagem['type'][$i];
                    $size = $imagem['size'][$i];
                    $error = $imagem['error'][$i];
                    $tmp = $imagem['tmp_name'][$i];

                    $extensao = @end(explode('.', $name));
                    $nomeUnico = rand().".$extensao";

                    if($error != 0)
                        $msg[] = "<b>$name :</b> ".$errorMsg[$error];
                    else if(!in_array($type, $tipo))
                        $msg[] = "<b>$name :</b> Erro tipo imagem não permitida!";
                    else if($size > $maxsize)
                        $msg[] = "<b>$name :</b> Tamanho do(s) arquivo(s) maior que o limite 10MB!";
                    else {
                        if(move_uploaded_file($tmp, $pasta."/".$nomeUnico))
                            $msg[] = "<b>$name :</b> Upload realizado com sucesso!";
                        else
                            $msg[] = "<b>$name :</b> Erro! Ocorreu um erro, tente novamente!";
                        }
                }
                    $nomeimagem = implode(',', $nomeUnico);
                    $result_produtos = "INSERT INTO produtos (nome, situacao_produto_id, categorias_id, imagem, valor, texto, created) VALUES ('{$nome}', '{$situacao_produto_id}', '{$categorias_id}', '{$nomeimagem}', '{$valor}', '{$texto}', NOW())";
                    $resultado_produtos = mysqli_query($conn, $result_produtos);                        
 // fecha else
            }
        }
        ?>

To upload the file and write to the MySQL database.

The code uploads 1 several files, and rand () in the name, and sends the folder, the problem is to write to the database.

I would like in my table (image) with columns ID | image | date

In my (column image) when uploading several images they were inserted in the following way 1.jpg, 2.jpg, 3.jpg - in the image column the image name is uploaded in a single column .

I tried to do the

$nomeimagem = implode(',', $nomeUnico);

Before inserting in the database but the implode parameter does not work.

Could someone please help me?

    
asked by anonymous 15.05.2018 / 17:11

1 answer

0

The point is that the function implode() needs a array() and you were passing string , try:

$extensao = @end(explode('.', $name));
$nomes[]=$nomeUnico = rand().".$extensao";

After the for() loop, type:

$nomeimagem = implode(',', $nomes);
  

Function reference implode ()

    
15.05.2018 / 19:34