hans2488 En tu codigo en cada if lo que haces es predefinir la variable $sql
Cita: if($_POST['costo']!=""){
$sql=' and costo like "%'.$_POST['costo'].'%"';
}
Aqui le das valor, no lo editas. Ademas te falta el WHERE.
gldelossantos Sabes lo que son
DRY ,
WET y
WETTT ?
Código PHP:
function addToWhere(array $data)
{
$result = array();
foreach($data as $sqlColumn => $sqlValue)
{
if(!empty($sqlValue) && !empty($sqlColumn))
{
array_push($result, $sqlColumn . " LIKE %'" . $sqlValue . "'%");
}
}
return $result;
}
$sqlQuery = "SELECT id, nombre, costo FROM items";
$where = addToWhere(array("id" => $_POST['id'],
"nombre" => $_POST['nombre'],
"costo" => $_POST['costo']));
if(count($where) > 0)
{
$sqlQuery .= " WHERE " . implode(" OR ", $where);
}
echo $sqlQuery;
Asi es un poco mejor. No es perfecto, pero es mejor.