Walck 0 Denunciar post Postado Maio 3, 2009 Bom dia Amigos do Forum PHP, Cá estou eu enrolado de novo.... SEguinte estou fazendo um select com condições mais ou menos assim , se recebo do form $regiao_id == "0" peço para ele fazer o select usando a variável $grupo_id se recebo a grupo_id == "0" peço para ele fazer o select com a variável $regiao_id se recebo a variável $regiao_id == "qualquer valor " e a variável $regiao_id== "qualquer valor " eu mando ele fazer um select AND e se recebo a variável $grupo_id == "9" e a variável $regiao_id =="6" eu faço select completo select * O problema é que só consigo fazer ele funcionar se for o SELECT AND ou o SELECT * Não consigo fazer apenas de uma váriavel... O problema deve ser os IF e a lógica confusa segue meu código abaixo , ele não dá erro só que ele diz que não encontrou ninquem no critério escolhido //seleciona os remetentes if ($grupo_id == "0") { $sql = mysql_query("select * from teste where regiao_id ='$regiao_id' "); } if ($regiao_id == "0") { $sql = mysql_query("select * from teste where grupo_id ='$grupo_id' "); } if ($grupo_id == "9" and $regiao_id =="6") { $sql = mysql_query("select * from teste"); } $sql = mysql_query("select * from teste where regiao_id='$regiao_id' and grupo_id='$grupo_id'"); while ($dados = mysql_fetch_array($sql)) { $to = $dados['email']; ....(outras linhas) if ($to == ""); echo "<h3>Nenhum cliente encontrado com este(s) critérios</h3>"; Alguem consegue me dar um força valew rapaziada , abraços!! Compartilhar este post Link para o post Compartilhar em outros sites
fetish 3 Denunciar post Postado Maio 3, 2009 Bom não sei se é isso que eu entendi: if (($grupo_id == "9") && ($regiao_id =="6")) { $sql = mysql_query("select * from teste"); } Tenta isso, se não for explica melhor. Compartilhar este post Link para o post Compartilhar em outros sites
Walck 0 Denunciar post Postado Maio 3, 2009 Fetish valew pela resposta inclusive pela resposta muita rapida, Mas na realidade você só fez o primeiro if e como falei acima este esta funcionando, o que tenho problema é quando umas das variáves vem com == 0 acaba não fazendo o select. Dá uma olhadinha no code??? obrigado Compartilhar este post Link para o post Compartilhar em outros sites
fetish 3 Denunciar post Postado Maio 3, 2009 Tenta tirar as "strings" do numero 0 Compartilhar este post Link para o post Compartilhar em outros sites
Walck 0 Denunciar post Postado Maio 3, 2009 Não resolveu mesmo as várias vindo com a confição verdadeira os IF ignoram a situação, não então pq estes IF não funcionam comigo... alguem tem alguma ideia? rs Compartilhar este post Link para o post Compartilhar em outros sites
fetish 3 Denunciar post Postado Maio 3, 2009 Ah saquei, tenta fazer isso: <?php $sql = mysql_query ("SELECT * FROM `teste` WHERE `regiao_id` = '$regiao_id' AND `grupo_id` = '$grupo_id'"); $assoc = mysql_fetch_assoc ($sql); if ($assoc['grupo_id'] == 0) { $sql = mysql_query("select * from teste where regiao_id ='$regiao_id' "); } if ($assoc['regiao_id'] == 0) { $sql = mysql_query("select * from teste where grupo_id ='$grupo_id' "); } ?> Bom a gente precisa usar mysql_fetch_assoc, para consultar os valores da tabela, simplesmente não podemos compara-las assim. Eu acho que isso resolve :D Compartilhar este post Link para o post Compartilhar em outros sites
Walck 0 Denunciar post Postado Maio 3, 2009 O problema é que os valores $regiao_id e $grupo_id ven através de post ou seja de acordo com o cara escolheu no formulário... Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Maio 3, 2009 as três primeiras condicionais serão anuladas, independentemente do resultado, pois existe uma atribuição à variavel $sql sem nenhuma condicional logo antes de excutar a query $sql = mysql_query("select * from teste where regiao_id='$regiao_id' and grupo_id='$grupo_id'"); qual o motivo da existência dessa linha, nesse local e sem nenhuma condicional ? Compartilhar este post Link para o post Compartilhar em outros sites
Walck 0 Denunciar post Postado Maio 3, 2009 ah saquei, então funcionou, só que acabou criando outro problema caso a seleção vinda pelo formulário não encontre nenuhm critério como falar para ele que não continuar??? //seleciona os remetentes if ($grupo_id == 0) { $sql = mysql_query("select * from teste where regiao_id ='$regiao_id' "); } else { if ($regiao_id == 0) { $sql = mysql_query("select * from teste where grupo_id ='$grupo_id' "); } else { if ($grupo_id == "9" and $regiao_id =="6") { $sql = mysql_query("select * from teste"); } else { $sql = mysql_query("select * from teste where regiao_id='$regiao_id' and grupo_id='$grupo_id'"); } }} while ($dados = mysql_fetch_array($sql)) { $to = $dados['email']; if($to==""){ // AQUI ESTA O PROBLEMA, COMO FAZER??? "<h3>Nenhum cliente encontrado com este(s) critérios</h3>"; exit; }Valeu!!! Compartilhar este post Link para o post Compartilhar em outros sites
fetish 3 Denunciar post Postado Maio 3, 2009 Já que ele ta dentro de um while, usa break; Compartilhar este post Link para o post Compartilhar em outros sites
Walck 0 Denunciar post Postado Maio 3, 2009 o problema é que ele não esta reconhecendo a variavel como vazia . Compartilhar este post Link para o post Compartilhar em outros sites
fetish 3 Denunciar post Postado Maio 3, 2009 Claro você atribuiu o valor do $dados['email']; no $to. Deixa assim: $to = ''; if ($to == '') break; Compartilhar este post Link para o post Compartilhar em outros sites
Walck 0 Denunciar post Postado Maio 3, 2009 Claro você atribuiu o valor do $dados['email']; no $to. Deixa assim: $to = ''; if ($to == '') break; Hhehehe você não entendeu minha lógica não sei se ela esta certa , a ideia é a seguinte quando todos os if forem declarados como falso e irá fazer while que deveria retornar '' pq não foi feito nenhum select em $sql por isso que coloquei $to = $dados['email'] ; como não foi feito nenhum ele não vai recuperar dados algum aqui $dados['email'] ;... Compartilhar este post Link para o post Compartilhar em outros sites
fetish 3 Denunciar post Postado Maio 3, 2009 Uhm, então tenta usar unset, para retirar o valor e faz um if. @Edit Você fala muito enrolado xD Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Maio 3, 2009 Tenta fazer assim while ($dados = mysql_fetch_array($sql)) { if(empty($dados)){ // "<h3>Nenhum cliente encontrado com este(s) critérios</h3>"; exit; } Espero ter ajudado Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Walck 0 Denunciar post Postado Maio 3, 2009 Valew Carlão , só que não funcionou... :no:rs Compartilhar este post Link para o post Compartilhar em outros sites
fetish 3 Denunciar post Postado Maio 3, 2009 Faz do jeito que te disse: $to = $dados['email']; unset ($to); if ($to == '') { echo "<h3>Nenhum cliente encontrado com este(s) critérios</h3>"; exit; } Compartilhar este post Link para o post Compartilhar em outros sites
Walck 0 Denunciar post Postado Maio 3, 2009 Faz do jeito que te disse: $to = $dados['email']; unset ($to); if ($to == '') { echo "<h3>Nenhum cliente encontrado com este(s) critérios</h3>"; exit; } O problema eu fizer unset $to vai "limpar" a variável msm nos casos quando o resultado for true Compartilhar este post Link para o post Compartilhar em outros sites
fetish 3 Denunciar post Postado Maio 4, 2009 Olha, isso ta chato xD, como eu não tenho seu banco de dados para testar, então vou ter que ficar postando sem testar. $to = $dados['email'] ? '' : ''; if ($to == '') { echo "<h3>Nenhum cliente encontrado com este(s) critérios</h3>"; exit; } Compartilhar este post Link para o post Compartilhar em outros sites
Walck 0 Denunciar post Postado Maio 4, 2009 Não consigo entender o pq , não deu certo de novo :( Compartilhar este post Link para o post Compartilhar em outros sites