Foros del Web » Programando para Internet » Javascript »

Sólo para expertos (Problemas con validación de formulario hecho en DW)

Estas en el tema de Sólo para expertos (Problemas con validación de formulario hecho en DW) en el foro de Javascript en Foros del Web. Buenas Noches foreros, gracias por leer mi nota tengo un pequeño problema con la validación de un formulario hecho en DW y por eso acudo ...
  #1 (permalink)  
Antiguo 12/02/2009, 20:31
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Busqueda Sólo para expertos (Problemas con validación de formulario hecho en DW)

Buenas Noches foreros, gracias por leer mi nota tengo un pequeño problema con la validación de un formulario hecho en DW y por eso acudo a ustedes para ver si me ayudan, hace bien la validación pero al darle a aceptar hace la consulta mysql dando un error de columnas nulas (null), a continuación pego el código:

insertar_proveedor.php

Código PHP:
.
.
Codigo Php
.
.
<script type="text/javascript">
function MM_validateForm() { //v4.0
  if (document.getElementById){
    var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
      if (val) { nm=val.name; if ((val=val.value)!="") {
        if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
          if (p<1 || p==(val.length-1)) errors+='- '+nm+' debe contener un correo válido.\n';
        } else if (test!='R') { num = parseFloat(val);
          if (isNaN(val)) errors+='- '+nm+' debe contener sólo números.\n';
          if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
            min=test.substring(8,p); max=test.substring(p+1);
            if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
      } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' es requerido.\n'; }
    } if (errors) alert('El(Los) siguiente(s) error(es) ha(n) ocurrido:\n'+errors);
    document.MM_returnValue = (errors == '');
} }
</script>
<form action="<?php echo $editFormAction?>" method="post" name="form1" id="form1" onsubmit="MM_validateForm('rif2','','RisNum','rif3','','RisNum','nombre','','R','direccion','','R','contacto','','R','telefono','','RisNum','fax','','RisNum','celular','','RisNum','correo','','RisEmail');return document.MM_returnValue">
  <p>&nbsp;</p>
  <table align="center">
    <tr valign="baseline">
      <td width="79" align="right" nowrap="nowrap"><strong>RIF:</strong></td>
      <td width="652"><label>
        <select name="rif1" id="rif1">
          <option>J</option>
          <option>V</option>
          <option>G</option>
        </select>
      </label>
        -
      
      <span id="sprytextfield1">
      <label>
      <input name="rif2" type="text" id="rif2" value="" size="20" maxlength="8" />
      </label>
      <span class="textfieldRequiredMsg">Este valor es requerido.</span></span>
      -
      <label>
      
      <span id="sprytextfield2">
      <input name="rif3" type="text" id="rif3" size="4" maxlength="1" />
      <span class="textfieldRequiredMsg">Este valor es requerido.</span></span></label></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"><strong>Nombre:</strong></td>
      <td>
        <span id="sprytextfield3">
        <label>
        <input name="nombre" type="text" id="nombre" value="" size="38" />
        </label>
      <span class="textfieldRequiredMsg">Este valor es requerido.</span></span></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"><strong>Especialidad:</strong></td>
      <td><label>
        <select name="especialidad" id="especialidad">
          <?php
do {  
?>
          <option value="<?php echo $row_Activos_Especialidad['especialidad']?>"><?php echo $row_Activos_Especialidad['especialidad']?></option>
          <?php
} while ($row_Activos_Especialidad mysql_fetch_assoc($Activos_Especialidad));
  
$rows mysql_num_rows($Activos_Especialidad);
  if(
$rows 0) {
      
mysql_data_seek($Activos_Especialidad0);
      
$row_Activos_Especialidad mysql_fetch_assoc($Activos_Especialidad);
  }
