Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Os trechos em que a variavel $tipoEvento não é vazia são ignorados no código abaixo. Podem me ajudar a corrigir?
$inicio_periodo = $_POST['inicio_periodo'];
$fim_periodo = $_POST['fim_periodo'];
$ondeConheceu = $_POST['ondeConheceu'];
$local = $_POST['local'];
$tipoEvento = $_POST['tipoEvento'];
if (!empty($_POST['ondeConheceu']) && empty($_POST['local']) && empty($_POST['tipoEvento'])) {
$sqlStr = "SELECT * FROM prospeccao WHERE ondeConheceu = '".$ondeConheceu."' AND data_cadastro BETWEEN '".$inicio_periodo."' AND '".$fim_periodo."' ORDER BY nome ASC";
$sqlStrAux = "SELECT count(*) as total FROM prospeccao WHERE ondeConheceu = '".$ondeConheceu."' AND data_cadastro BETWEEN '".$inicio_periodo."' AND '".$fim_periodo."'";
}
elseif(!empty($_POST['ondeConheceu']) && !empty($_POST['local']) && empty($_POST['tipoEvento'])) {
$sqlStr = "SELECT * FROM prospeccao WHERE ondeConheceu = '".$ondeConheceu."' AND local = '".$local."' AND data_cadastro BETWEEN '".$inicio_periodo."' AND '".$fim_periodo."' ORDER BY nome ASC";
$sqlStrAux = "SELECT count(*) as total FROM prospeccao WHERE ondeConheceu = '".$ondeConheceu."' AND local = '".$local."' AND data_cadastro BETWEEN '".$inicio_periodo."' AND '".$fim_periodo."'";
}
/**/elseif(!empty($_POST['ondeConheceu']) && empty($_POST['local']) && !empty($_POST['tipoEvento'])) {
$sqlStr = "SELECT * FROM prospeccao WHERE ondeConheceu = '".$ondeConheceu."' AND tipoEvento = '".$tipoEvento."' AND data_cadastro BETWEEN '".$inicio_periodo."' AND '".$fim_periodo."' ORDER BY nome ASC";
$sqlStrAux = "SELECT count(*) as total FROM prospeccao WHERE ondeConheceu = '".$ondeConheceu."' AND tipoEvento = '".$tipoEvento."' AND data_cadastro BETWEEN '".$inicio_periodo."' AND '".$fim_periodo."'";
}
elseif(empty($_POST['ondeConheceu']) && !empty($_POST['local']) && empty($_POST['tipoEvento'])) {
$sqlStr = "SELECT * FROM prospeccao WHERE local = '".$local."' AND data_cadastro BETWEEN '".$inicio_periodo."' AND '".$fim_periodo."' ORDER BY nome ASC";
$sqlStrAux = "SELECT count(*) as total FROM prospeccao WHERE local = '".$local."' AND data_cadastro BETWEEN '".$inicio_periodo."' AND '".$fim_periodo."'";
}
/**/elseif(empty($_POST['ondeConheceu']) && !empty($_POST['local']) && !empty($_POST['tipoEvento'])) {
$sqlStr = "SELECT * FROM prospeccao WHERE local = '".$local."' AND tipoEvento = '".$tipoEvento."' AND data_cadastro BETWEEN '".$inicio_periodo."' AND '".$fim_periodo."' ORDER BY nome ASC";
$sqlStrAux = "SELECT count(*) as total FROM prospeccao WHERE local = '".$local."' AND tipoEvento = '".$tipoEvento."' AND data_cadastro BETWEEN '".$inicio_periodo."' AND '".$fim_periodo."'";
}
/**/elseif(empty($_POST['ondeConheceu']) && empty($_POST['local']) && !empty($_POST['tipoEvento'])) {
$sqlStr = "SELECT * FROM prospeccao WHERE tipoEvento = '".$tipoEvento."' AND data_cadastro BETWEEN '".$inicio_periodo."' AND '".$fim_periodo."' ORDER BY nome ASC";
$sqlStrAux = "SELECT count(*) as total FROM prospeccao WHERE tipoEvento = '".$tipoEvento."' AND data_cadastro BETWEEN '".$inicio_periodo."' AND '".$fim_periodo."'";
}
else {
$sqlStr = "SELECT * FROM prospeccao ORDER BY nome ASC";
$sqlStrAux = "SELECT count(*) as total FROM prospeccao";
}Existem vários trechos da query que são idênticos, e se mantém em todas as situações..
já pensou em tentar agrupar ?
oque voce precisa fazer de selecT?
eu faço de outra maneira. eu monto o WHERE e faço 1 query somente..
ou seja você esta fazendo assim: se local for diferente de vazio você faz o select procurando local , e assim por diante.. me diz uma coisa e se for 100 campos?
o mais correto e até mesmo te pouparia tempo, seria você montar o WHERE em uma variavel. e depois fazer assim SELECT (*) FROM TABELA WHERE $where;
ai fica barbada. digamos assim 3 campos: local, ondeconheceu, tipoevento.
if(!empty($_POST[local]))
if(!empty($where))
$where = $where and local = '".$_POST['local']."'";
else
$where = local = '".$_POST['local']."'";
if(!empty($_POST[londeconheceu]))$where = ondeconheceu = '".$_POST['ondeconheceu']."'";
if(!empty($_POST[tipoevento]))$where = tipoevento = '".$_POST['tipoevento']."'";
SELECT (*) FROM TABELA WHERE $where and data_cadastro BETWEEN '".$inicio_periodo."' AND '".$fim_periodo."'";
entendeu? tipo isso. se nao for isso ignora, mas se for e der algum erro posta ai o erro.
Valeu pela ajuda, montano. Segui sua linha de raciocinio e consegui resolver.
cara, você copio isso e jogo ai? hehehe
faz assim, me diz oq você precisa que eu te ajudo. ;)