0

I have trouble validating a form that changes its fields based on javascript. The idea is that the form displays different fields added dynamically based on a radio button choice. However PHP appears to get confused based on the logic I made. Say I check for the fields that are actually set. I tried writing an if, else logic checking if $_POST variables were set with isset, but it didn't work. Now the code I have does a check for the whole form being submitted (checking the name of the submit button), and then, inside that check, I check for all the other fields, like so:

else if(isset($_POST['subirLic']) && isset($_POST['BusquedaTerm'])){ 
//the first variable is the name of the submit button and the second is a hidden field, then inside the block I check for the existence of the fields for example: if(isset($_POST['whatever'])) {}

The problem is that I want to check that the first set of fields is submitted, and also check if the other fields (those that display based on a javascript function) are not submitted.

I tried to build a decision logic but I am all messed up, currently I do the check like I described above, then I check if the variables are set that must go into the database query, but the page behaves very oddly. For example I fill the additional fields, and then PHP tries to do a query that I built for the other set of fields.

I am trying to handle the decision based on a code like this:

    if(isset($EgresoLicen)&&isset($IngresoLicen)&&isset($CedLic)&&isset($FacultLic)&&isset($GenerLic)&&isset($cuentaDep)&&isset($TesisLicen)) {//here do the query to the database}

and the other decision that the code should make goes like this:

if(isset($EgresoLicen)&&isset($ingresoLicen)&&isset($FacultLic)&&isset($GenerLic)&&isset($cuentaDep)&&isset($AsesorLic)&&isset($TitProyecto)&&isset($Modalidad)) {//same thing }

But as I said, PHP gets confused apparently because the two if choices contain almost identical variables.

OK guys, I'll paste the code because I keep looking at it and can only think it is correct, although it evidently isn't. It is only part of the whole code at the page, that has about five more forms (it is an administrative panel to add info to a database). The other forms work fine, but they don't get any additional fields added, so I can simply check if all the $_POST variables in them are set, and validate each one by one, the problem with the one I mentioned is in my opinion that the $_POST variables are repeatedly checked and this gets confused the whole task, but I can't think of any other way to do it, that is why I appreciate your suggestions (at this point I don't even know if the if statements are nested correctly, I remember working overnight and doing as many changes as I could). The code that handles the form in question is:

else if(isset($_POST['subirLic']) && isset($_POST['BusquedaTerm'])){
// the above statement starts with an else if because it is part of a larger set of       forms being checked---------------------
require_once('libreria.php');
if(isset($_POST['titulo'])) $Titulado = $_POST['titulo'];
if (isset($_POST['EgresoLic'])) {$EgresoLicenciado = $_POST['EgresoLic'];
$EgresoLicencia = new Zend_Validate_Date;
if ($EgresoLicencia->isValid($EgresoLicenciado)) $EgresoLicen = $EgresoLicenciado; else     $errorsLic['fechaEgreso']="Escriba la fecha de egreso de licenciatura, formato AAAA-MM-DD (sólo números separados por guiones)"; }
if (isset($_POST['IngresoLic'])) {$IngresoLicenciado= $_POST['IngresoLic'];
$IngresoLicencia = new Zend_Validate_Date;
if ($IngresoLicencia->isValid($IngresoLicenciado)) $IngresoLicen = $IngresoLicenciado;     else $errorsLic['fechaIngreso']="Escriba la fecha de ingreso a licenciatura, formato AAAA-  MM-DD (sólo números separados por guiones"; } 
if (isset($_POST['titulo']))$Titulado = $_POST['titulo'];
if(isset($_POST['genLic'])) {$GenerLicenciado =$_POST['genLic'];
if($GenerLicenciado !="" && preg_match('/^\d{4}/', $GenerLicenciado)==true) $GenerLic=  $GenerLicenciado;
else  $errorsLic['generacion'] = "Escriba el año de su generación en formato AAAA"; }
$cuentaDep= $_POST['cuentaLic']; //Escribir validación de cuenta ---------------->    pendiente
if(isset($_POST['facLic'])) {$FacultadLic= $_POST['facLic']; 
if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b) {6,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==5)) $FacultLic =  $FacultadLic; 
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b) {5,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==4)) $FacultLic = $FacultadLic;
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){4,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==3)) $FacultLic = $FacultadLic;
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){3,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==2)) $FacultLic = $FacultadLic;
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){2,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==1)) $FacultLic = $FacultadLic;
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){1,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==0)) $FacultLic = $FacultadLic;
else $errorsLic['facultad']= "Escriba la facultad en que estudió la licenciatura"; }
if(isset($_POST['titulo'])) $Titulado = $_POST['titulo'];
if(isset($_POST['CedProfLic'])) {$CedulaLic = $_POST['CedProfLic']; if($CedulaLic !="" && preg_match('/\d{2,9}/', $CedulaLic)==true) $CedLic=$CedulaLic; else      $errorsLic['cedula']="Escriba el número de su cédula profesional";} 
if(isset($_POST['TesisLic'])) {$TesisLicenciado = $_POST['TesisLic']; 
if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){11,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==10)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){10,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==9)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){9,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==8))     $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){8,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==7))  $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){7,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==6)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){6,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==5)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){5,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==4)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){4,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==3)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){3,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==2)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){2,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==1))  $TesisLicen=$TesisLicenciado;
else $errorsLic['tesis']="Escriba el título de su tesis de licenciatura"; 
}

