Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/07/2013, 08:42
CopySat
 
Fecha de Ingreso: junio-2013
Mensajes: 29
Antigüedad: 10 años, 11 meses
Puntos: 0
No consigo validar los campos del formulario

hola a todos

tengo un problema al intentar validar los datos de mi formulario

Antes que nada os indico que:

mi formulario consta de 4 partes:

1º Mediante PHP busco en la base de datos el ultimo registro y ponerme el id correspondiente en el formulario, eso lo consigo con este codigo:

Código:
<?php
//Parte de la Configuracion
include("../Config/config.php") ;
$conex=mysql_connect($server, $db_user, $db_pass) or die ("error1".mysql_error());
$bd=mysql_select_db($database) or die ("error2".mysql_error()); 
// Con estas sentencias SQL evitaremos una inyección SQL
// Con esta sentencia SQL Creamos la consulta
$query="
SELECT ID_Empleado
From tecnicos
Order by ID_Empleado DESC 
Limit 1";
// Hacemos la consulta  
$result= mysql_query ($query) or die ("error3 <br>".mysql_error());
$resultado = mysql_result ($result, 0); //Extraemos el valor que nos interesa.
// Cierra la conexión con la base de datos 
mysql_close($conex); 
header('Location: ../New/Tecnico.php?id='.$resultado)
?>
2º el formulario, propiamente dicho, para que el usuario pueda rellenarlo, el codigo es este:

Código:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<!-- TemplateBeginEditable name="doctitle" -->
<LINK REL="Shortcut Icon" HREF="../Config/Imagenes/Copy.ico"> 
<title>Copisteria Imatge - AFEGIR</title>
<!-- TemplateEndEditable -->
<!-- TemplateBeginEditable name="head" -->
<!-- TemplateEndEditable -->
<link rel="stylesheet" type="text/css" href="../Config/CSS/HTML5_thrColFixHdr.css"/>
<link rel="stylesheet" type="text/css" href="../Config/CSS/Unificacion.css"/>
<link rel="stylesheet" type="text/css" href="../Config/CSS/formCssSINREPETICIONES.css"/>
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>

<body>
	<div class="container">
  		<form class="jotform-form" action="../Insert/Tecnico.php" method="post" name="Form_31484046338354" id="31484046338354" accept-charset="utf-8">
        <div class="header">
          <h1>AFEGIR - TÈCNIC
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <img src="../Config/Imagenes/Copy.jpg" alt="Copisteria Imatge" width="309" height="114" id="Insert_logo" style="background-color: #C6D580;" /></h1>

        <!-- end .header --></div>
        
		<div class="content">
        <script src="../Config/JS/jquery-1.8.0.min.js" type="text/javascript"></script>
		<script src="../Config/JS/maskedinput.min.js" type="text/javascript"></script>
		<script src="../Config/JS/jotform.js" type="text/javascript"></script>
		<script type="text/javascript">
		JotForm.init(function(){
      		JotForm.description('input_4', 'Nom del Empelat');			
      		JotForm.description('input_3', 'Password');	
      		JotForm.description('input_5', 'Telèfon del Empelat');		
      		JotForm.setPhoneMaskingValidator( 'input_5_full', ' #########' );			
			 $('input_6').hint('ex: [email protected]');
      		JotForm.description('input_6', 'E-Mail');
      		JotForm.alterTexts({"alphabetic":"Aquest camp solament pot contenir lletres",
			                    "alphanumeric":"Aquest camp solament pot contenir lletres i *numeros",
								"confirmClearForm":"Estas segur que desitges netejar el formulari",
								"confirmEmail":"Correu electrònic no coincideix",
								"email":"*Direccion de correu INVALIDA",
								"gradingScoreError":"Puntuació total de només ha de ser menor o igual a",
								"incompleteFields":"Els camps requerits *estan incomplets. *Porfavor *completelos abans de continuar",
								"inputCarretErrorA":"L'entrada no pot ser menor que el valor mínim:",
								"inputCarretErrorB":"L'entrada ha de ser menor al valor:",
								"lessThan":"La seva puntuació ha de ser menor que o igual a",
								"maxDigitsError":"El màxim de dígits permès és",
								"numeric":"Aquest camp solament pot contenir *numeros",
								"pleaseWait":"*Porfavor esperi...",
								"required":"Aquest Camp és Obligatori",
								"requireEveryRow":"Es requereix que cada fila.",
								"requireOne":"Almenys un camp requerit.",
								"submissionLimit":"Ho sento! Només es permet una entrada.<*br>Múltiples enviaments estan desactivats per a aquest formulari.",
								"uploadExtensions":"Només pot carregar arxius següents:",
								"uploadFilesize":"Grandària de l'arxiu no pot ser major que:"});
	   });
       </script>
       <div class="form-all">
         <ul class="form-section">
          <li class="form-line form-line-column" id="id_1">
        		<label class="form-label-top" id="label_1" for="input_1">ID de L'empleat<span class="form-required">*</span></label>
		        <div id="cid_1" class="form-input-wide">
			<input type="text" class=" form-textbox validate[required, Alphabetic]" data-type="input-textbox" id="input_1" name="ID_Empleado" size="30" value="<?=$_GET['id']+1?>" readonly/>
                </div>
	      </li> 
          <li class="form-line form-line-column" id="id_4">
        	<label class="form-label-top" id="label_4" for="input_4">Nom de L'empleat<span class="form-required">*</span></label>
        		<div id="cid_4" class="form-input-wide">
        			<span class="form-sub-label-container">
                        <input type="text" class=" form-textbox" data-type="input-textbox" id="input_4" name="Nombre" size="30" />
                		
               		</span>
        		</div>
      	</li>
	      <li class="form-line form-line-column" id="id_3">
          		<label class="form-label-top" id="label_3" for="input_3">Password<span class="form-required">*</span></label>
		    <div id="cid_3" class="form-input-wide">
        		<input type="password" class=" form-textbox validate[required, Numeric]" data-type="input-textbox" id="input_3" name="Pass" size="30" required />
        	</div>
     	 </li>

      	<li class="form-line form-line-column" id="id_5">
        	<label class="form-label-top" id="label_5" for="input_5"> Telèfon </label>
            <div id="cid_13" class="form-input-wide">
				<input data-type="mask-number" class="mask-phone-number form-textbox" type="tel" name="Telefono" id="input_5_full" autocomplete="off">
            	<label class="form-sub-label" for="input_5_full"> </label>
	        </div>
    	</li>
      	<li class="form-line form-line-column" id="id_6">
        	<label class="form-label-top" id="label_6" for="input_6"> E-Mail </label>
	        <div id="cid_" class="form-input-wide">
    	      <input type="email" class=" form-textbox validate[required, Email]" id="input_6" name="Email" size="30" />
			</div>
      	</li>
    </ul>
     
   
      <br><br><br><br><br>
		<!-- end .content --></div>
        
		<div class="footer">
	   <button id="input_2" type="Enviar" class="form-submit-button" >Enviar Formulari</button>
	    &nbsp;
   		<button id="input_reset_2" type="reset" class="form-submit-reset" >Natejar Formulari</button>
  	  <!-- end .footer --></div>
        </form> 
	<!-- end .container -->
