无法让PHP读取if子句中的条件

时间:2013-10-24 05:42:17

标签: php fpdf

我不明白为什么php没有读取我在一段调用fpdf类的代码中的条件。我有一个小应用程序,它读取(而不是几个复选框)的值,并根据选中的复选框执行操作。但是,当我尝试专门管理一个条件时,PHP似乎没有读取并在条件内输入代码块。我知道我必须非常具体,所以我设置条件来读取发送值的复选框和空的复选框,所以基本上我做了,例如:

if($cedula=='si' && $licenciados=='si' && $maestros=='' &&$especialistas==''  &&$doctores=='' &&$correo_main=='' &&$cuenta==''&&$afiliado==''&&$fechas!='si' &&  $facultades!='si' && $generacion!='si') {... } 

或:

if($doctores=='si'&&$cedula=='si'&& $maestros=='' &&$especialistas=='' &&$licenciados==''&&$correo_main=='' &&$cuenta==''&&$afiliado==''&&$fechas!='si' && $facultades!='si' && $generacion!='si'){

或:

else if($cedula='si' && $licenciados == 'si' && $fechas=='si' && $facultades=='si' &&   $generacion=='si'&&$correo_main==''  &&$cuenta==''&&$afiliado==''&&$especialistas!='si'&&$maestros!='si'&&$doctores!='si') {

但似乎没有认识到以下情况:

else if($cedula=='si' &&  $licenciados=='si' && $maestros=='si' && $especialistas=='si'   && $doctores=='si' && $fechas=='si' && $facultades=='si'   &&$generacion=='si'&&$correo_main=='' &&$cuenta==''&&$afiliado==''&&$telefonos !='si' &&   $direccion!='si' && $correo !='si') {
echo "Consulta de todos los grados";

我不明白因为它清楚地指明了哪些复选框必须具有某些特定值,哪些复选框必须不具有该特定值。

然后我有一个非常大的查询顺便没有返回mysql中的任何行,但我很肯定它不是导致问题的查询。实际上,最后一个代码中的最后一部分不会回显事物,因此不会读取条件。

我不知道如何调试这个因为我说我正在使用fpdf,所以除非特别回显,否则不会显示错误,因此当我使用之前的选项运行网页时,我只有一个空白页面。

¿有人能指出我正确的方向来进一步研究代码,甚至调试它吗?我很感激。

我在代码块中运行的查询是:

SELECT Nombre_Licen, Apellido_Licen, GROUP_CONCAT(Ced_Profesional SEPARATOR '|||') AS   Cedulas_Esp, GROUP_CONCAT(Ced_Profesional_Lic SEPARATOR '|||') AS Cedulas_Lic,   GROUP_CONCAT(Ced_Profesional_Ma SEPARATOR '|||') AS Cedulas_Maestria,   GROUP_CONCAT(Ced_Profesional_Dr SEPARATOR '|||') AS Cedulas_Doctorado,   GROUP_CONCAT(Generacion_Lic SEPARATOR '|||') AS Gener_Lic,
 GROUP_CONCAT(Generacion_Especialidad SEPARATOR '|||') AS Gener_Esp,   GROUP_CONCAT(Generacion_Maestro SEPARATOR '|||') AS Gener_Maestria,    GROUP_CONCAT(Generacion_Dr SEPARATOR '|||') AS Gener_Doctorado,   GROUP_CONCAT(Fecha_Egreso_Lic SEPARATOR '|||') AS Egreso_Lic,   GROUP_CONCAT(Fecha_Egreso_Especialidad SEPARATOR '|||') AS Egreso_Especialidad,   GROUP_CONCAT(Fecha_Egreso_Maest SEPARATOR '|||') AS Egreso_Maestria,   GROUP_CONCAT(Fecha_Egreso_Doctor SEPARATOR '|||') AS Egreso_Doctorado,    GROUP_CONCAT(Fecha_Ingreso_Lic SEPARATOR '|||') AS Ingreso_Lic,   GROUP_CONCAT(Fecha_Ingreso_Especialidad SEPARATOR '|||') AS Ingreso_Especialidad,    GROUP_CONCAT(Fecha_Ingreso_Maest SEPARATOR '|||') AS Ingreso_Maestria,    GROUP_CONCAT(Fecha_Ingreso_Doctor SEPARATOR '|||') AS Ingreso_Doctorado,    GROUP_CONCAT(Facultad_Lic SEPARATOR '|||') AS Facultad_Licenciatura,    GROUP_CONCAT(Facultad_Maestro SEPARATOR '|||') AS Facultad_Maestria,    GROUP_CONCAT(Facultad_Especialidad SEPARATOR '|||') AS Facultad_Especializacion,    GROUP_CONCAT(Facultad_Dr SEPARATOR '|||') AS Facultad_Doctorado
FROM datos_especializacion, datos_maestria, datos_licenciatura, datos_doctorado WHERE   Apellido_Licen BETWEEN '$primerterm' AND '$segterm'
AND Facultad_Lic IS NOT NULL
AND Facultad_Maestro IS NOT NULL
AND Facultad_Especialidad IS NOT NULL
AND Facultad_Dr IS NOT NULL
AND Generacion_Lic IS NOT NULL
AND Generacion_Maestro IS NOT NULL
AND Generacion_Dr IS NOT NULL
AND Generacion_Especialidad IS NOT NULL
AND Fecha_Ingreso_Lic IS NOT NULL
AND Fecha_Ingreso_Maest IS NOT NULL
AND Fecha_Ingreso_Doctor IS NOT NULL
AND Fecha_Ingreso_Especialidad IS NOT NULL
AND Fecha_Egreso_Lic IS NOT NULL
AND Fecha_Egreso_Maest IS NOT NULL
AND Fecha_Egreso_Doctor IS NOT NULL
AND Fecha_Egreso_Especialidad IS NOT NULL
AND Ced_Profesional IS NOT NULL
AND Ced_Profesional_Lic IS NOT NULL
AND Ced_Profesional_Ma IS NOT NULL
AND Ced_Profesional_Dr IS NOT NULL
AND Apellido_Maest = Apellido_Licen
AND Apellido_Licen = Apellidos_Especialidad
AND Apellido_Licen = Apellido_Doctor GROUP BY datos_licenciatura.id_usuario ORDER BY    Apellido_Licen;";

(正如我所说,它非常大)。然后我使用一个非常大的字符串输出pdf:

if(mysql_num_rows($consEstudio)>0) {
while($objeto = mysql_fetch_array($consEstudio)){
$txt = "Nombre y Apellidos: ".$objeto['Nombre_Licen']."  ".$objeto['Apellido_Licen']."\nCédula(s) Profesional(es) de Licenciatura:  ".preg_replace('/\|\|\|/', ', ', $objeto['Cedulas_Lic'])." Fecha de Ingreso / Egreso de  Licenciatura: ".preg_replace('/\|\|\|/', ', ', $objeto['Ingreso_Lic'])." /  ".preg_replace('/\|\|\|/', ', ', $objeto['Egreso_Lic'])." Generación de Licenciatura:  ".preg_replace('/\|\|\|/', ', ', $objeto['Gener_Lic'])." Facultad:  ".preg_replace('/\|\|\|/', ', ', $objeto['Facultad_Licenciatura'])."\nCédula(s)  Profesional(es) de Especialidad: ".preg_replace('/\|\|\|/', ', ', $objeto['Cedulas_Esp'])."  Fecha de Ingreso / Egreso de Especialidad: ".preg_replace('/\|\|\|/', ', ',  $objeto['Ingreso_Especialidad'])." / ".preg_replace('/\|\|\|/', ', ',  $objeto['Egreso_Especialidad'])." Generación de Especialidad: ".preg_replace('/\|\|\|/', ',  ', $objeto['Gener_Esp'])." Facultad: ".preg_replace('/\|\|\|/', ', ',  $objeto['Facultad_Especializacion'])."\nCédula(s) Profesional(es) de Maestria:  ".preg_replace('/\|\|\|/', ', ', $objeto['Cedulas_Maestria'])." Fecha de Ingreso / Egreso  de Maestría: ".preg_replace('/\|\|\|/', ', ', $objeto['Ingreso_Maestria'])." /  ".preg_replace('/\|\|\|/', ', ', $objeto['Egreso_Maestria'])." Generación de Maestría:  ".preg_replace('/\|\|\|/', ', ', $objeto['Gener_Maestria'])." Facultad:  ".preg_replace('/\|\|\|/', ', ', $objeto['Facultad_Maestria'])."\nCédula(s) Profesional(es)  de Doctorado: ".preg_replace('/\|\|\|/', ', ', $objeto['Cedulas_Doctorado'])." Fecha de  Ingreso / Egreso de Doctorado: ".preg_replace('/\|\|\|/', ', ',  $objeto['Ingreso_Doctorado'])." / ".preg_replace('/\|\|\|/', ', ',  $objeto['Egreso_Doctorado'])." Generación de Doctorado: ".preg_replace('/\|\|\|/', ', ',  $objeto['Gener_Doctorado'])." Facultad: ".preg_replace('/\|\|\|/', ', ',  $objeto['Facultad_Doctorado']);
$PDF->salidaFilaDosRegUnaColumna($txt, $fill);
$fill=!$fill;
}
}
else {
$txt="No hay coincidencias para esta combinación (no existen registros con grado     académico)";
$PDF->salidaFilaUnaColumna($txt, false);
}$PDF->Output();

1 个答案:

答案 0 :(得分:1)

鉴于if语句的复杂性以及它们测试的变量的一致性,编写规则和函数来比较值和执行错误检查的中心位置似乎是合理的。这是我嘲笑的一个简单例子

$values = array($cedula, $licenciados, $maestros, $especialistas, $doctores, $correo_main, $cuenta, $afiliado, $fechas, $facultades, $generacion);
$rules = array(
    array('ruleset' => array('si','si','','','','','','','si','si','si','si'), 'user_func' => function(){ echo 'test1'; }),
    array('ruleset' => array('si','','','','si','','','','si','si','si','si'), 'user_func' => function(){ echo 'test2'; }),
);

foreach($rules as $key => $rule) {
    foreach($values as $key => $value) {
        if(checkRules($values, $rule['ruleset'])) {
            $call = $rule['user_func'];
            $call();
        }
    }
}
function checkRules($values, $rule) {
    $passed = true;
    foreach($values as $key => $value) {
        if($value != $rule[$key]) {
            $passed = false;
        }
    }
    return $passed;
}