include_once ('conect_gral.php');//importante incluir este archivo en todas las  consultas, y sustituirlo por uno seguro con contraseña;
$registrobuscado=$_POST['BusquedaTerm'];
    if(isset($EgresoLicen)&&isset($IngresoLicen)&&isset($CedLic)&&isset($FacultLic)&&isset($GenerLic)&&isset($cuentaDep)&&isset($TesisLicen)) {
$cons4="SELECT CompletoApellidos FROM seguimientoegresados WHERE CompletoApellidos='registrobuscado'";
$regisLic = "UPDATE datos_licenciatura SET Fecha_Egreso_Lic='$EgresoLicen',   Fecha_Ingreso_Lic='$IngresoLicen', Ced_Profesional_Lic='$CedLic', Facultad_Lic='$FacultLic', Generacion_Lic='$GenerLic', Cuenta_Dependencia='$cuentaDep', Tesis_Lic='$TesisLicen' WHERE Apellido_Licen='$registrobuscado'";
$regisGrad= "UPDATE estudios_grado SET Grado='Licenciado' WHERE Apellidos_Grado='$registrobuscado'";
if($Titulado=='pasante') $regisGrad="UPDATE estudios_grado SET Grado='Pasante' WHERE Apellidos_Grado='$registrobuscado'";
$consultacuatro=mysql_query($cons4);
$registroLic = mysql_query($regisLic);
$registroGrado = mysql_query($regisGrad);
if (!$registroLic || !$registroGrado) echo "Ocurrió un error al registrar los datos en   la Base de Datos Registro Basico"; 
if (!$consultacuatro) {echo "No se ha podido localizar al usuario";}
} else echo "No se han registrado todos los datos";
//captura de datos de pasantes-->
//PRIMERA PARTE DEL FORMULARIO REVISAR
if(isset($_POST['asesor_proy'])) {$AsesorLicenciado = $_POST['asesor_proy'];
if($AsesorLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0- 9]+\D\b){5,}/', $AsesorLicenciado)==true && substr_count($AsesorLicenciado, ' ')==4))    $AsesorLic=$AsesorLicenciado;
else if($AsesorLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){4,}/', $AsesorLicenciado)==true && substr_count($AsesorLicenciado, ' ')==3)) $AsesorLic=$AsesorLicenciado;
else if($AsesorLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){3,}/', $AsesorLicenciado)==true && substr_count($AsesorLicenciado, ' ')==2)) $AsesorLic=$AsesorLicenciado;
else if($AsesorLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){2,}/', $AsesorLicenciado)==true && substr_count($AsesorLicenciado, ' ')==1)) $AsesorLic=$AsesorLicenciado;
else $errorsLic['asesor_pas']="Escriba el nombre del asesor de su proyecto de pasante";}
if(isset($_POST['modalidad'])) $Modalidad =$_POST['modalidad'];
if(isset($_POST['proyecto'])){$TituloProyecto= $_POST['proyecto']; 
if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){10,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==9)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){9,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==8)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){8,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==7)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){7,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==6)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){6,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==5)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){5,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==4)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){4,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==3)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){3,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==2)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){2,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==1)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){1,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==0)) $TitProyecto=$TituloProyecto;
else $errorsLic['proyecto']="Escriba el título de su proyecto de pasante";
}      if(isset($EgresoLicen)&&isset($ingresoLicen)&&isset($CedLic)&&isset($FacultLic)&&isset($GenerLic)&&isset($cuentaDep)&&isset($AsesorLic)&&isset($TitProyecto)&&isset($Modalidad)) {
include_once ('conect_gral.php');//importante incluir este archivo en todas las consultas, y sustituirlo por uno seguro con contraseña;
$registrobuscado=$_POST['BusquedaTerm'];
$cons11="SELECT CompletoApellidos FROM seguimientoegresados WHERE CompletoApellidos='registrobuscado'";
$regisPas="UPDATE datos_licenciatura SET Fecha_Egreso_Lic='$EgresoLicen', Fecha_Ingreso_Lic='$IngresoLicen', Facultad_Lic='$FacultLic', Generacion_Lic='$GenerLic', Cuenta_Dependencia='$cuentaDep', Asesor_Pas='$AsesorLic', Proyecto_Pas='$TitProyecto', Modalidad_Pas='$Modalidad' WHERE Apellido_Licen='$registrobuscado'"; 
$regisGrad= "UPDATE estudios_grado SET Grado='Licenciado' WHERE Apellidos_Grado='$registrobuscado'";
if($Titulado=='pasante') $regisGrad="UPDATE estudios_grado SET Grado='Pasante' WHERE Apellidos_Grado='$registrobuscado'";
$consultaonce=mysql_query($cons11);
$registroPas = mysql_query($regisPas);
$registroGrado = mysql_query($regisGrad);
if (!$registroPas || !$registroGrado) echo "Ocurrió un error al registrar los datos en la Base de Datos";   
if (!$consultaonce) {echo "No se ha podido localizar al usuario";}
}
}