</body>
</html>
3º el codigo PHP que me tendría que validar que los campos que me interesan, sean obligatorios, y tb el comprobar que el correo este bien escrito, el codigo es:

Código:
<?php
if($Nombre==NULL) {
?>
<script>
alert("Falta introdui el Nom de l'Empleat");
history.back();
</script>
<?php
}
if($Pass==NULL) {
?>
<script>
alert("Falta introdui el Password de l'Empleat");
history.back();
</script>
<?php
}
if($Email==NULL){}
	else{
if (!preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/", $Email)) {
?>
<script type="text/javascript">
alert("El Mail <?php echo $_POST['Email']; ?> está malament escrit.");
history.back();
</script>
<?php
}}
?>
y si todo funciona bien
el 4º paso es, insertar los datos en la base de datos, con este codigo:
Código:
<?php
//Parte de la Configuracion
include("../Config/config.php") ;
$conex=mysql_connect($server, $db_user, $db_pass) or die ("error1".mysql_error());
$bd=mysql_select_db($database) or die ("error2".mysql_error()); 
// Con estas sentencias SQL evitaremos una inyección SQL
$ID_Empleado = $_POST['ID_Empleado'];
$Pass =$_POST['Pass'];
$Nombre =$_POST['Nombre'];
$Telefono =$_POST['Telefono'];
$Email =$_POST['Email'];
// Con esta sentencia SQL Creamos la consulta
include("Comprobaciones/Tecnico.php") ;
$query="
INSERT INTO tecnicos 
(ID_Empleado,Pass,Nombre,Telefono,Email)
VALUES 
('".$ID_Empleado."','".$Pass."','".$Nombre."','".$Telefono."','".$Email."')
";
// Hacemos la consulta  
mysql_query ($query) or die ("error3 <br>".mysql_error());
// Cierra la conexión con la base de datos 
mysql_close($conex); 
header('Location: ../Log/Tecnico.php');
?>

Vale, entonces: si el ID_Empleado esta en la base de datos, me salta un fallo, I ENTONCES SI QUE ME SALTAN LOS ALERTS DE QUE FALTAN LOS DATOS QUE PIDO

PEROOOOO

Si el ID_Empleado es distinto a los de la base de datos, no solo no me salta ninguna alerta, sino que me inserta los datos en la tabla (aunque los que yo quería requerir estén vacios)

QUE ME FALLA?
PORQUE NO SE EJECUTA CUANDO DEVE? :S

ya eh estado mirando por aqui, i solo eh encontrado, como validar los datos
NO el porque me lo hace en otro momento

Muchisimas gracias a todos
espero que aya sido clara mi explicacion y que la solucion sea sencilla

un saludo a todos

ATT: CopySat