?>
        </select>
        <a href="insertar_especialidad.php" target="_self">Agregar/Modificar/Eliminar Especialidad(es)</a></label></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"><strong>Dirección:</strong></td>
      <td>
        <span id="sprytextfield4">
        <label>
       <input name="direccion" type="text" id="direccion" value="" size="38" />
        </label>
      <span class="textfieldRequiredMsg">Este valor es requerido.</span></span></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"><strong>Contacto:</strong></td>
      <td>
        <span id="sprytextfield5">
        <label>
        <input name="contacto" type="text" id="contacto" value="" size="38" />
        </label>
      <span class="textfieldRequiredMsg">Este valor es requerido.</span></span></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"><strong>Telefono:</strong></td>
      <td>
        <span id="sprytextfield6">
        <label>
        <input name="telefono" type="text" id="telefono" value="" size="38" />
        </label>
      <span class="textfieldRequiredMsg">Este valor es requerido.</span></span></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"><strong>Fax:</strong></td>
      <td>
        <span id="sprytextfield7">
        <label>
        <input name="fax" type="text" id="fax" value="" size="38" />
        </label>
      <span class="textfieldRequiredMsg">Este valor es requerido.</span></span></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"><strong>Celular:</strong></td>
      <td>
        <span id="sprytextfield8">
        <label>
        <input name="celular" type="text" id="celular" value="" size="38" />
        </label>
      <span class="textfieldRequiredMsg">Este valor es requerido.</span></span></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"><strong>Correo:</strong></td>
      <td>
        <span id="sprytextfield9">
        <label>
        <input name="correo" type="text" id="correo" value="" size="38" />
        </label>
      <span class="textfieldRequiredMsg">Este valor es requerido.</span></span></td>
      <input name="rif" type="hidden" id="rif" />
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">&nbsp;</td>
      <td><input name="Submit" type="submit" value="Insertar Registro" onClick="javascript:procesar();"/>
      <label>
      <input type="reset" name="Reset" id="button" value="Reestablecer" />
      </label></td>
    </tr>
  </table>
  <input type="hidden" name="MM_insert" value="form1" />
</form>
.
.
Codigo Php
.
.
  #2 (permalink)  
Antiguo 12/02/2009, 21:44
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Sólo para expertos (Problemas con validación de formulario hecho en DW)

Sin ser experto puedo decirte que tu problema no tiene que ver con javascript. Probablemente tenga que ver con la estructura de tu tabla mysql. Es posible que estés intentando insertar elementos nulos en campos definidos como not null. Definilos como null y probá nuevamente. Y recordá que la verdadera validación (en caso de que algún campo deba completarse obligatoriamente) debe hacerse con lenguaje de servidor.

PD: La frase "Sólo para expertos", más allá de no ser nada elegante, es poco astuta.

Última edición por Panino5001; 12/02/2009 a las 21:55
  #3 (permalink)  
Antiguo 12/02/2009, 22:39
 
Fecha de Ingreso: diciembre-2007
Mensajes: 927
Antigüedad: 16 años, 5 meses
Puntos: 12
Respuesta: Sólo para expertos (Problemas con validación de formulario hecho en DW)

como dijo panino no soy nada experto en JS pero con un pcoo de logica y pasiencia puedo sacar las cosas y pss minimo poner copiado el error que te da

salu2
  #4 (permalink)  
Antiguo 13/02/2009, 07:13
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Respuesta: Sólo para expertos (Problemas con validación de formulario hecho en DW)

Bueno amigos, supuestamente entiendo q la funcion de JS es bloquear el formulario si los valores no cumplen lo requerido.

Si se cumple

Enviar Formulario

Si no se cumple

Devolver al formulario

Ok, en este sentido la validacion la hace, te dice que faltan valores, pero al darle a aceptar al mensaje que sale, este de igual forma envia el formulario, y debido a que las columnas de los campos no pueden ser nulas (null) este arroja el error de "Column 'nombre' cannot be null" es decir insisto y creo q el error esta en las funciones JS.

Saludos
  #5 (permalink)  
Antiguo 13/02/2009, 07:21
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Sólo para expertos (Problemas con validación de formulario hecho en DW)

En todo caso el problema estará en la función procesar, que estás llamando cuando se produce el evento onclick sobre el botón de submisión, pero que no incluiste en el fragmento de código que colocaste.
  #6 (permalink)  
Antiguo 13/02/2009, 08:51
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Respuesta: Sólo para expertos (Problemas con validación de formulario hecho en DW)

Utilizo la funcion on Submit a continuacion la pongo:

Código HTML:
<form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1" onsubmit="MM_validateForm('rif2','','RisNum','rif3','','RisNum','nombre','','R','direccion','','R','contacto','','R','telefono','','RisNum','fax','','RisNum','celular','','RisNum','correo','','RisEmail');return document.MM_returnValue"> 
  #7 (permalink)  
