Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] No consigo validar los campos del formulario

Estas en el tema de No consigo validar los campos del formulario en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 05/07/2013, 08:42
 
Fecha de Ingreso: junio-2013
Mensajes: 29
Antigüedad: 10 años, 10 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
  #2 (permalink)  
Antiguo 05/07/2013, 09:44
 
Fecha de Ingreso: julio-2013
Mensajes: 3
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: No consigo validar los campos del formulario

Una pregunta que metodo utilizas para la recepcion de los datos del formulario?
  #3 (permalink)  
Antiguo 05/07/2013, 14:15
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: No consigo validar los campos del formulario

De manera superficial (ya que entregas código desordenado) tu problema esta en que no detienes el flujo de trabajo de tu script al encontrar algún error en el formulario, simplemente imprimes un script JS, pero olvidas que PHP primero termina la ejecución del archivo PHP y luego envía la salida generada hacia el navegador, por lo tanto en el momento que el navegador recibe y ejecuta tu alert() PHP ya ejecuto todo el código que sigue a las validaciones, en todo caso deberías usar una variable como flag, donde si encuentra un error en la validación cambie su valor (de true a false por ejemplo), y al final, donde vas a hacer el insert primero validar la variable y ver que paso las validaciones correctamente, en caso contrario no realizar ninguna acción...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #4 (permalink)  
Antiguo 05/07/2013, 15:22
 
Fecha de Ingreso: noviembre-2011
Ubicación: Zulia/Maracaibo
Mensajes: 24
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: No consigo validar los campos del formulario

Utiliza un
Código PHP:
Ver original 
para que no siga ejecutándose el código php, otra cosa es que no es seguro validar los datos usando solo js, que tal si el usuario tiene deshabilitado el js en su navegador? como mostraría la validación??? o en el peor de los casos que sea un usuario mal intencionado???
Espero te sirva este concejo.
y si te sirve.. un + no está de más..! jeje, saludos.
  #5 (permalink)  
Antiguo 08/07/2013, 01:15
 
Fecha de Ingreso: junio-2013
Mensajes: 29
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: No consigo validar los campos del formulario

Cita:
Iniciado por Nemutagk Ver Mensaje
De manera superficial (ya que entregas código desordenado) tu problema esta en que no detienes el flujo de trabajo de tu script al encontrar algún error en el formulario, simplemente imprimes un script JS, pero olvidas que PHP primero termina la ejecución del archivo PHP y luego envía la salida generada hacia el navegador, por lo tanto en el momento que el navegador recibe y ejecuta tu alert() PHP ya ejecuto todo el código que sigue a las validaciones, en todo caso deberías usar una variable como flag, donde si encuentra un error en la validación cambie su valor (de true a false por ejemplo), y al final, donde vas a hacer el insert primero validar la variable y ver que paso las validaciones correctamente, en caso contrario no realizar ninguna acción...
Me explicas a que te refieres con lo de que "entrego codigo desordenado"? a mi parecer lo tengo bien ordenado :S

y.. eso de la variable flag? me pones un ejemplo? porque no acavo de entender a que donde quieres que la ponga
  #6 (permalink)  
Antiguo 08/07/2013, 01:21
 
Fecha de Ingreso: junio-2013
Mensajes: 29
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: No consigo validar los campos del formulario

Cita:
Iniciado por aesu Ver Mensaje
Utiliza un
Código PHP:
Ver original 
para que no siga ejecutándose el código php, otra cosa es que no es seguro validar los datos usando solo js, que tal si el usuario tiene deshabilitado el js en su navegador? como mostraría la validación??? o en el peor de los casos que sea un usuario mal intencionado???
Espero te sirva este concejo.
y si te sirve.. un + no está de más..! jeje, saludos.
entonces si con js no me sirve, de que manera arias tu la validación de datos?,
me gustaría hacerlo como queda en esta web:

[URL="http://www.copisteriaimatge.com/?q=node/1058"]http://www.copisteriaimatge.com/?q=node/1058[/URL]

que si un campo REQUERIDO pierde el focus i no esta correctamente rellenado, te cambia y te indica que esta mal, INCLUSO ANTES DE APRETAR EL SUMBIT

