pest_g 0 Denunciar post Postado Janeiro 23, 2006 Amigos tenho o seguinte problema. Tenho uma página que tem uns 30 checkbox com varias cores para serem escolhidas pelo usuário. Tem algumas cores que são exibidas por padrão caso o usuário não selecione nenhuma. Ex. $corpadrao = array("verde","amarelo","Azul","branco"); E tem as cores que são pegas dos checkbox já como array. $corselect = $_POST["cores"]; O problema é que gostaria que as cores quando constassem tanto em $corselect quanto em $corpadrao, Não pararecessem duplicadas. Acredito que tal tratamento tenha que ser feito na mão, pois ao tentar usar as combinações de arrays padrão do php tais como array_marge e arrey_unique, mas esta dando anomalias nos resultados dependendo a composição das matrizes. Caso algum colega já tenha passado por algo parecido e queira compartilhar a experiência ficaria muito grato. Atenciosamente. Compartilhar este post Link para o post Compartilhar em outros sites
leandro07 0 Denunciar post Postado Janeiro 23, 2006 Coloca uma verificação....se $corpadrao for diferente de $corselect ele faz a ação que você quer senão ele não faz!! Compartilhar este post Link para o post Compartilhar em outros sites
pest_g 0 Denunciar post Postado Janeiro 24, 2006 Coloca uma verificação....se $corpadrao for diferente de $corselect ele faz a ação que você quer senão ele não faz!!Obrigado Leandro.Mas o caso é um pouco mais complicado já que estou trabalhando com array e não com uma variável unica.Poderia até tratar manualmente cada uma das possibilidades mais esta sertamente não é a forma mais adequada de tratar o problema.De qualquer forma mais uma vez obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Epyllion 0 Denunciar post Postado Janeiro 24, 2006 Na verdade a lógica do leandro07 está correta. Olha um exemplo, só adaptar ao seu código. <?php$cor1 = array("verde","preto","amarelo","laranja"); /* $cor1, troque pelo array dos seus checkbox, assim $cor1 = $_POST["cores"]; */$cor2 = array("verde","azul","preto","rosa");/* $cor2, seu array padrão, $corpadrao = array("verde","amarelo","Azul","branco"); */foreach ($cor1 as $chave => $valor) { /* O foreach já cria as chaves e os valores automaticamente */ if(in_array($valor, $cor2)) { /* Testa se já existe no arry */ echo "Esse está repetido : ".$valor."<br>\n"; /* Se existir .... */ } else { echo "Esse não está repetido : ".$valor."<br>\n"; /* Caso não esteja repetido .... */ } }?> Testa primeiro do jeito que está pra entender como funciona, depois vá adaptando conforme está comentado. Qualquer dúvida poste. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
leandro07 0 Denunciar post Postado Janeiro 24, 2006 Pois é , mas nao tem problema se você esta trabalhando com array.Como ta dentro de um loop , ele vai verifica todas as possibilidades. Não é necessário escrever todas elas.Qualquer dúvida é só postar..Abraços Compartilhar este post Link para o post Compartilhar em outros sites
pest_g 0 Denunciar post Postado Janeiro 26, 2006 [quote name='Epyllion' date='Jan 24 2006, 11:30 AM' post='503622']Na verdade a lógica do leandro07 está correta.Olha um exemplo, só adaptar ao seu código.[code]<?php$cor1 = array("verde","preto","amarelo","laranja"); /* $cor1, troque pelo array dos seus checkbox, assim $cor1 = $_POST["cores"]; */$cor2 = array("verde","azul","preto","rosa");/* $cor2, seu array padrão, $corpadrao = array("verde","amarelo","Azul","branco"); */foreach ($cor1 as $chave => $valor) { /* O foreach já cria as chaves e os valores automaticamente */ if(in_array($valor, $cor2)) { /* Testa se já existe no arry */ echo "Esse está repetido : ".$valor."<br>\n"; /* Se existir .... */ } else { echo "Esse não está repetido : ".$valor."<br>\n"; /* Caso não esteja repetido .... */ } }?>Testa primeiro do jeito que está pra entender como funciona, depois vá adaptando conforme está comentado.Qualquer dúvida poste. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gifObrigado pela ajuda mas fui ralando e cheguei a seguinte resolução do problema:$vardominio =$_POST["dominio"]; /*Pega o nome do domínio da página index.php.*/[/color]$varextensao =$_POST["extensao"]; /* Pega as extenções selecionadas da página [/color] index.php.*/ $varextpadroes = array(".com",".com.br",".net",".org",".tv",".info"); /*array com extenções padrão a serem exibidas caso o cliente escolha outros nomes de domínio.*/[/color]$varextpadroes2 = array(".com",".net",".org",".tv",".info");$vartotal = array_merge($varextensao,$varextpadroes); /*array especifico do php que une N Matrizes.*/[/color]$result = array_unique($vartotal); /*arrey especifico do php que eleimina duplicidades nos arrays.*/echo "oque esta vindo de vardominio".$vardominio."<br>";/*Verifica se alguma das estenções que excluem .com.br foi identificada. */for ($j = 0; $j<count($varextensao);$j++){ if ($varextensao[$j] == ".org.br" || $varextensao[$j] == ".ind.br" || $varextensao[$j] == ".srv.br"){ $vartotal = array_merge($varextensao,$varextpadroes2); $result = array_unique($vartotal); } if ($varextensao[$j] == ".nom.br"){ $result = array(".nom.br"); } } /*Laço para excluir indices nulos na Matriz. */ for($i = 0; $i<count($result); $i++){ if ($i-$j = 5){ array_splice($result,6,1); } } ?>Peço para galera mais experiênte verificar se esta é a forma mais elegante de resolver o problema ou se existe uma outra.Pois estou com dois problemas:1) Conseguir entregar o projeto no prazo.2) Será analizado minha lógica e a legibilidade dos meus scripts.Se puderm dar uma nota para o script de 5 a 10 digo de 5 acima pois o mesmo funciona então é no mínimo 5 acredito que não esteja 10 mas derrepente quem sabe. :D Sem mais e muito obrigado amigos. Compartilhar este post Link para o post Compartilhar em outros sites
leandro07 0 Denunciar post Postado Janeiro 26, 2006 Uma coisa que ajudaria seria você usar o extract(); ajuda a limpar seu código.... no começo você da um extract em $_POST ex: extract($_POST);não teria mais $vardominio = $_POST['dominio']o valor do dominio vindo de post seria $dominioo de extensão seria $extensao e por ai vai. Se tiver duvida , posta ai... Ah, não vo vota pq não sou experiente o suficiente pra julgar o código de alguém....mas de qualquer forma eu achei bom Bem simples de entender!! Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
pest_g 0 Denunciar post Postado Janeiro 26, 2006 Uma coisa que ajudaria seria você usar o extract();ajuda a limpar seu código....no começo você da um extract em $_POSTex: extract($_POST);não teria mais $vardominio = $_POST['dominio']o valor do dominio vindo de post seria $dominioo de extensão seria $extensao e por ai vai.Se tiver duvida , posta ai...Ah, não vo vota pq não sou experiente o suficiente pra julgar o código de alguém....mas de qualquer forma eu achei bomBem simples de entender!!Abraços.Obrigado vou implementar.Aproveitando a oportunidade estou enfrentando um outro problema.Gostaria de passar o valor de um Array por meio de um hidden.Você sabe me informar qual é a sintaxe para tanto ? Até mais e mais uma vez Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
leandro07 0 Denunciar post Postado Janeiro 26, 2006 Não entendi qual é o seu propósito....Se você montar um array e depois usá-lo em outra página seria interessante você joga os valores numa $_SESSION. Compartilhar este post Link para o post Compartilhar em outros sites
pest_g 0 Denunciar post Postado Janeiro 27, 2006 Não entendi qual é o seu propósito....Se você montar um array e depois usá-lo em outra página seria interessante você joga os valores numa $_SESSION.Cara eu até concórdo com você.Mas tem um ditado que diz manda quem pode obedece quem tem juizo.Trabalando com array eu economizo muito em linhas de comando e se for possivel passar isso por hidden que foi o solicitado vou ganhar um bom tempo.Caso não seja possivel vou ter que pensar em um outro jeito.Mas de qualquer forma muito obrigado pela indicação. Compartilhar este post Link para o post Compartilhar em outros sites
fabfernandes 0 Denunciar post Postado Janeiro 27, 2006 Senhores... eis o que vcs querem: :D http://www.japs.etc.br/2005/09/postar-array-no-php Compartilhar este post Link para o post Compartilhar em outros sites
alberto.leal 0 Denunciar post Postado Janeiro 27, 2006 Boa leitura.. http://www.php.net/array_diff http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites