Ir para conteúdo
Fórum Script Brasil
  • 0

Filtro de Busca com SELECT com erro


Tyago Silveira

Pergunta

Estou com um problema no filtro de buscas que fiz com select. O que acontece é que ele retorna as opções tranquilamente, mas somente uma Ou outra. Tenho o filtro por Cidades e Estados. Se eu seleciono filtrar por Estado OU Cidade ele filtra normalmente. Se eu coloco pra filtrar Por um Estado e uma Cidade que não tem registros ele me retorna o Registro do Estado ao invés de dizer q não possui registros. Ou seja ele só filtra pela cidade se eu deixar o Estado em Branco caso contrario se eu seleciono um Estado e qualquer cidade ele retorna todos registro do estado que eu selecionei, caso a cidade não tenha registro o que deveria retornar que não existem registros com essa busca.

Segue o código..

<?php
    include "conexao.php";
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Plugin Cadastro</title>
</head>

<body>
<table width="600" border="0">
        <td align="center"><h1>Filtrar Clientes</h1></td>
      </tr>
</table>

<form action="" method="post" enctype="multipart/form-data">

    <span>Estado:</span>
    <select name="estado">
        <option value="" selected="selected">Selecione um Estado..</option>
        <?php
            $pega_estados = mysql_query("SELECT DISTINCT estado FROM clientes order by estado ASC");
            if(mysql_num_rows($pega_estados) == 0) {
                echo '<option value="">Não foram encontrados Estados</option>';
            }else{
                while($linha = mysql_fetch_array($pega_estados)){
                    echo '<option value="'.$linha['estado'].'">'.$linha['estado'].'</option>';
                }
            }
                                

        ?>    
        </select>
    <span>Cidade:</span>
    <select name="cidade">
        <option value="" selected="selected">Selecione uma Cidade..</option>
        <?php
            $pega_cidades = mysql_query("SELECT DISTINCT cidade FROM clientes order by cidade ASC");
            if(mysql_num_rows($pega_cidades) == 0) {
                echo '<option value="">Não foram encontrados Cidades</option>';
            }else{
                while($linhaC = mysql_fetch_array($pega_cidades)){
                    echo '<option value="'.$linhaC['cidade'].'">'.$linhaC['cidade'].'</option>';
                }
            }
            
    
        ?>
   </select>
   
    <input type="hidden" name="acao" value="enviar" />
    <input type="submit" value="Buscar"  />
</form>

<hr />

<?php if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){
    $estado    =     $_POST['estado'];
    $cidade =     $_POST['cidade'];
    
if($_POST['estado'] != ''){
$where = "WHERE estado = '".$_POST['estado']."'";
}elseif($_POST['cidade'] != ''){
$where = "WHERE cidade = '".$_POST['cidade']."'";
}

$seleciona_filtro = mysql_query("SELECT * FROM clientes $where ") or die ("Erro: ".mysql_error());
        if(mysql_num_rows($seleciona_filtro) == 0) {
            echo '<h1>Não foram encontados resultados da sua busca</h1>';
            }else{
                while($linhaFiltro = mysql_fetch_array($seleciona_filtro)){
                    echo '<li>'.$linhaFiltro['nome'].'</li>';
            
                }
            }
}
            
        
        
?>
</body>
</html>

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0
Estou com um problema no filtro de buscas que fiz com select. O que acontece é que ele retorna as opções tranquilamente, mas somente uma Ou outra. Tenho o filtro por Cidades e Estados. Se eu seleciono filtrar por Estado OU Cidade ele filtra normalmente. Se eu coloco pra filtrar Por um Estado e uma Cidade que não tem registros ele me retorna o Registro do Estado ao invés de dizer q não possui registros. Ou seja ele só filtra pela cidade se eu deixar o Estado em Branco caso contrario se eu seleciono um Estado e qualquer cidade ele retorna todos registro do estado que eu selecionei, caso a cidade não tenha registro o que deveria retornar que não existem registros com essa busca.

Segue o código..

<?php
    include "conexao.php";
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Plugin Cadastro</title>
</head>

<body>
<table width="600" border="0">
        <td align="center"><h1>Filtrar Clientes</h1></td>
      </tr>
</table>

<form action="" method="post" enctype="multipart/form-data">

    <span>Estado:</span>
    <select name="estado">
        <option value="" selected="selected">Selecione um Estado..</option>
        <?php
            $pega_estados = mysql_query("SELECT DISTINCT estado FROM clientes order by estado ASC");
            if(mysql_num_rows($pega_estados) == 0) {
                echo '<option value="">Não foram encontrados Estados</option>';
            }else{
                while($linha = mysql_fetch_array($pega_estados)){
                    echo '<option value="'.$linha['estado'].'">'.$linha['estado'].'</option>';
                }
            }
                                

        ?>    
        </select>
    <span>Cidade:</span>
    <select name="cidade">
        <option value="" selected="selected">Selecione uma Cidade..</option>
        <?php
            $pega_cidades = mysql_query("SELECT DISTINCT cidade FROM clientes order by cidade ASC");
            if(mysql_num_rows($pega_cidades) == 0) {
                echo '<option value="">Não foram encontrados Cidades</option>';
            }else{
                while($linhaC = mysql_fetch_array($pega_cidades)){
                    echo '<option value="'.$linhaC['cidade'].'">'.$linhaC['cidade'].'</option>';
                }
            }
            
    
        ?>
   </select>
   
    <input type="hidden" name="acao" value="enviar" />
    <input type="submit" value="Buscar"  />
</form>

<hr />

<?php if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){
    $estado    =     $_POST['estado'];
    $cidade =     $_POST['cidade'];
    
if($_POST['estado'] != ''){
$where = "WHERE estado = '".$_POST['estado']."'";
}elseif($_POST['cidade'] != ''){
$where = "WHERE cidade = '".$_POST['cidade']."'";
}

$seleciona_filtro = mysql_query("SELECT * FROM clientes $where ") or die ("Erro: ".mysql_error());
        if(mysql_num_rows($seleciona_filtro) == 0) {
            echo '<h1>Não foram encontados resultados da sua busca</h1>';
            }else{
                while($linhaFiltro = mysql_fetch_array($seleciona_filtro)){
                    echo '<li>'.$linhaFiltro['nome'].'</li>';
            
                }
            }
}
            
        
        
?>
</body>
</html>
O trecho do código abaixo determina que só uma das condições será aceita.
if($_POST['estado'] != ''){
$where = "WHERE estado = '".$_POST['estado']."'";
}elseif($_POST['cidade'] != ''){
$where = "WHERE cidade = '".$_POST['cidade']."'";
}
mude para isso $where='';
if($_POST['estado'] != ''){
$where. = "WHERE estado = '".$_POST['estado']."'";
}

if($_POST['cidade'] != ''){
if(!empty($where)) $where.=' && ';
$where. = "WHERE cidade = '".$_POST['cidade']."'";
}

Editado por rickayron
Link para o comentário
Compartilhar em outros sites

  • 0
Estou com um problema no filtro de buscas que fiz com select. O que acontece é que ele retorna as opções tranquilamente, mas somente uma Ou outra. Tenho o filtro por Cidades e Estados. Se eu seleciono filtrar por Estado OU Cidade ele filtra normalmente. Se eu coloco pra filtrar Por um Estado e uma Cidade que não tem registros ele me retorna o Registro do Estado ao invés de dizer q não possui registros. Ou seja ele só filtra pela cidade se eu deixar o Estado em Branco caso contrario se eu seleciono um Estado e qualquer cidade ele retorna todos registro do estado que eu selecionei, caso a cidade não tenha registro o que deveria retornar que não existem registros com essa busca.

Segue o código..

<?php
    include "conexao.php";
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Plugin Cadastro</title>
</head>

<body>
<table width="600" border="0">
        <td align="center"><h1>Filtrar Clientes</h1></td>
      </tr>
</table>

<form action="" method="post" enctype="multipart/form-data">

    <span>Estado:</span>
    <select name="estado">
        <option value="" selected="selected">Selecione um Estado..</option>
        <?php
            $pega_estados = mysql_query("SELECT DISTINCT estado FROM clientes order by estado ASC");
            if(mysql_num_rows($pega_estados) == 0) {
                echo '<option value="">Não foram encontrados Estados</option>';
            }else{
                while($linha = mysql_fetch_array($pega_estados)){
                    echo '<option value="'.$linha['estado'].'">'.$linha['estado'].'</option>';
                }
            }
                                

        ?>    
        </select>
    <span>Cidade:</span>
    <select name="cidade">
        <option value="" selected="selected">Selecione uma Cidade..</option>
        <?php
            $pega_cidades = mysql_query("SELECT DISTINCT cidade FROM clientes order by cidade ASC");
            if(mysql_num_rows($pega_cidades) == 0) {
                echo '<option value="">Não foram encontrados Cidades</option>';
            }else{
                while($linhaC = mysql_fetch_array($pega_cidades)){
                    echo '<option value="'.$linhaC['cidade'].'">'.$linhaC['cidade'].'</option>';
                }
            }
            
    
        ?>
   </select>
   
    <input type="hidden" name="acao" value="enviar" />
    <input type="submit" value="Buscar"  />
</form>

<hr />

<?php if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){
    $estado    =     $_POST['estado'];
    $cidade =     $_POST['cidade'];
    
if($_POST['estado'] != ''){
$where = "WHERE estado = '".$_POST['estado']."'";
}elseif($_POST['cidade'] != ''){
$where = "WHERE cidade = '".$_POST['cidade']."'";
}

$seleciona_filtro = mysql_query("SELECT * FROM clientes $where ") or die ("Erro: ".mysql_error());
        if(mysql_num_rows($seleciona_filtro) == 0) {
            echo '<h1>Não foram encontados resultados da sua busca</h1>';
            }else{
                while($linhaFiltro = mysql_fetch_array($seleciona_filtro)){
                    echo '<li>'.$linhaFiltro['nome'].'</li>';
            
                }
            }
}
            
        
        
?>
</body>
</html>
O trecho do código abaixo determina que só uma das condições será aceita.
if($_POST['estado'] != ''){
$where = "WHERE estado = '".$_POST['estado']."'";
}elseif($_POST['cidade'] != ''){
$where = "WHERE cidade = '".$_POST['cidade']."'";
}
mude para isso $where='';
if($_POST['estado'] != ''){
$where. = "WHERE estado = '".$_POST['estado']."'";
}

if($_POST['cidade'] != ''){
if(!empty($where)) $where.=' && ';
$where. = "WHERE cidade = '".$_POST['cidade']."'";
}

Deu um erro de syntaxe.. é $where. com ponto mesmo ou tá ae o erro?

Att.

EDIT: Eu tirei os pontos do where e ele inverteu agora se seleciono um estado e uma cidade que não batem os resultados ele mostra os cadastros da CIDADE não mais do estado. Ou seja ainda té estranho

Att.

Editado por Tyago Silveira
Link para o comentário
Compartilhar em outros sites

  • 0

nessa parte :

if($_POST['cidade'] != ''){
if(!empty($where)) $where.=' && ';
$where. = "WHERE cidade = '".$_POST['cidade']."'";
retire o . da varivel where... assim :
if($_POST['cidade'] != ''){
if(!empty($where)) $where.=' && ';
$where = "WHERE cidade = '".$_POST['cidade']."'";

veja se dá certo

Link para o comentário
Compartilhar em outros sites

  • 0
nessa parte :

if($_POST['cidade'] != ''){
if(!empty($where)) $where.=' && ';
$where. = "WHERE cidade = '".$_POST['cidade']."'";
retire o . da varivel where... assim :
if($_POST['cidade'] != ''){
if(!empty($where)) $where.=' && ';
$where = "WHERE cidade = '".$_POST['cidade']."'";
veja se dá certo
se fizer isso
$where = "WHERE cidade = '".$_POST['cidade']."'";
o valor atual da $where vai se perder, e ela vai assumir um novo valor, o que não é o objetivo nessa, o que houve é que no meu code $where=""; ficou fora do cote de código, então você deve ter copiado só que estava embaixo, assim a variavel não existia. segue a correção
$where=""; //criando uma variavel para evitar erro nas proximas linhas 
if($_POST['estado'] != ''){
$where. = "WHERE estado = '".$_POST['estado']."'";
}

if($_POST['cidade'] != ''){
if(!empty($where)) $where.=' && ';
$where. = "WHERE cidade = '".$_POST['cidade']."'";
}

Editado por rickayron
Link para o comentário
Compartilhar em outros sites

  • 0

crie combos dependentes....

desconheço seu banco de dados mas acredito que se não ajudar , te dará uma ajudinha..

você vai selecionar o estado :

<span>Estado:</span>
    <select name="estado">
        <option value="" selected="selected">Selecione um Estado..</option>
        <?php
            $pega_estados = mysql_query("SELECT DISTINCT estado FROM clientes order by estado ASC");
            if(mysql_num_rows($pega_estados) == 0) {
                echo '<option value="">Não foram encontrados Estados</option>';
            }else{
                while($linha = mysql_fetch_array($pega_estados)){
                    echo '<option value="'.$linha['estado'].'">'.$linha['estado'].'</option>';
                }
            }
                                

        ?>    
        </select>
depois listar as cidades que fazem parte do estado selecionado :
<span>Cidade:</span>
    <select name="cidade">
        <option value="" selected="selected">Selecione uma Cidade..</option>
        <?php 
            $pega_cidades = mysql_query("SELECT DISTINCT cidade FROM clientes WHERE estado = $linha['estado'] order by cidade ASC");
            if(mysql_num_rows($pega_cidades) == 0) {
                echo '<option value="">Não foram encontrados Cidades</option>';
            }else{

                while($linhaC = mysql_fetch_array($pega_cidades)){
                    echo '<option value="'.$linhaC['cidade'].'">'.$linhaC['cidade'].'</option>';
                }
            }
            
    
        ?>
   </select>
ultima parte :
<?php 

if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){
i       f(((isset($_POST['estado'])) && $_POST['estado'] != "")  or (isset($_POST['cidade']) && $_POST['cidade']!= ""))   {
    

    if($_POST['estado'] != "" && $_POST['cidade'] != "")
        {
            
            $where = "WHERE cidade= ". $_POST['cidade']."  ORDER BY nome ASC";
        }
        else if($_POST['estado'] != "") {
                $where = "WHERE estado =". $_POST['estado']." ORDER BY nome ASC";
                }
            else if($_POST['cidade'] != "") {
                $where = "WHERE cidade=".$_POST['cpf']." ORDER BY nome ASC";
                }





$seleciona_filtro = mysql_query("SELECT * FROM clientes $where ") or die ("Erro: ".mysql_error());
        if(mysql_num_rows($seleciona_filtro) == 0) {
            echo '<h1>Não foram encontados resultados da sua busca</h1>';
            }else{
                while($linhaFiltro = mysql_fetch_array($seleciona_filtro)){
                    echo '<li>'.$linhaFiltro['nome'].'</li>';
            
                }
            }
    }
            
 }       
        
?>

tomara que agora dê certo ....

Link para o comentário
Compartilhar em outros sites

  • 0

Caso o código do colega ai acima não funcionar, verifique esse abaixo.

Coloquei uma linha para imprimir o sql, caso de errado, poste o que imprimir, para vermos o que há de errado com o sql.

<?php
    include "conexao.php";
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Plugin Cadastro</title>
</head>

<body>
<table width="600" border="0">
        <td align="center"><h1>Filtrar Clientes</h1></td>
      </tr>
</table>

<form action="" method="post" enctype="multipart/form-data">

    <span>Estado:</span>
    <select name="estado">
        <option value="" selected="selected">Selecione um Estado..</option>
        <?php
            $pega_estados = mysql_query("SELECT DISTINCT estado FROM clientes order by estado ASC");
            if(mysql_num_rows($pega_estados) == 0) {
                echo '<option value="">Não foram encontrados Estados</option>';
            }else{
                while($linha = mysql_fetch_array($pega_estados)){
                    echo '<option value="'.$linha['estado'].'">'.$linha['estado'].'</option>';
                }
            }


        ?>
        </select>
    <span>Cidade:</span>
    <select name="cidade">
        <option value="" selected="selected">Selecione uma Cidade..</option>
        <?php
            $pega_cidades = mysql_query("SELECT DISTINCT cidade FROM clientes order by cidade ASC");
            if(mysql_num_rows($pega_cidades) == 0) {
                echo '<option value="">Não foram encontrados Cidades</option>';
            }else{
                while($linhaC = mysql_fetch_array($pega_cidades)){
                    echo '<option value="'.$linhaC['cidade'].'">'.$linhaC['cidade'].'</option>';
                }
            }


        ?>
   </select>

    <input type="hidden" name="acao" value="enviar" />
    <input type="submit" value="Buscar"  />
</form>

<hr />

<?php
if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){
    $estado    = isset($_POST['estado']) ? $_POST['estado'] : '';
    $cidade = isset($_POST['cidade']) ? $_POST['cidade'] : '';

$where='';
$where.=(!empty($cidade)) ? " WHERE cidade='$cidade'" : '';

//adicionando condição de cidade
if( !empty($where) && !empty($estado) )
    $where.="&& estado='$estado'";
    else if( empty($where) && !empty($estado) )
             $where.=" WHERE estado='$estado'";
//imprimindo consulta para verificar se houve erro.
echo "<div style='background-color:#FFFFC0;'>$where</div>";

$seleciona_filtro = mysql_query("SELECT * FROM clientes $where ") or die ("Erro: ".mysql_error());
        if(mysql_num_rows($seleciona_filtro) == 0) {
            echo '<h1>Não foram encontados resultados da sua busca</h1>';
            }else{
                 echo "<table>";

                 $i=0;
                while($linhaFiltro = mysql_fetch_array($seleciona_filtro)){
                      $cor=( ($i%2)>0 ) ? '#FFE7CE' : '';
                      echo "<tr bgcolor='$cor'>td>".$linhaFiltro['nome'].'</td></tr>';
                      $i++;
                }
            }
mysql_free_result($seleciona_filtro);  //limpando a memoria
unset($cor, $i, $linhaFiltro);   //destruindo variaveis
}



?>
</body>
</html>

copie e cole tudo que está ai, no lugar do outro que possui e nos dê o parecer.

até mais.

Link para o comentário
Compartilhar em outros sites

  • 0
Caso o código do colega ai acima não funcionar, verifique esse abaixo.

Coloquei uma linha para imprimir o sql, caso de errado, poste o que imprimir, para vermos o que há de errado com o sql.

<?php
    include "conexao.php";
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Plugin Cadastro</title>
</head>

<body>
<table width="600" border="0">
        <td align="center"><h1>Filtrar Clientes</h1></td>
      </tr>
</table>

<form action="" method="post" enctype="multipart/form-data">

    <span>Estado:</span>
    <select name="estado">
        <option value="" selected="selected">Selecione um Estado..</option>
        <?php
            $pega_estados = mysql_query("SELECT DISTINCT estado FROM clientes order by estado ASC");
            if(mysql_num_rows($pega_estados) == 0) {
                echo '<option value="">Não foram encontrados Estados</option>';
            }else{
                while($linha = mysql_fetch_array($pega_estados)){
                    echo '<option value="'.$linha['estado'].'">'.$linha['estado'].'</option>';
                }
            }


        ?>
        </select>
    <span>Cidade:</span>
    <select name="cidade">
        <option value="" selected="selected">Selecione uma Cidade..</option>
        <?php
            $pega_cidades = mysql_query("SELECT DISTINCT cidade FROM clientes order by cidade ASC");
            if(mysql_num_rows($pega_cidades) == 0) {
                echo '<option value="">Não foram encontrados Cidades</option>';
            }else{
                while($linhaC = mysql_fetch_array($pega_cidades)){
                    echo '<option value="'.$linhaC['cidade'].'">'.$linhaC['cidade'].'</option>';
                }
            }


        ?>
   </select>

    <input type="hidden" name="acao" value="enviar" />
    <input type="submit" value="Buscar"  />
</form>

<hr />

<?php
if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){
    $estado    = isset($_POST['estado']) ? $_POST['estado'] : '';
    $cidade = isset($_POST['cidade']) ? $_POST['cidade'] : '';

$where='';
$where.=(!empty($cidade)) ? " WHERE cidade='$cidade'" : '';

//adicionando condição de cidade
if( !empty($where) && !empty($estado) )
    $where.="&& estado='$estado'";
    else if( empty($where) && !empty($estado) )
             $where.=" WHERE estado='$estado'";
//imprimindo consulta para verificar se houve erro.
echo "<div style='background-color:#FFFFC0;'>$where</div>";

$seleciona_filtro = mysql_query("SELECT * FROM clientes $where ") or die ("Erro: ".mysql_error());
        if(mysql_num_rows($seleciona_filtro) == 0) {
            echo '<h1>Não foram encontados resultados da sua busca</h1>';
            }else{
                 echo "<table>";

                 $i=0;
                while($linhaFiltro = mysql_fetch_array($seleciona_filtro)){
                      $cor=( ($i%2)>0 ) ? '#FFE7CE' : '';
                      echo "<tr bgcolor='$cor'>td>".$linhaFiltro['nome'].'</td></tr>';
                      $i++;
                }
            }
mysql_free_result($seleciona_filtro);  //limpando a memoria
unset($cor, $i, $linhaFiltro);   //destruindo variaveis
}



?>
</body>
</html>

copie e cole tudo que está ai, no lugar do outro que possui e nos dê o parecer.

até mais.

WHERE cidade='Pelotas'&& estado='Rio de Janeiro'

Não foram encontados resultados da sua busca

BINGO! Agora sim está perfeito! Está com uns erros de td faltando < mas isso eu arrumo sem problemas e assim já vou estudar o código pra saber como fazer da proxima vez!

Preciso acrescentar mais um campo q é o TIPO só q ele está em outra tabela.. é na tabela produtos e não na tabela clientes. Vou tentar fazer aqui de acordo com os outros e ver se dá certo

Valeu a paciência comigo!

Editado por Tyago Silveira
Link para o comentário
Compartilhar em outros sites

  • 0

Consegui por na tela já o TIpo ele aparece pra selecioanr mas me perdi na parte das condições. Não sei como fazer tem como me ajudar? Com as 3 condições prontas fica masi fácil pra eu estudar o código e entender o que foi feito pois não sei onde mudar pra adicioanr a terceira condição

Taí o código como está

<?php
    include "conexao.php";
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Plugin Cadastro</title>
</head>

<body>
<table width="600" border="0">
        <td align="center"><h1>Filtrar Clientes</h1></td>
      </tr>
</table>

<form action="" method="post" enctype="multipart/form-data">

    <span>Estado:</span>
    <select name="estado">
        <option value="" selected="selected">Selecione um Estado..</option>
        <?php
            $pega_estados = mysql_query("SELECT DISTINCT estado FROM clientes order by estado ASC");
            if(mysql_num_rows($pega_estados) == 0) {
                echo '<option value="">Não foram encontrados Estados</option>';
            }else{
                while($linha = mysql_fetch_array($pega_estados)){
                    echo '<option value="'.$linha['estado'].'">'.$linha['estado'].'</option>';
                }
            }


        ?>
        </select>
    <span>Cidade:</span>
    <select name="cidade">
        <option value="" selected="selected">Selecione uma Cidade..</option>
        <?php
            $pega_cidades = mysql_query("SELECT DISTINCT cidade FROM clientes order by cidade ASC");
            if(mysql_num_rows($pega_cidades) == 0) {
                echo '<option value="">Não foram encontrados Cidades</option>';
            }else{
                while($linhaC = mysql_fetch_array($pega_cidades)){
                    echo '<option value="'.$linhaC['cidade'].'">'.$linhaC['cidade'].'</option>';
                }
            }


        ?>
   </select>
 <span>Tipo:</span>
    <select name="tipo">
        <option value="" selected="selected">Selecione um Tipo..</option>
        <?php
            $pega_tipo = mysql_query("SELECT DISTINCT tipos FROM produtos order by tipo ASC");
            if(mysql_num_rows($pega_tipo) == 0) {
                echo '<option value="">Não foram encontrados Tipos</option>';
            }else{
                while($linhaT = mysql_fetch_array($pega_tipo)){
                    echo '<option value="'.$linhaT['tipo'].'">'.$linhaT['tipo'].'</option>';
                }
            }


        ?>
   </select>


    <input type="hidden" name="acao" value="enviar" />
    <input type="submit" value="Buscar"  />
</form>

<hr />

<?php
if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){
    $estado    = isset($_POST['estado']) ? $_POST['estado'] : '';
    $cidade = isset($_POST['cidade']) ? $_POST['cidade'] : '';

$where='';
$where.=(!empty($cidade)) ? " WHERE cidade='$cidade'" : '';

//adicionando condição de cidade
if( !empty($where) && !empty($estado) )
    $where.="&& estado='$estado'";
    else if( empty($where) && !empty($estado) )
             $where.=" WHERE estado='$estado'";
//imprimindo consulta para verificar se houve erro.
echo "<div style='background-color:#FFFFC0;'>$where</div>";

$seleciona_filtro = mysql_query("SELECT * FROM clientes, produtos $where ") or die ("Erro: ".mysql_error());
        if(mysql_num_rows($seleciona_filtro) == 0) {
            echo '<h1>Não foram encontados resultados da sua busca</h1>';
            }else{
                 echo "<table>";

                 $i=0;
                while($linhaFiltro = mysql_fetch_array($seleciona_filtro)){
                      $cor=( ($i%2)>0 ) ? '#FFE7CE' : '';
                      echo "<tr bgcolor='$cor'>td>".$linhaFiltro['nome'].'</td></tr>';
                      $i++;
                }
            }
mysql_free_result($seleciona_filtro);  //limpando a memoria
unset($cor, $i, $linhaFiltro);   //destruindo variaveis
}



