How do I know if $ _FILES is empty? [duplicate]

0

Hello, I tested some solutions from Stackoverflow itself but I did not succeed, it "skips" the IF and goes straight to Else, even the field containing some information.

$tipo_servico = $_POST['tiposervico'];
$nome = $_POST['nome'];
$descricao = $_POST['descricao'];
$img = $_FILES['imagem'];

include "conexao.php";

if ($_FILES['imagem']['size'] > 0){  
    /*Separar o nome da imagem */
    $titulo_img = $img['name'];

    /*Separando o caminho da imagem temporariamente*/
    $tmp = $img['tmp_name'];

    /*Separar extensão */
    $formato = pathinfo($titulo_img, PATHINFO_EXTENSION);

    /*Renomeando a imagem*/
    $novo_nome = uniqid().".".$formato;

    if(($formato == "jpg" || $formato == "png")){

        $sql = "UPDATE servico_tb SET
        tipo_servico = '$tipo_servico'
        nome  = '$nome',
        descricao = '$descricao'            
        nome_foto = '$novo_nome'
        WHERE 
        id = '$id'
        ";      

        $editar_servico = $conexao -> prepare($sql);
        $editar_servico -> execute();
        echo"<script>alert('DASDFSDFGFG!');</script>";
    }else{
        //echo"<script>alert('Apenas arquivos JPG e PNG!');</script>";
        //echo("<script>location.href='admin.php';</script>");
    }
}else{
    echo "Erro";
}

Also some snippets of HTML code

<form style="max-width: 330px; padding: 15px; margin: 0 auto;" action="" method="POST" enctype="multipart/form-data">

            <label><strong>Foto atual do serviço</strong></label>
            <img src="imgservicos/<?php echo $conexao['nome_foto'];?>" width="250px" height="250px">
            <!-- --><br>
            <!-- --><br>
            <label><strong>*Nova foto do serviço</strong></label>
            <h5><strong>OBS:. Não é necessário atualizar a foto.</strong></h5>
            <input type="file" name="imagem" class="form-control"> 
            *Somente arquivos JPG e PNG. <br>
            <input class="btn btn-lg btn-primary btn-block"  type="submit" name="enviar" value="Editar informações">
        </form>
    
asked by anonymous 05.12.2017 / 00:36

2 answers

1

Use the isset function of PHP, it checks whether the variable has been set, returning true or false

isset($_FILES);

Ref: link

    
05.12.2017 / 13:48
0

An alternative is to use the empty() function:

if (empty($_FILES['imagem']['size']) != false){  
    /*Separar o nome da imagem */
    $titulo_img = $img['name'];

    /*Separando o caminho da imagem temporariamente*/
    $tmp = $img['tmp_name'];

Returns FALSE if var exists and is not empty and does not contain a zeroed value. Otherwise it will return TRUE .

    
05.12.2017 / 16:29