Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/10/2008, 22:32
vmac179
 
Fecha de Ingreso: julio-2007
Ubicación: /home/victor
Mensajes: 114
Antigüedad: 16 años, 9 meses
Puntos: 0
Evitar tantos if

Amigos les presento una duda que tengo miren este es el caso
Código PHP:
if ($_POST == NULL) { // if NULL
$q $db->query("SELECT ini.*,ins.*,reg.* FROM iniciativa ini,institucion ins,region reg
WHERE ini.ini_inst_id = ins.inst_id
AND ini.ini_reg_id = reg.reg_id
AND ini.ini_est_id = 1
ORDER BY ini.ini_fecha_creacion ASC"
); 
}

if (
$_POST[filtrar]) { // if NULL
$q $db->query("SELECT ini.*,ins.*,reg.* FROM iniciativa ini,institucion ins,region reg
WHERE ini.ini_inst_id = ins.inst_id
AND ini.ini_reg_id = reg.reg_id
AND ini.ini_est_id = 1
ORDER BY ini.ini_fecha_creacion ASC"
); 
}

if (
$_POST[institucion]) { // if institucion
$q $db->query ("SELECT ini.*,ins.*,reg.* FROM iniciativa ini,institucion ins,region reg
WHERE ini.ini_inst_id = ins.inst_id
AND ini.ini_reg_id = reg.reg_id
AND ini.ini_inst_id = '$_POST[institucion]'
ORDER BY ini.ini_fecha_creacion ASC"
);
}

if (
$_POST[estado]) { // if estado
$q $db->query ("SELECT ini.*,ins.*,reg.* FROM iniciativa ini,institucion ins,region reg
WHERE ini.ini_inst_id = ins.inst_id
AND ini.ini_reg_id = reg.reg_id
AND ini.ini_est_id = '$_POST[estado]'
ORDER BY ini.ini_fecha_creacion ASC"
);
}

if (
$_POST[region]) { // if region
$q $db->query ("SELECT ini.*,ins.*,reg.* FROM iniciativa ini,institucion ins,region reg
WHERE ini.ini_inst_id = ins.inst_id
AND ini.ini_reg_id = reg.reg_id
AND ini.ini_reg_id = '$_POST[region]'
ORDER BY ini.ini_fecha_creacion ASC"
);
}

if (
$_POST[desde] and $_POST[hasta]) { // desde - hasta
$q $db->query ("SELECT ini.*,ins.*,reg.* FROM iniciativa ini,institucion ins,region reg
WHERE ini.ini_inst_id = ins.inst_id
AND ini.ini_reg_id = reg.reg_id
AND ini.ini_fecha_creacion 
BETWEEN '$_POST[desde]' 
AND '$_POST[hasta]'
ORDER BY ini.ini_fecha_creacion ASC"
);
}

if (
$_POST[institucion] and $_POST[region]) { // institucion y region
$q $db->query ("SELECT ini.*,ins.*,reg.* FROM iniciativa ini,institucion ins,region reg
WHERE ini.ini_inst_id = ins.inst_id
AND ini.ini_reg_id = reg.reg_id
AND ini.ini_inst_id = '$_POST[institucion]'
AND ini.ini_reg_id = '$_POST[region]'
ORDER BY ini.ini_fecha_creacion ASC"
);
}

if (
$_POST[institucion] and $_POST[estado]) { // institucion y estado
$q $db->query ("SELECT ini.*,ins.*,reg.* FROM iniciativa ini,institucion ins,region reg
WHERE ini.ini_inst_id = ins.inst_id
AND ini.ini_reg_id = reg.reg_id
AND ini.ini_inst_id = '$_POST[institucion]'
AND ini.ini_est_id = '$_POST[estado]'
ORDER BY ini.ini_fecha_creacion ASC"
);
}

if (
$_POST[estado] and $_POST[region]) { // estado,region
$q $db->query ("SELECT ini.*,ins.*,reg.* FROM iniciativa ini,institucion ins,region reg
WHERE ini.ini_inst_id = ins.inst_id
AND ini.ini_reg_id = reg.reg_id
AND ini.ini_reg_id = '$_POST[region]'
AND ini.ini_est_id = '$_POST[estado]'
ORDER BY ini.ini_fecha_creacion ASC"
);
}

