lo reduci.. gracias por los consejos
Código PHP:
// Selecciono las tablas y columanas
$sql = " SELECT ini.ini_id,to_char(ini.ini_fecha_creacion, 'DD-MM-YYYY'),ini.ini_codigo,ini.ini_nombre,
ins.*,reg.*,est.* FROM iniciativa ini,institucion ins,region reg, estado est ";
// comienzo a concatenar
$sql .= " WHERE ini.ini_inst_id = ins.inst_id ";
$sql .= " AND ini.ini_reg_id = reg.reg_id ";
$sql .= " AND ini.ini_est_id = est.est_id ";
if ($_POST[desde] and $_POST[hasta]) { // por fechas
$sql .= " AND ini.ini_fecha_creacion BETWEEN '$_POST[desde]' AND '$_POST[hasta]' ";
}
if ($_POST[institucion]) { // por institucion
$sql .= " AND ini.ini_inst_id = '$_POST[institucion]' ";
}
if ($_POST[region]) { // por region
$sql .= " AND ini.ini_reg_id = '$_POST[region]' ";
}
if ($_POST[estado]) { // por estado
$sql .= " AND ini.ini_est_id = '$_POST[estado]' ";
}
$sql .= " ORDER BY ini.ini_fecha_creacion DESC "; // el orden
$q = $db->query($sql); // la ejecuto
if ($_POST['borrar']) {
$lista = implode(',',$_POST['seleccion']); // implode los separa por coma para hacer un delete where id IN
$borrar = $db->query("UPDATE iniciativa SET ini_est_id = 3 WHERE ini_id IN($lista)");
$q = $db->query("$sql");
}