Ir para conteúdo

Arquivado

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

jomasaco

[Resolvido] Contar $_POST[] apenas os campos preenchidos

Recommended Posts

Boas pessoal.

 

Em um formulário existem 20 campos URL que forma uma array.

Pretendia criar uma restrição minimo para enviar.

O problema é que o valor de count retorna sempre 20 ou 1 não importa o numero de campos preenchidos.

 

Já exprimentei com várias conbinações mas não chego lá

for($i=0;$i<=count($urls)-1;$i++)
count(!empty($urls))
count(array_key($urls))
....

Era algo assim que pretendia

$urls = $_POST['url'];
$minimo = 4;
if(count($urls) <= $minimo) {
echo = 'Desculpe tem de enviar um minimo de 4 urls'} 

 

Uma ajudinha ai pessoal http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

E aew jomasaco,

 

Amigo tenta o seguinte, não sei se tem uma função que deixe mais simples, porem dá uma olhada nesses códigos.

 

Primeiro crie os campos da seguinte forma

 

<input type="text" name="url[2]" />
<input type="text" name="url[3]" />
               .
               .
               .
<input type="text" name="url[20]" />
Quando enviar você terá um array chamdado $POST['url'], qlq coisa usa o var_dump($POST['url']) só pra ver como foi criado o array.

 

Depois disso tenta um desses metodos:

 

$minimo = 4;
$count = 0;
foreach ($_POST['url'] as $valor) {
    if(!empty($valor)) $count++;//se o valor não for nulo incrementa
}
if($count < $minimo)
    echo 'Desculpe tem de enviar um minimo de ' . $minimo . ' urls';
ou

 

$minimo = 4;
$_POST['url'] = array_unique($_POST['url']);//remove os valores duplicados do array
if((count($_POST['url']) - 1) < $minimo)
    echo 'Desculpe tem de enviar um minimo de ' . $minimo . ' urls';
Na segunda solução na linha //remove os valores duplicados do array a ideia é remover os elementos nulos do array, porém restará um elemento nulo, pois a função array_unique unifica os elementos duplicados. pois isso o -1 aqui (count($_POST['url']) - 1).

 

Espero que ajude, qlq duvida posta aí. Fle

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não verifique com empty();

 

Use

if($_POST["talcampo"] == "")...

Rick, sou obrigado a discordar de você. Utilize empty sim. É a forma correta.

 

http://br.php.net/empty

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, estava acompanhando este tópico e pensando em uma forma mais "elegante" de fazer isto, mas não encontrei. Assim funciona, mas eu tenho plena certeza de que não é a melhor forma.

 

foreach ($_POST as $chave => $valor)
{
	if(empty($valor))
	{
		unset($_POST[$chave]);
	}
}

Depois de sair do foreach, a $_POST só vai ter os preenchidos.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

É isso ai.

está funcionando bem agora.

 

Muito obrigado.

Optei por a solução do Matias Rezende para limpar todas em branco com a parte de código de Fernando Medrado.

if((count($_POST['url']) - 1) < $minimo)
    echo 'Desculpe tem de enviar um minimo de ' . $minimo . ' urls';

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

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.