Ir para conteúdo

Arquivado

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

Vanderlan

Consulta banco com PHP e DropDown.

Recommended Posts

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

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

 

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

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

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

×

Informação importante

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