pero ahora mismo no se como lo han echo :(
  #7 (permalink)  
Antiguo 08/07/2013, 15:38
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: No consigo validar los campos del formulario

Cita:
Iniciado por CopySat Ver Mensaje
Me explicas a que te refieres con lo de que "entrego codigo desordenado"? a mi parecer lo tengo bien ordenado :S

y.. eso de la variable flag? me pones un ejemplo? porque no acavo de entender a que donde quieres que la ponga
Esta desordenado porque no indicas que hace cada código, uno tiene que leer el código eh imaginar que es lo que hace y en que momento, un código ordenado se entiende el flujo de datos sin tener que estar leyendo y analizando todo el código expuesto, principalmente porque no indicas que archivo es ni que posición tiene en el flujo del sitio...

Lo de la variable flag es muy sencillo, te dejo un ejemplo...

Código PHP:
Ver original
  1. <?php
  2.  
  3. $errores = array();
  4.  
  5. if (empty($_POST['micampo'])) {
  6.      $errores[] = 'Tienes que rellenar "micampo"';
  7. }
  8.  
  9. if (count($errores) <= 0) {
  10.      $query="
  11. INSERT INTO tecnicos
  12. (ID_Empleado,Pass,Nombre,Telefono,Email)
  13. VALUES
  14. ('".$ID_Empleado."','".$Pass."','".$Nombre."','".$Telefono."','".$Email."')
  15. ";
  16.      // Hacemos la consulta  
  17.      mysql_query ($query) or die ("error3 <br>".mysql_error());
  18.      // Cierra la conexión con la base de datos
  19.      mysql_close($conex);
  20. }else {
  21.      foreach($errores as $error) {
  22.           echo '<p>'.$error.'</p>';
  23.      }
  24. }

Cita:
Iniciado por CopySat
que si un campo REQUERIDO pierde el focus i no esta correctamente rellenado, te cambia y te indica que esta mal, INCLUSO ANTES DE APRETAR EL SUMBIT
Eso se hace con javascript usando el evento onchange() de cada input, al cambiar el valor se manda a llamar una función que comprueba el valor eh indica si es valido o no, aparte, de nuevo se usa una variable flag donde si algún campo tiene un valor erroneo no permite el envío del formulario usando el evento onsubmit() del form en cuestión...

Pero aún usando este método es importante que la validación se haga SIEMPRE en PHP, las validaciones con Javascript son secundarias y únicamente se usan para evitar hacer perder tiempo al usuario...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 09/07/2013, 04:33
 
Fecha de Ingreso: junio-2013
Mensajes: 29
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: No consigo validar los campos del formulario

Cita:
Iniciado por Nemutagk Ver Mensaje
Esta desordenado porque no indicas que hace cada código, uno tiene que leer el código eh imaginar que es lo que hace y en que momento, un código ordenado se entiende el flujo de datos sin tener que estar leyendo y analizando todo el código expuesto, principalmente porque no indicas que archivo es ni que posición tiene en el flujo del sitio...

Lo de la variable flag es muy sencillo, te dejo un ejemplo...

Código PHP:
Ver original
  1. <?php
  2.  
  3. $errores = array();
  4.  
  5. if (empty($_POST['micampo'])) {
  6.      $errores[] = 'Tienes que rellenar "micampo"';
  7. }
  8.  
  9. if (count($errores) <= 0) {
  10.      $query="
  11. INSERT INTO tecnicos
  12. (ID_Empleado,Pass,Nombre,Telefono,Email)
  13. VALUES
  14. ('".$ID_Empleado."','".$Pass."','".$Nombre."','".$Telefono."','".$Email."')
  15. ";
  16.      // Hacemos la consulta  
  17.      mysql_query ($query) or die ("error3 <br>".mysql_error());
  18.      // Cierra la conexión con la base de datos
  19.      mysql_close($conex);
  20. }else {
  21.      foreach($errores as $error) {
  22.           echo '<p>'.$error.'</p>';
  23.      }
  24. }



Eso se hace con javascript usando el evento onchange() de cada input, al cambiar el valor se manda a llamar una función que comprueba el valor eh indica si es valido o no, aparte, de nuevo se usa una variable flag donde si algún campo tiene un valor erroneo no permite el envío del formulario usando el evento onsubmit() del form en cuestión...

Pero aún usando este método es importante que la validación se haga SIEMPRE en PHP, las validaciones con Javascript son secundarias y únicamente se usan para evitar hacer perder tiempo al usuario...
pero.. esque pienso que si que lo tengo ordenado, ya que os digo:

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:

2º el formulario, propiamente dicho, para que el usuario pueda rellenarlo, el codigo es este:

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:

el 4º paso es, insertar los datos en la base de datos, con este codigo:


que son 4 archivos,
el primero es: ./Autorelleno/Tecnico.php
el segundo es: ./Nuevo/Tecnico.php
el tercero es: ./Comprobacion/Tecnico.php
y el cuarto es: ./Insertar/Tecnico.php

que es como se ejecuta, 1º busca datos en la base, 2º enseña el formulario 3º comprueba datos y 4º insera en la base de datos...

dicho esto: donde esta mi desorden?

en cuanto a la variable "flag"

entiendo que seria un array de errores que si esta vacio me genera el insert i si hay algun dato falla, no? seria como una variable de control, eso de "flag" no es por el tipo de variable sino por la manera en que se usa, o me ekiboco?
  #9 (permalink)  
Antiguo 09/07/2013, 04:41
 
Fecha de Ingreso: junio-2013
Mensajes: 29
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: No consigo validar los campos del formulario

bueno después de unos pequeños retoques eh conseguido que me funcione mas o menos

OS COMENTO:

el 1º archivo: /AUTORELLENO/TECNICO.PHP
(QUE ES EL QUE COJE LOS DATOS DE LA BASE DE DATOS Y ME RELLENA EL CAMPO ID)

quedaria asi:
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)
?>
el 2º archivo: /NUEVO/TECNICO.PHP
(QUE ES EL FORMULARIO QUE TENEMOS QUE RELLENAR)

