<?php

/**
 * Esta fun��o retornar� os dados j� formatados para serem usados diretamente em uma consulta
 * sql. 
 * 
 * @author  Silvano Girardi Jr. <sgj@dr.com>
 * @param   string          $campo          Nome do campo na tabela
 * @param   string/array    $valores        Poss�veis valores para o campo
 * @param   string          $booleano       Pode ser OR ou AND
 * @param   string          $wildcard_esq   "Coringa" que ficar� do lado esquerdo de cada valor
 * @param   string          $wildcard_dir   "Coringa" que ficar� do lado direito de cada valor
 * @return  string                          Retorna os dados formatados ou 1, caso nenhum valor seja
 *                                          passado
 */
function retornaSQLBoleana($campo, $valores, $booleano, $wildcard_esq = '', $wildcard_dir = '')
{
    $sql = array();
    if (is_array($valores)) {
        for ($i=0; $i<count($valores); $i++) {
            array_push($sql, retornaSQLBoleana($campo, $valores[$i], $booleano, $wildcard_esq, $wildcard_dir));
        }
    } else {
        if (!empty($valores)) {
            array_push($sql, "$campo LIKE '$wildcard_esq$valores$wildcard_dir'");
        }
    }

    return (count($sql)>0) ? "(".implode(" $booleano ", $sql).")" : "1";
}


// Exemplos de utiliza��o:

// Se vierem de um campo texto, v�rias palavras, voc� pode criar este array dando um explode nos espa�os
$valor = array("Silvano", "Jo�o", "Luiz");
$campo = "nome";
// No formul�rio voc� pode fazer com que o booleano seja setado por um radiobox, por exemplo:
// <input type="radio" name="booleano" value="OR" checked>
// <input type="radio" name="booleano" value="AND">
$booleano = "OR";

echo "Com :".$booleano."<br>";
echo "SELECT * FROM tabela WHERE ".retornaSQLBoleana($campo, $valor, $booleano);
echo "<br><br>";
echo "SELECT * FROM tabela WHERE ".retornaSQLBoleana($campo, $valor, $booleano, "%");
echo "<br><br>";
echo "SELECT * FROM tabela WHERE ".retornaSQLBoleana($campo, $valor, $booleano, "", "%");
echo "<br><br>";
echo "SELECT * FROM tabela WHERE ".retornaSQLBoleana($campo, $valor, $booleano, "%", "%");
echo "<br><br>";
$booleano = "AND";
echo "<br><br>";
echo "Com: ".$booleano."<br>";
echo "SELECT * FROM tabela WHERE ".retornaSQLBoleana($campo, $valor, $booleano);
echo "<br><br>";
echo "SELECT * FROM tabela WHERE ".retornaSQLBoleana($campo, $valor, $booleano, "%");
echo "<br><br>";
echo "SELECT * FROM tabela WHERE ".retornaSQLBoleana($campo, $valor, $booleano, "", "%");
echo "<br><br>";
echo "SELECT * FROM tabela WHERE ".retornaSQLBoleana($campo, $valor, $booleano, "%", "%");