if (
$_POST[estado] and $_POST[desde] and $_POST[hasta]) { // estado,desde,hasta
$q $db->query ("SELECT ini.*,ins.*,reg.* FROM iniciativa ini,institucion ins,region reg
WHERE ini.ini_inst_id = ins.inst_id
AND ini.ini_reg_id = reg.reg_id
AND ini.ini_est_id = '$_POST[estado]'
AND ini.ini_fecha_creacion 
BETWEEN '$_POST[desde]' 
AND '$_POST[hasta]'
ORDER BY ini.ini_fecha_creacion ASC"
);
}

if (
$_POST[institucion] and $_POST[desde] and $_POST[hasta]) { // institucion,desde,hasta
$q $db->query ("SELECT ini.*,ins.*,reg.* FROM iniciativa ini,institucion ins,region reg
WHERE ini.ini_inst_id = ins.inst_id
AND ini.ini_reg_id = reg.reg_id
AND ini.ini_inst_id = '$_POST[institucion]'
AND ini.ini_fecha_creacion 
BETWEEN '$_POST[desde]' 
AND '$_POST[hasta]'
ORDER BY ini.ini_fecha_creacion ASC"
);
}

if (
$_POST[region] and $_POST[desde] and $_POST[hasta]) { // institucion,desde,hasta
$q $db->query ("SELECT ini.*,ins.*,reg.* FROM iniciativa ini,institucion ins,region reg
WHERE ini.ini_inst_id = ins.inst_id
AND ini.ini_reg_id = reg.reg_id
AND ini.ini_reg_id = '$_POST[region]'
AND ini.ini_fecha_creacion 
BETWEEN '$_POST[desde]' 
AND '$_POST[hasta]'
ORDER BY ini.ini_fecha_creacion ASC"
);
}

if (
$_POST[institucion] and $_POST[region] and $_POST[desde] and $_POST[hasta]) { // institucion,region,desde,hasta 
$q $db->query ("SELECT ini.*,ins.*,reg.* FROM iniciativa ini,institucion ins,region reg
WHERE ini.ini_inst_id = ins.inst_id
AND ini.ini_reg_id = reg.reg_id
AND ini.ini_reg_id = '$_POST[region]'
AND ini.ini_inst_id = '$_POST[institucion]'
AND ini.ini_fecha_creacion 
BETWEEN '$_POST[desde]' 
AND '$_POST[hasta]'
ORDER BY ini.ini_fecha_creacion ASC"
);
}


if (
$_POST[institucion] and $_POST[estado] and $_POST[region]) { // institucion,estado,region
$q $db->query ("SELECT ini.*,ins.*,reg.* FROM iniciativa ini,institucion ins,region reg
WHERE ini.ini_inst_id = ins.inst_id
AND ini.ini_reg_id = reg.reg_id
AND ini.ini_est_id = '$_POST[estado]'
AND ini.ini_reg_id = '$_POST[region]'
AND ini.ini_inst_id = '$_POST[institucion]'
ORDER BY ini.ini_fecha_creacion ASC"
);
}


if (
$_POST[institucion] and $_POST[desde] and $_POST[hasta] and $_POST[estado] and $_POST[region]) { // if todos
$q $db->query ("SELECT ini.*,ins.*,reg.* FROM iniciativa ini,institucion ins,region reg
WHERE ini.ini_inst_id = ins.inst_id
AND ini.ini_reg_id = reg.reg_id
AND ini.ini_est_id = '$_POST[estado]'
AND ini.ini_reg_id = '$_POST[region]'
AND ini.ini_inst_id = '$_POST[institucion]'
AND ini.ini_fecha_creacion 
BETWEEN '$_POST[desde]' 
AND '$_POST[hasta]'
ORDER BY ini.ini_fecha_creacion ASC"
);

Pregunta, existe alguna manera de evitar tantos if

Gracias
Salu2...