quedaria asi:
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/Comprobaciones/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> 
  <!-- cierra el codigo php -->
	<!-- end .container -->
</body>
</html>
i el 3º archivo : /COMPROBACIONES/TECNICO.PHP
(ESTE ES EL QUE MAS EH MODIFICADO, UNIFICANDO EL DE LAS COMPROBACIONES Y EL INSERTAR EN LA BASE DE DATOS)

y quedaria asi
Código:
<?php
include("../../Config/config.php") ;

$errores = array();
 
if (empty($_POST['Pass'])) {
     $errores[] = 'Falta introduir un "Pass"';
}
if (empty($_POST['Nombre'])) {
     $errores[] = 'Falta indicar el "Nom"';
}
if (empty($_POST['Email'])) {}
	else{ 
	if (!preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/", $Email)) {
     $errores[] = 'La direccio de '.$Email.' no esta ben escrita';		
	}
	}

 
if (count($errores) <= 0) {

$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
$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');
}else {

     foreach($errores as $error) {
		 echo '<p>'.$error.'</p>';
		 ?>
		<script type="text/javascript">

		alert(<?php '<p>'.$error.'</p>' ?>);
		</script>
		<?php
     }
	 ?>
	<button id="GoBack" type="button" onclick="history.back()" >Tornar</button>
	<?php

}

DE ESTA MANERA,
1º RECUPERA LOS DATOS DE LA BASE,
2º EL USUARIO RELLENA EL FORMULARIO,
3º AL DARLE AL SUMBIT, SE EJECUTA LAS COMPROBACIONES:
I ESTAN MAL, MUESTRA UNA PAGINA INDICANDO QUE CAMPOS FALTAN
(Y UN BOTON PARA VOLVER AL FORMULARIO PARA PODER RELLENAR LO QUE FALTA PERO SIN LIMPIAR LOS CAMPOS RELLENADOS CON ANTERIORIDAD)
I SI ESTAN BIEN HACE LA INSERCION EN LA BASE DE DATOS


PARA ACABAR, SIMPLEMENTE MUESTRO EL: /LOG/TECNICO.PHP PARA VERCOMO HA QUEDADO LA BASE DE DATOS
  #10 (permalink)  
Antiguo 09/07/2013, 04:50
 
Fecha de Ingreso: junio-2013
Mensajes: 29
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: No consigo validar los campos del formulario

ahora solo tengo 2 problemas:

1º si os fijais en el 3º archivo tengo 1 alert en el foreach, y me gusta y sale bien, pero el mensaje del alert que tendria que ser el $error, e indicar el mensaje que hay en el array error 1 por cada mensaje que corresponda, pero siempre me sale: UNDEFINED

2º no consigo que la comprobacion del e-mail me salga correctamente


si consigo arreglar estas 2 cosas, pretendo, quitar los "echo" que muestran por pantalla los campos donde falla y el boton que te devuelve al formulario;

para dejar solamente los alert y al cerrar el ultimo alert necesario, que nos devuelva automaticamente al formulario

i de esta manera ya lo tendria como me interesa

dicho esto:
si de esta manera me funciona, los JS de los eventos OnChange() de los input, ya no me serian necesarios puesto que:
si no estan los datos que pido ya no me hace el insert sin que tenga que "prohibirme" apretar el "Sumbit" como comentava Nemutagk con las variables "FLAG"
  #11 (permalink)  
Antiguo 09/07/2013, 08:23
 
Fecha de Ingreso: junio-2013
Mensajes: 29
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: No consigo validar los campos del formulario

aver: PROBLEMA 2 RESUELTO:

TENIA PUESTO:

Código:
if (empty($_POST['Email'])) {}
	else{ 
	if (!preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/", $Email )) {
     $errores[] = 'La direccio de '. $Email .' no esta ben escrita';		
	}
	}
que pasaba? pues que estava intenando usar la variable $Email SIN AVERLA DEFINIDO.... VAYA FALLO MAS TONTO !

SOLUCION:

Código:
if (empty($_POST['Email'])==FALSE) {
	if (!preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/", $_POST['Email']))
	 {
     $errores[] = 'La direccio de '.$_POST['Email'].' no esta ben escrita';	
	 }
	}

una de dos,
declaramos la variable con $Email = $_POST['Email']
o
como yo eh echo, directamente usamos el metodo post con la variable Email y soleventado

ahora a por el problema de que los alert no recojen bien el valor del array $errores

Etiquetas: campos, formulario, html, mysql, registro, select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:52.