I know this is very large, I could have left out the whole validation statements but maybe there's an error that I can't find, perhaps you would recommend using a Zend_Validation instead, specially because I'm not 100% percent sure those regular expressions behave correctly in any entry situation. Anyway, thanks for your patience. When I run that code using the fields added with javascript (those in the last part of the set of validations) oddly enough it produces the last echo statement in the first set, as if the variables were not set, and finally, if I run the script against the first set of fields in the form, it produces an error in the mysql query and adds nothing to the database.

OK, I posted that large code and kept working on it, I got to handle the queries to the database correctly now (something I should have done earlier if I had paid more attention). Now the only problems are: one, I keep getting an error message of two variables not set if I submit the form with the added fields (I must add that the form not only has additional fields, it also removes other fields previously displayed). But the queries are working alright. I keep thinking the problem is that I want PHP to manage the same form with different fields, do the queries at the same time (within one block of code), but still take a decision as to build the queries depending on which $_POST variables are set. Besides, now I also have the problem of the errors I put into an array not being shown, I guess I'll keep wondering why this happens when I build two queries in the same block, while on the other forms, as I mentioned, I can perfectly validate their entry and show the errors alright.

The code I have ended up with is:

else    if(isset($_POST['EgresoLic'])&&isset($_POST['IngresoLic'])&&isset($_POST['genLic'])&&isset($_POST['facLic'])&&isset($_POST['titulo'])&&isset($_POST['CedProfLic'])&&isset($_POST['TesisLic']) &&isset($_POST['cuentaLic'])&&isset($_POST['BusquedaTerm'])){
require_once('libreria.php');
$EgresoLicenciado = $_POST['EgresoLic'];
if(!empty($EgresoLicenciado)) {
$EgresoLicencia = new Zend_Validate_Date;
if ($EgresoLicencia->isValid($EgresoLicenciado)) $EgresoLicen = $EgresoLicenciado; else     $errorsLic['fechaEgreso']="Escriba la fecha de egreso de licenciatura, formato AAAA-MM-DD (sólo números separados por guiones)";}
$IngresoLicenciado= $_POST['IngresoLic']; 
if(!empty($IngresoLicenciado)) {
$IngresoLicencia = new Zend_Validate_Date;
if ($IngresoLicencia->isValid($IngresoLicenciado)) $IngresoLicen = $IngresoLicenciado;   else $errorsLic['fechaIngreso']="Escriba la fecha de ingreso a licenciatura, formato AAAA-MM-DD (sólo números separados por guiones";}
$GenerLicenciado =$_POST['genLic'];
if(!empty($GenerLicenciado)) {
if($GenerLicenciado !="" && preg_match('/^\d{4}/', $GenerLicenciado)==true) $GenerLic=  $GenerLicenciado;
else  $errorsLic['generacion'] = "Escriba el año de su generación en formato AAAA";}
$cuentaDep= $_POST['cuentaLic']; //Escribir validación de cuenta ---------------->  pendiente
$FacultadLic= $_POST['facLic']; if(!empty($FacultadLic)){
if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){6,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==5)) $FacultLic =     $FacultadLic; 
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){5,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==4)) $FacultLic =    $FacultadLic;
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){4,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==3)) $FacultLic = $FacultadLic;
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){3,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==2)) $FacultLic = $FacultadLic;
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){2,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==1)) $FacultLic = $FacultadLic;
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){1,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==0)) $FacultLic = $FacultadLic;
else $errorsLic['facultad']= "Escriba la facultad en que estudió la licenciatura";}
$Titulado = $_POST['titulo'];
$CedulaLic = $_POST['CedProfLic']; if(!empty($CedulaLic)) {if($CedulaLic !="" && preg_match('/\d{2,9}/', $CedulaLic)==true) $CedLic=$CedulaLic; else     $errorsLic['cedula']="Escriba el número de su cédula profesional";}
$TesisLicenciado = $_POST['TesisLic'];
if (!empty($TesisLicenciado)) { 
if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){11,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==10))     $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){10,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==9))   $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){9,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==8))     $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){8,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==7)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){7,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==6)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){6,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==5)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){5,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==4)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){4,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==3)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){3,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==2)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){2,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==1) || (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){2,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==2)) $TesisLicen=$TesisLicenciado;
else $errorsLic['tesis']="Escriba el título de su tesis de licenciatura";}
include ('conect_gral.php');//importante incluir este archivo en todas las consultas, y sustituirlo por uno seguro con contraseña;
$registrobuscado=$_POST['BusquedaTerm'];
if (!isset($AsesorLic) || !isset($Modalidad)|| !isset($TitProyecto)) {
$cons4="SELECT CompletoApellidos FROM seguimientoegresados WHERE CompletoApellidos='registrobuscado'";
$regisLic = "UPDATE datos_licenciatura SET Fecha_Egreso_Lic='$EgresoLicen', Fecha_Ingreso_Lic='$IngresoLicen', Ced_Profesional_Lic='$CedLic', Facultad_Lic='$FacultLic', Generacion_Lic='$GenerLic', Cuenta_Dependencia='$cuentaDep', Tesis_Lic='$TesisLicen' WHERE Apellido_Licen='$registrobuscado'";
$regisGrad= "UPDATE estudios_grado SET Grado='Licenciado' WHERE  Apellidos_Grado='$registrobuscado'";
if($Titulado=='pasante') $regisGrad="UPDATE estudios_grado SET Grado='Pasante' WHERE Apellidos_Grado='$registrobuscado'";
$consultacuatro=mysql_query($cons4);
$registroLic = mysql_query($regisLic);
$registroGrado = mysql_query($regisGrad);
if (!$registroLic || !$registroGrado) echo "Ocurrió un error al registrar los datos en la Base de Datos Registro Básico";   
if (!$consultacuatro) {echo "No se ha podido localizar al usuario";}
}
//captura de datos de pasantes-->
//PRIMERA PARTE DEL FORMULARIO REVISAR
//captura de datos de pasantes-->
if(isset($_POST['asesor_proy'])) {
$AsesorLicenciado = $_POST['asesor_proy'];
if($AsesorLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){5,}/', $AsesorLicenciado)==true && substr_count($AsesorLicenciado, ' ')==4))     $AsesorLic=$AsesorLicenciado;
else if($AsesorLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){4,}/', $AsesorLicenciado)==true && substr_count($AsesorLicenciado, ' ')==3)) $AsesorLic=$AsesorLicenciado;
else if($AsesorLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){3,}/', $AsesorLicenciado)==true && substr_count($AsesorLicenciado, ' ')==2)) $AsesorLic=$AsesorLicenciado;
else if($AsesorLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){2,}/', $AsesorLicenciado)==true && substr_count($AsesorLicenciado, ' ')==1))    $AsesorLic=$AsesorLicenciado; 
else $errorsLic['asesor_pas']="Escriba el nombre del asesor de su proyecto de pasante";    }
if(isset($_POST['modalidad']))
$Modalidad =$_POST['modalidad'];
if(isset($_POST['proyecto'])) {
$TituloProyecto= $_POST['proyecto'];
if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){10,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==9)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){9,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==8)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){8,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==7)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){7,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==6)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){6,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==5)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){5,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==4)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){4,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==3)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){3,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==2)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){2,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==1)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){1,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==0))  $TitProyecto=$TituloProyecto;
else $errorsLic['proyecto']="Escriba el título de su proyecto de pasante"; }
include ('conect_gral.php');//importante incluir este archivo en todas las consultas, y sustituirlo por uno seguro con contraseña;
$registrobuscado=$_POST['BusquedaTerm'];
if (!empty($AsesorLic) && !empty($Modalidad) && !empty($TitProyecto)){
$cons11="SELECT CompletoApellidos FROM seguimientoegresados WHERE CompletoApellidos='registrobuscado'";
$regisPas="UPDATE datos_licenciatura SET Fecha_Egreso_Lic='$EgresoLicen', Fecha_Ingreso_Lic='$IngresoLicen', Facultad_Lic='$FacultLic', Generacion_Lic='$GenerLic', Cuenta_Dependencia='$cuentaDep', Asesor_Pas='$AsesorLic', Proyecto_Pas='$TitProyecto', Modalidad_Pas='$Modalidad' WHERE Apellido_Licen='$registrobuscado'"; 
$regisGrad= "UPDATE estudios_grado SET Grado='Licenciado' WHERE Apellidos_Grado='$registrobuscado'";
if($Titulado=='pasante') $regisGrad="UPDATE estudios_grado SET Grado='Pasante' WHERE Apellidos_Grado='$registrobuscado'";
$consultaonce=mysql_query($cons11);
$registroPas = mysql_query($regisPas);
$registroGrado = mysql_query($regisGrad);
if (!$registroPas || !$registroGrado) echo "Ocurrió un error al registrar los datos en la Base de Datos Registro Pasante";  
if (!$consultaonce) {echo "No se ha podido localizar al usuario";}
}
}

