0

我不明白为什么 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();
4

1 回答 1

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;
}
于 2013-10-24T06:10:29.870 回答