jomasaco 0 Denunciar post Postado Novembro 7, 2009 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
Fernando Medrado 1 Denunciar post Postado Novembro 7, 2009 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
Henrique Barcelos 290 Denunciar post Postado Novembro 7, 2009 Não verifique com empty(); Use if($_POST["talcampo"] == "")... Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Novembro 7, 2009 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
André D. Molin 15 Denunciar post Postado Novembro 8, 2009 Quando eu faço esse tipo de verificação, costumo usar strlen() com empty() e dependendo do caso, um isset(). Mas tem que ser feito um planejamento antes de sair usando tudo, se nao vai piorar as coisas. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Novembro 8, 2009 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
jomasaco 0 Denunciar post Postado Novembro 8, 2009 É 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