?>
</body>
</html>

Link para o comentário
Compartilhar em outros sites

  • 0

<pma:table name="produtos">
                CREATE TABLE `produtos` (
                  `id_prod` int(5) NOT NULL AUTO_INCREMENT,
                  `id_cliente` varchar(100) COLLATE latin1_general_ci NOT NULL,
                  `produto` varchar(100) COLLATE latin1_general_ci NOT NULL,
                  `tipo` varchar(20) COLLATE latin1_general_ci NOT NULL,
                  `foto` varchar(255) COLLATE latin1_general_ci NOT NULL,
                  `informacoes` varchar(255) COLLATE latin1_general_ci NOT NULL,
                  PRIMARY KEY (`id_prod`)
                ) ENGINE=MyISAM AUTO_INCREMENT=44 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
            </pma:table>

 <pma:table name="clientes">
                CREATE TABLE `clientes` (
                  `id` int(10) NOT NULL AUTO_INCREMENT,
                  `nome` text NOT NULL,
                  `imagem` varchar(255) NOT NULL,
                  `endereco` varchar(100) NOT NULL,
                  `estado` varchar(50) NOT NULL,
                  `cidade` varchar(50) NOT NULL,
                  `foneres` varchar(25) NOT NULL,
                  `fonecom` varchar(25) NOT NULL,
                  `celular` varchar(25) NOT NULL,
                  `email` varchar(50) NOT NULL,
                  PRIMARY KEY (`id`)
                ) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;
            </pma:table>

