Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, tenho um query simples como no exemplo abaixo
SELECT * FROM cadastro WHERE id_estado = '$estado'
Gostaria de saber como faço para ignorar a busca pelo estado caso não tenha sido escolhido no filtro e somente filtrar se for preenchido.
Agradeço desde já pela ajuda!!!
>
não ficou claro, mas, se entendi bem basta colocar esse select dentro de um if que teste se $estado é vazio (pode usar a função empty())
Olá Beraldo, usando if sei fazer traquilo mas o problema é que no filtro tem as variaveis estado, cidade, sexo, idade. Gostaria de saber se não existe mesmo uma solução própria para usar na query, tentei usar if dentro mas dá erro.
Eu faria uma SQL assim:
Select campos From tabela Where 1 = 1 AND cidade = 'cidade_digitada' AND estado = 'estado_digitado';
colocando o "1=1" evita ter que fazer vários IF's para ver se precisa adicionar o Where. Assim, basta fazer o if para ver se a variável é vazia. Se não for, apenas concatena a string da SQL
Construa sua query condicionalmente. UMA das possibilidades seria:
$where = array();
if( isset( $_POST['estado'] ) && ! empty( $_POST['estado'] ) ) {
$where[] = sprintf( "id_estado = '%d'", $_POST['estado'] );
}
$query = 'SELECT * FROM cadastro';
if( count( $where ) > 0 ) {
$query .= ' WHERE ' . implode( ' AND ', $where );
}
Este modelo permite, que múltiplos condicionais sejam separados pela cláusula AND. Mas nada impede você de trocar por OR ou ainda criar uma variável $where para o AND's e outra, $orWhere para os OR's.
não ficou claro, mas, se entendi bem basta colocar esse select dentro de um if que teste se $estado é vazio (pode usar a função empty())