Vanderlan 2 Denunciar post Postado Setembro 7, 2015 Olá pessoal, Sou novato em programação e estou desenvolvendo um pequeno sistema de relatorios, mas estou com problemas com relação a consulta com dropdowns. Eu quero inserir os parametros das buscas atraves dos dropdowns, no entanto eu quero permitir que o usuario deixe algum campo em branco e ainda assim a busca seja feita levando em consideração todo o cenário. EX: ele pode escolher o estágio e não escolher o fiscal e seria listado todas as situações com aquele estagio ou vice versa. Tentei usar o operador OR, mas não está funcionando ele pega informações que não foram as setadas. Se eu colocar o AND funciona perfeitamente mas tenho que preencher todos os campos. Serão 4 dropdowns. Por favor me ajudem. <form name="form1" method="post" action=""> <span>ESTAGIO</span> <select name="status"> <option></option> <option>EXECUÇÃO</option> <option>ENERGIZADA</option> <option>ENCERRADA</option> </select> <span>FISCAL</span> <select name="fiscal"> <option></option> <option>PEDRO</option> <option>ROBERTO</option> <option>VALDENIR</option> <option>LEONARDO</option> <option>ELIAS</option> <option>RENATO</option> </select> <span>MUNICIPIO</span> <select name="municipio"> <option></option> <option>CAMAÇARI</option> <option>DIAS D AVILA</option> <option>SÃO SEBASTIÃO DO PASSÉ</option> <option>MADRE DE DEUS</option> <option>MATA DE SÃO JOÃO</option> </select> <span>EPS</span> <select name="eps"> <option></option> <option>JFSTEEL</option> <option>MOREL</option> <option>CONECTA</option> </select> <input name="send" type = "submit" value = "Buscar"/> </form> $fstatus = $_POST["status"]; // RESGATA O VALOR DO CAMPO SELECT $ffiscal = $_POST["fiscal"]; $fmunicipio = $_POST["municipio"]; $feps = $_POST["eps"]; if ($fstatus != "") { $sql = "SELECT * FROM controle WHERE status='$fstatus' and fiscal='$ffiscal' "; $resultado = mysql_query($sql) or die("Não foi possível realizar a consulta ao banco de dados"); } else { $sql = "SELECT * FROM controle "; $resultado = mysql_query($sql) or die("Não foi possível realizar a consulta ao banco de dados"); } Compartilhar este post Link para o post Compartilhar em outros sites
Electronic 124 Denunciar post Postado Setembro 7, 2015 Fazer a busca independe do que foi selecionado ou nao? mais ou menos isso <?php if ($_SERVER['REQUEST_METHOD'] === "POST") { $sql = "SELECT * FROM controle "; $condicoes = array(); if ($_POST["status"] != '') { $fstatus = $_POST["status"]; $condicoes[] = "status='$fstatus'"; } if ($_POST["fiscal"] != '') { $ffiscal = $_POST["fiscal"]; $condicoes[] = "fiscal='$ffiscal'"; } if ($_POST["municipio"] != '') { $fmunicipio = $_POST["municipio"]; $condicoes[] = "municipio='$fmunicipio'"; } if ($_POST["eps"] != '') { $feps = $_POST["eps"]; $condicoes[] = "eps='$feps'"; } $where = implode(' or ', $condicoes); $sql .= count($condicoes) > 0 ? "where " : ''; $sql .= $where; echo $sql; } Compartilhar este post Link para o post Compartilhar em outros sites
Vanderlan 2 Denunciar post Postado Setembro 7, 2015 Fazer a busca independe do que foi selecionado ou nao? mais ou menos isso <?php if ($_SERVER['REQUEST_METHOD'] === "POST") { $sql = "SELECT * FROM controle "; $condicoes = array(); if ($_POST["status"] != '') { $fstatus = $_POST["status"]; $condicoes[] = "status='$fstatus'"; } if ($_POST["fiscal"] != '') { $ffiscal = $_POST["fiscal"]; $condicoes[] = "fiscal='$ffiscal'"; } if ($_POST["municipio"] != '') { $fmunicipio = $_POST["municipio"]; $condicoes[] = "municipio='$fmunicipio'"; } if ($_POST["eps"] != '') { $feps = $_POST["eps"]; $condicoes[] = "eps='$feps'"; } $where = implode(' or ', $condicoes); $sql .= count($condicoes) > 0 ? "where " : ''; $sql .= $where; echo $sql; } Eletronic, Eu fiz a seguinte adaptação a baixo, funciona se eu apenas preencher um campo por vez. Mas se eu preencher dois ou mais da erro. E esse que é o lance eu quero preencher apenas dois campos e a pesquisa continuar com apenas os dois campos. if ($_SERVER['REQUEST_METHOD'] === "POST") { $sql = "SELECT * FROM controle "; $condicoes = array(); if ($_POST["status"] != '') { $fstatus = $_POST["status"]; $condicoes[] = "status='$fstatus'"; } if ($_POST["fiscal"] != '') { $ffiscal = $_POST["fiscal"]; $condicoes[] = "fiscal='$ffiscal'"; } if ($_POST["municipio"] != '') { $fmunicipio = $_POST["municipio"]; $condicoes[] = "municipio='$fmunicipio'"; } if ($_POST["eps"] != '') { $feps = $_POST["eps"]; $condicoes[] = "eps='$feps'"; } $where = implode('or', $condicoes); $sql .= count($condicoes) > 0 ? "where " : ''; $sql .= $where; $resultado = mysql_query($sql) or die("Não foi possível realizar a consulta ao banco de dados"); } Compartilhar este post Link para o post Compartilhar em outros sites
Electronic 124 Denunciar post Postado Setembro 8, 2015 vc tirou o espaço em volta do OR $where = implode('or', $condicoes); ai vai ficar tudo junto mesmo status='ENERGIZADA'orfiscal='ROBERTO'or era so vc ter usado echo $sql pra ver o que tava sendo gerado veja o meu exemplo acima Compartilhar este post Link para o post Compartilhar em outros sites
Vanderlan 2 Denunciar post Postado Setembro 8, 2015 você tirou o espaço em volta do OR $where = implode('or', $condicoes); ai vai ficar tudo junto mesmo status='ENERGIZADA'orfiscal='ROBERTO'or era so você ter usado echo $sql pra ver o que tava sendo gerado veja o meu exemplo acima Eletronic, Funcionou perfeitamente após eu colocar o AND, segue abaixo para que possa ajudar outras pessoas. if ($_SERVER['REQUEST_METHOD'] === "POST") { $sql = "SELECT * FROM controle "; $condicoes = array(); if ($_POST["status"] != '') { $fstatus = $_POST["status"]; $condicoes[] = "status='$fstatus'"; } if ($_POST["fiscal"] != '') { $ffiscal = $_POST["fiscal"]; $condicoes[] = "fiscal='$ffiscal'"; } if ($_POST["municipio"] != '') { $fmunicipio = $_POST["municipio"]; $condicoes[] = "municipio='$fmunicipio'"; } if ($_POST["eps"] != '') { $feps = $_POST["eps"]; $condicoes[] = "eps='$feps'"; } $where = implode(' and ', $condicoes); $sql .= count($condicoes) > 0 ? "WHERE " : ''; $sql .= $where; $resultado = mysql_query($sql) or die("Não foi possível realizar a consulta ao banco de dados"); echo $sql; } Estou tentando efetuar a soma dos valores achados, mas não estou tendo exito. Dá um valor infinitamente menor. $pesquisaproj = mysql_query($resultado); $sum = mysql_fetch_array($resultado); $somaproj = $sum['custoproj']; $somaproj1 = number_format($somaproj,2,",","."); echo "<h4>Custo Proj.:<span style='color: red';>R$ $somaproj1</h4>"; Compartilhar este post Link para o post Compartilhar em outros sites
Electronic 124 Denunciar post Postado Setembro 8, 2015 A consulta retorna várias linhas? se sim no loop vc soma os valores Compartilhar este post Link para o post Compartilhar em outros sites