a id_cliente dos produtos é relacionada com a id dos clientes!

Agora já ajuda? Então só preciso colocar mais um campo na busca q é o TIPO e ficar igual ao q vocÊ já me ajudou a fazer de serem independentes cada busca!

Att.

Editado por Tyago Silveira
Link para o comentário
Compartilhar em outros sites

  • 0
<pma:table name="produtos">
                CREATE TABLE `produtos` (
                  `id_prod` int(5) NOT NULL AUTO_INCREMENT,
                  `id_cliente` varchar(100) COLLATE latin1_general_ci NOT NULL,
                  `produto` varchar(100) COLLATE latin1_general_ci NOT NULL,
                  `tipo` varchar(20) COLLATE latin1_general_ci NOT NULL,
                  `foto` varchar(255) COLLATE latin1_general_ci NOT NULL,
                  `informacoes` varchar(255) COLLATE latin1_general_ci NOT NULL,
                  PRIMARY KEY (`id_prod`)
                ) ENGINE=MyISAM AUTO_INCREMENT=44 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
            </pma:table>

 <pma:table name="clientes">
                CREATE TABLE `clientes` (
                  `id` int(10) NOT NULL AUTO_INCREMENT,
                  `nome` text NOT NULL,
                  `imagem` varchar(255) NOT NULL,
                  `endereco` varchar(100) NOT NULL,
                  `estado` varchar(50) NOT NULL,
                  `cidade` varchar(50) NOT NULL,
                  `foneres` varchar(25) NOT NULL,
                  `fonecom` varchar(25) NOT NULL,
                  `celular` varchar(25) NOT NULL,
                  `email` varchar(50) NOT NULL,
                  PRIMARY KEY (`id`)
                ) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;
            </pma:table>
