<?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, "%", "%");