Boas galerinha ^^

Post rápido pra ajudar um amigo aqui no msn.

A proposta é fazer aqueles formulários em que temos 2~3 ou mais inputs, que servirão de filtro para a consulta que faremos na base de dados.

Porém, o usuário pode querer preencher apenas um desses campos, 2 deles, ou todos.. e a nossa query, deve se adequar a esta realidade, mandando pro servidor apenas a consulta correta.

Abaixo está a ‘minha solução’ para o problema.

Usando 1 array, e alguns ifs, fica tudo bem prático.

<?php
  if( $_SERVER['REQUEST_METHOD']=='POST' )
  {
    $where = Array();

    $nome = getPost('n');
    $cidade = getPost('c');
    $bairro = getPost('b');


    if( $nome ){ $where[] = " `nome` = '{$nome}'"; }
    if( $cidade ){ $where[] = " `cidade` = '{$cidade}'"; }
    if( $bairro ){ $where[] = " `bairro` = '{$bairro}'"; }

    $sql = "SELECT nome, cidade, bairro FROM local ";
    if( sizeof( $where ) )
      $sql .= ' WHERE '.implode( ' AND ',$where );

    echo $sql;//execute a query aqui
  }
  //a cargo do leitor melhorar o filtro anti injection
  function filter( $str ){
    return addslashes( $str );
  }
  function getPost( $key ){
    return isset( $_POST[ $key ] ) ? filter( $_POST[ $key ] ) : null;
  }
?>
<style type="text/css">
label { display: block; }
</style>
<form action="" method="post">
  <label>Nome: <input type="text" name="n" /></label>
  <label>Cidade: <input type="text" name="c" /></label>
  <label>Bairro: <input type="text" name="b" /></label>


  <label><input type="submit" name="ok" value="Ok" /></label>
</form>