2012-08-16 95 views
0

我無法驗證基於javascript更改字段的表單。這個想法是,窗體顯示基於單選按鈕選項動態添加的不同字段。但是,PHP似乎基於我所做的邏輯而感到困惑。說我檢查實際設置的字段。我試着編寫一個if,else邏輯來檢查$ _POST變量是否設置了isset,但它不起作用。現在,我的代碼不會被提交整個形式的檢查(檢查的名義提交按鈕),然後,該檢查裏面,我檢查所有其他領域,像這樣:PHP驗證表單在javascript上顯示不同字段

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'])) {} 

的問題是我想檢查第一組字段是否已提交,並檢查是否未提交其他字段(基於javascript函數顯示的字段)。我試圖建立一個決策邏輯,但我都搞砸了,目前我做了如上所述的檢查,然後檢查是否設置了必須進入數據庫查詢的變量,但頁面的行爲非常奇怪。例如,我填充了其他字段,然後PHP嘗試執行爲其他字段集建立的查詢。

我想基於這樣的代碼來處理的決定:

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

和其他決策的代碼應該是這樣的:

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

但正如我所說,顯然,PHP會產生混淆,因爲這兩個選項包含幾乎相同的變量。

好吧,我會粘貼代碼,因爲我一直在看它,只能認爲它是正確的,雖然它顯然不是。它只是頁面上整個代碼的一部分,它包含大約五個表單(這是一個管理面板,用於將信息添加到數據庫中)。其他表單工作正常,但他們沒有添加任何額外的字段,所以我可以簡單地檢查它們中的所有$ _POST變量是否已設置,並逐個驗證,我提到的問題在我的認爲$ _POST變量被重複檢查,這讓整個任務感​​到困惑,但我想不出任何其他方式來做到這一點,這就是爲什麼我感謝你的建議(在這一點上,我甚至不知道如果陳述嵌套正確,我記得在一夜之間工作並儘可能多地進行修改)。一個處理問題的形式的代碼是:

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";} 
} 
} 

我知道這是非常大的,我可能已經離開了整個驗證報表,但也許有,我不能找到一個錯誤,也許你會推薦使用一個Zend_Validation來代替,特別是因爲我不是百分之百確定這些正則表達式在任何條目情況下都能正確運行。無論如何,感謝您的耐心。當我使用添加了javascript的字段(驗證集合的最後一部分)運行該代碼時,它奇怪地產生了第一個集合中的最後一個echo語句,就好像這些變量沒有設置一樣,最後,如果我運行了該腳本反對錶單中的第一組字段,它會在mysql查詢中產生錯誤,並且不會向數據庫添加任何內容。

好的,我發佈了大量代碼並繼續研究它,現在我必須正確處理對數據庫的查詢(如果我已經更多地關注,我應該先完成這些事情)。現在唯一的問題是:其中一個,如果我提交帶有添加字段的表單(我必須補充表單不僅包含附加字段,還會刪除先前顯示的其他字段),我一直收到兩個未設置變量的錯誤消息。但查詢工作正常。我一直在想,問題是我希望PHP使用不同的字段管理相同的表單,同時(在一個代碼塊內)執行查詢,但仍然會根據哪些$ _POST變量來構建查詢被設置。此外,現在我也遇到了我放入數組中的錯誤沒有顯示的問題,我想我會一直想知道爲什麼會發生這種情況,當我在同一個塊中創建兩個查詢時,而在其他形式上,正如我所提到的,我可以完美驗證他們的輸入並顯示錯誤。

我已經結束了與該代碼是:

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";} 
} 
} 

我必須說,我做的正是對其他形式的字段相同的驗證,與所有的定期expresssions瞎搞,並在這些形式我確實將錯誤傳遞給錯誤數組,但在此表單上,我猜是因爲我正在執行兩個查詢,我無法構建數組。另外,我認爲在第一個查詢中我查看錶單的第二個(可選)字段的變量是否被提交的部分被兩個查詢協同工作的方式所覆蓋,我的意思是當我放置時:

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

它實際上沒有檢查什麼,因爲在那一點上顯然那些變量沒有設置,但我不知道該怎麼辦,我必須檢查變量是否設置,如果我必須提及它們,並且如果我也檢查它們是否是空的,在那一點上我也會得到真實的結果。 我怎樣才能真正檢查是否沒有輸入到可選字段?

+0

我不明白你想做什麼,對我來說,似乎你有三個條件你要檢查:一個如果「第一組字段被提交」,第二如果「其他字段從js沒有提交」第三,如果應該執行數據庫查詢。如果您要顯示所有代碼,尤其是如何嵌套if語句,這將非常有幫助。 – 2012-08-16 17:23:26

+0

它看起來像你從$ _POST重新分配給其他變量 - 這取決於你如何分配這些變量,可能會使isset()返回true;我們可以看到變量賦值代碼嗎? – ernie 2012-08-16 17:32:23

+0

@ndm是它的妥協,我會改變它。非常感謝你。如果您之後關心此問題,我會重新發布。 – 2014-07-26 00:51:43

回答

0

不要擔心PHP是不是感到困惑,如果變量名同樣:)

什麼是可能發生的是,在某些情況下這兩個if語句返回true導致邏輯就會失控。

隨時更新整個頁面,我們會盡力幫助您。

希望這是有幫助的,

逾越節

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; 
} 
?> 

這樣你就知道他們試圖提交的字段集合。然後你可以做你的檢查,看看它們是否是空的,並確保你去除任何不良字符,以防止黑客入侵。或者最好做一些準備好的陳述。

+0

是的,我曾想過製作兩種形式,然後用javascript顯示/隱藏它們,但除非我可以使用兩種形式,然後只設置一個提交,也許將第一個值傳遞給第二個與JavaScript,我不想(除了以前的技術太複雜,並取決於JavaScript是積極的)。雖然也許我會最終這樣做。我會發布整個代碼,但是它的大小,希望你們可以幫助我。 @matthias是的,我試圖檢查這3個條件,但它是擊敗我的邏輯。 – 2012-08-16 18:31:50

+0

是的,請做。我很難找出問題所在。在我看來,如果你想把它全部作爲一種形式來處理,那麼你正在以正確的方式處理它,儘管我可能不會在一個大的聲明中這樣做,就像我會單獨做每一個一樣,然後設置一個局部變量在將其放入查詢之前測試它是否爲空。如果它們的格式相同,則所有值都會返回,爲空或以其他值。 – Roloc 2012-08-16 20:19:20

+0

我發現有趣的是分別處理每個變量,但我現在可以做的是我最好的拍攝。如果您看到我發佈的代碼,您可以看到我盡最大努力處理每個字段對每個字段進行大量檢查,但是我必須將所有內容都放在一個塊中,因爲還有其他表單正在同一個腳本中處理。也許你可以建議一個替代語法? – 2012-08-17 03:40:41