Ir para conteúdo

POWERED BY:

Arquivado

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

Walck

Select Complexo

Recommended Posts

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.