a id_cliente dos produtos é relacionada com a id dos clientes! Agora já ajuda? Então só preciso colocar mais um campo na busca q é o TIPO e ficar igual ao q vocÊ já me ajudou a fazer de serem independentes cada busca! Att.
Cara o seu banco de dados ta tem uma incoerencia... veja
`id_cliente` varchar(100) COLLATE latin1_general_ci NOT NULL,
O codigo cliente na tabela produtos está definido como varchar.
`id` int(10) NOT NULL AUTO_INCREMENT,
já na tabela cliente é um campo inteiro com dez posições auto incrementado. então nas comparações ficaria verificando interio=vachar. caso não gere erro, ficar lento. pois id=1 é mais rapido do que id='1', entende o que digo. os dados vinculados devem ser do mesmo tipo e tamanho a fim de evitar tais incompatibilidades. segue abaixo uma proposta de solução, para o codigo php, para o banco de dados basta mudar o id_cliente da tabela produto para o mesmo tipo do id da tabela cliente até mais.
<?php
if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){
    $estado    = isset($_POST['estado']) ? $_POST['estado'] : '';
    $cidade = isset($_POST['cidade']) ? $_POST['cidade'] : '';

$where="clientes.id=produtos.id_cliente ";
$where.=(!empty($cidade)) ? " WHERE cidade='$cidade'" : '';

//adicionando condição de cidade
if( !empty($where) && !empty($estado) )
    $where.="&& estado='$estado'";

//imprimindo consulta para verificar se houve erro.
echo "<div style='background-color:#FFFFC0;'>$where</div>";

$seleciona_filtro = mysql_query("SELECT * FROM clientes, produtos $where ") or die ("Erro: ".mysql_error());
        if(mysql_num_rows($seleciona_filtro) == 0) {
            echo '<h1>Não foram encontados resultados da sua busca</h1>';
            }else{
                 echo "<table>
                              <tr bgcolor='#D2D2D2'><td><b>Cliente</b></td><td><b>E-mail</b></td><td><b>Produto</b></td></tr>
                      ";

                 $i=0;
                while($linhaFiltro = mysql_fetch_array($seleciona_filtro)){
                      $cor=( ($i%2)>0 ) ? '#FFE7CE' : '';
                      echo "<tr bgcolor='$cor'>
                                <td>".$linhaFiltro['nome']."</td>
                                <td>".$linhaFiltro['email']."</td>
                                <td>".$linhaFiltro['produto']."</td>
                            </tr>";
                      $i++;
                }
            }
mysql_free_result($seleciona_filtro);  //limpando a memoria
unset($cor, $i, $linhaFiltro);   //destruindo variaveis
}

?>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...