Antiguo 13/02/2009, 09:12
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Sólo para expertos (Problemas con validación de formulario hecho en DW)

Y esto que hace entonces?
Código javascript:
Ver original
  1. <input name="Submit" type="submit" value="Insertar Registro" onClick="javascript:procesar();"/>
  #8 (permalink)  
Antiguo 13/02/2009, 09:32
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Respuesta: Sólo para expertos (Problemas con validación de formulario hecho en DW)

Um creo q esta de mas :s lo que hace el estres que no te deja leer los detalles! gracias, era eso!
  #9 (permalink)  
Antiguo 13/02/2009, 09:40
Avatar de p3rikl3s  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 216
Antigüedad: 15 años, 3 meses
Puntos: 9
Respuesta: Sólo para expertos (Problemas con validación de formulario hecho en DW)

Al parecer el problema esta en que llamas la función de validación desde el form en vez de usarlo en el boton de envio. Deberia estar en el evento Onclick del boton:

Código PHP:
<input id="grabar" type="submit" name="grabar" value="Insertar Registro" onClick="MM_validateForm('rif2','','RisNum','rif3','','RisNum','nombre','','R','direccion','','R','contacto','','R','telefono','','RisNum','fax','','RisNum','celular','','RisNum','correo','','RisEmail');return document.MM_returnValue"
Saludos.
  #10 (permalink)  
Antiguo 13/02/2009, 09:57
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 2 meses
Puntos: 15
Respuesta: Sólo para expertos (Problemas con validación de formulario hecho en DW)

Cita:
Iniciado por Edig Ver Mensaje
como dijo panino no soy nada experto en JS pero con un pcoo de logica y pasiencia puedo sacar las cosas y pss minimo poner copiado el error que te da

salu2
No es mi intención ofender: Pero la abreviatura pss es algo insultante en mi país, y 'Paciencia ', 'lógica', 'mínimo' tiene errores de ortografía. Y el termino Solo expertos también fue uno de mis errores en mis inicios en este foro... y que por lo visto crea incomodidad entre los lectores.

Bueno al grano que para eso estamos no para criticar los métodos de otros(Mi propio llamado de atención).

No veo problemas JavaScript aparte de lo poco organizado de tu código...Pero, y al parecer en tu función no existe nada que este alterando tus valores... Pero yo probaría enviar los valores retirando el onsubmit a ver que pasa? Y el onsubmit ya prácticamente te hace el envío... y tu validación entra en conflicto con éste procedimiento.

Me pregunto por esto?
<?php echo $editFormAction; ?>

(null) Si es este tu resultado, lo mas probable es que algún parámetro no se está enviando o retomando correctamente en tu variable: $editFormAction... O en tu tabla no existe algun campo que estas intentando insertar...

Última edición por SPAWN3000; 13/02/2009 a las 10:10
  #11 (permalink)  
Antiguo 13/02/2009, 13:47
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Respuesta: Sólo para expertos (Problemas con validación de formulario hecho en DW)

Mis disculpas si ofendi a alguien nunca fue mi intencion.

Pues lo probe sin la funcion procesar() y hace bien la validación.

Lo que no me habia dado cuenta es que esa funcion lo que hace es unir 3 campos en 1 solo escondido (hidden).

Les explico mi caso, para ingresar un rif se selecciona una letra (J, V o G), luego un guion seguido de una serie de numeros (que no pueden ser mas de 8) seguido de otro guion y al final un solo numero.

Lo que hice fue que puse 3 campos diferentes y con la funcion JS procesar() me los concatenaba en el campo oculto antes de ingrsar la data, a contunicacion le pongo la funcion procesar():

Código:
function procesar() {

    campo1=document.getElementById('rif1').value;
    campo2=document.getElementById('rif2').value;
	campo3=document.getElementById('rif3').value;
	
    rif=campo1+"-"+campo2+"-"+campo3;

    document.getElementById('rif').value=rif;

    document.forms.form1.submit();

}
  #12 (permalink)  
Antiguo 13/02/2009, 13:48
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Respuesta: Sólo para expertos (Problemas con validación de formulario hecho en DW)

El <?php echo $editFormAction; ?> lo que hace es enviar los datos a las funciones php para ingresar los datos en la base de datos mysql
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 18:38.