Ir para conteúdo

Arquivado

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

renan.miranda

Como saber que esta "vindo" uma imagem do Formulário ?

Recommended Posts

Saudações amigos...

Eu estou com uma dúvida...

 

Eu geralmente utilizo a sintaxe:

 

if (!empty($_POST['campo']["name"])) {}

 

Para saber se foi preenchida alguma imagem no campo do formulario, para executar uma determinação ação, só que, eu estou utilizando a sintaxe no formulário name="campo[]", ou seja, passando um array, e percebo que a função if (!empty($_POST['campo']["name"])) {} não funciona, não reconhece...

 

Como eu faço isso agora que se trata de um array? Como eu faço para o PHP saber que o campo name="campo[]" está vazio?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Arquivos são "resgatados" pela variável global $_FILES. Uma sugestão para o seu problema é a seguinte:

if(isset($_FILES['imagem']) && !empty($_FILES['imagem']))
{

}

Obs: 'imagem' é o valor do campo name no formulário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nada feito...

 

Arquivos são "resgatados" pela variável global $_FILES. Uma sugestão para o seu problema é a seguinte:

if(isset($_FILES['imagem']) && !empty($_FILES['imagem']))
{

}

Obs: 'imagem' é o valor do campo name no formulário.

 

Nada feito... isso funciona se o campo estiver normal, ou seja, sem passar array, no caso name="campo", e no meu caso, eu estou usando campo em array, pois estou fazendo mais de um upload sendo name="campo[]", e isso não funciona

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode postar trechos do formulário e do código onde recebe esses dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você está gerando uma array, falta o índice dele... dê um print_r para ver a estrutura, mas o esperado é algo do tipo:

$_FILES['campo']['0']['name']
$_FILES['campo']['1']['name']
$_FILES['campo']['2']['name']
De qualquer jeito, files só existe quando alguma imagem é preenchida, então um isset deveria funcionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você está gerando uma array, falta o índice dele... dê um print_r para ver a estrutura, mas o esperado é algo do tipo:

$_FILES['campo']['0']['name']
$_FILES['campo']['1']['name']
$_FILES['campo']['2']['name']
De qualquer jeito, files só existe quando alguma imagem é preenchida, então um isset deveria funcionar.

 

 

Vamos lá...

Dei print_r no $_FILES['infimagem'] // esse é o name do input

 

## Quando coloco imagem :

Array (

[name] => Array ( [0] => nt.jpg )

[type] => Array ( [0] => image/jpeg )

[tmp_name] => Array ( [0] => D:\Servidor\tmp\phpD72D.tmp )

[error] => Array ( [0] => 0 )

=> Array ( [0] => 298652 ) )

 

## Quando não seleciono imagem:

Array (

[name] => Array ( [0] => )

[type] => Array ( [0] => )

[tmp_name] => Array ( [0] => )

[error] => Array ( [0] => 4 )

=> Array ( [0] => 0 ) )

 

Lembrando... essa condição:

if(isset($_FILES['infimagem']) && !empty($_FILES['infimagem']))

 

Só funciona se o input estiver assim:

<input type="file" multiple="multiple" accept="image/*" class="form-control" id="infimagem" name="infimagem">

 

Mas no caso, eu estou utilizando assim:

<input type="file" multiple="multiple" accept="image/*" class="form-control" id="infimagem" name="infimagem[]">

 

Pois estou trabalhando com multiple="multiple" para fazer upload de várias fotos e salvando no banco...

 

Eu estou na parte de atualização... ou seja... a pessoa pode somente querer atualizar o nome sem enviar foto no campo, e dessa forma, o campo da foto vai ser inserida em branco, por isso que quero colocar essa condição, que se não for selecionada imagem, apenas atualizar o restante das informações...

 

É ESSA A QUESTÃO.

 

No aguardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é por causa do multiple... nunca usei e não sei exatamente como funciona, mas imagino que o próprio navegador vai gerenciar isto, evitando a necessidade do [], de qualquer sorte a estrutura está ficando como:

$_FILES['infimagem']['name']['0']

Logo:

if (!empty($_POST['infimagem']["name"]['0'])) { }

Apenas verifique se realmente está ficando em branco ou se não está sendo enviado algum espaço ou coisa do tipo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é por causa do multiple... nunca usei e não sei exatamente como funciona, mas imagino que o próprio navegador vai gerenciar isto, evitando a necessidade do [], de qualquer sorte a estrutura está ficando como:

$_FILES['infimagem']['name']['0']

Logo:

if (!empty($_POST['infimagem']["name"]['0'])) { }

Apenas verifique se realmente está ficando em branco ou se não está sendo enviado algum espaço ou coisa do tipo.

 

Opa... resolvido dessa forma...

if (!empty($_FILES['infimagem']["name"]['0'])) { }

 

Apenas troquei de POST pra FILES, pois se trara de um arquivo... vai entender pq mais um parâmetro.

Obrigado

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.