I must say I do exactly the same verification of the fields on the other forms, with all that messing around with regular expresssions, and on those forms I do get the errors to pass to arrays of errors, while on this form, I guess because I am doing two queries, I can't build the array. Also, I think the part on the first query where I check to see if the variables of the second (optional) fields of the forms are submitted, is overriden by the way the two queries work together, I mean when I put:

if (!isset($AsesorLic) || !isset($Modalidad)|| !isset($TitProyecto))

it actually checks nothing because at that point obviously those variables aren't set, but I can't figure out what to do, I must check if the variables are set if I must mention them, and if I also check if they are empty I will also get a result of true, at that point. How can I actually check if there's no input to the optional fields?

4

2 回答 2

1

在我看来,您应该使用两种不同的形式并以不同的方式命名它们。这样您就可以简单地检查提交的表单。

<form name="firstForm" method="post">
<!-- Input tags go here -->
<input type="submit" name="first-submit" value="First Form Submitted" />
</form>

<form name="secondForm" method="post">
<!-- Input tags go here -->
<input type="submit" name="second-submit" value="Second Form Submitted" />
</form>

对于您的 HTML 示例。然后对于 PHP:

<?php 
if (!empty($_POST['first-submit'])) {
   //do something here;
}

if (!empty($_POST['second-submit'])) {
   //do something here;
}
?>

这样你就知道他们试图提交哪组字段。然后,您可以检查它们是否为空,并确保删除任何坏字符以防止黑客入侵。或者最好做一些准备好的陈述。

于 2012-08-16T17:25:09.433 回答
0

Don't worry PHP is not getting confused if variables are names similarly :)

What's probably happening is that under certain circumstances both if statements return true causing the logic to go haywire.

Feel free to update the whole page and we'll try our best to help you.

Hope this was helpful,

Pesach

于 2012-08-16T17:20:23.517 回答