Foros del Web » Programando para Internet » PHP »

Validar ESTE formulario...

Estas en el tema de Validar ESTE formulario... en el foro de PHP en Foros del Web. Hola: Por sugerencia de alguien en este mismo foro, note que mi formulario se puede enviar vacio. Estoy tratando de validarlo antes de enviar pero ...
  #1 (permalink)  
Antiguo 24/12/2005, 13:10
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
Validar ESTE formulario...

Hola:

Por sugerencia de alguien en este mismo foro, note que mi formulario se puede enviar vacio.

Estoy tratando de validarlo antes de enviar pero como ya tiene un script php al hacer onclick, se me ha complicado.

Les pongo el codigo del formulario a ver si alguien me da una mano para validar "no vacio" los campos de texto (nombre, email) el select (contactar) y el campo de texto (mensaje)

El script que tengo en uso es de listas dependientes para pais y estado, con php y mysql

el archivo del formulario - contacto.php
Código HTML:
<form id="contacto" name="contacto" method="post" action=""> 
                        <table width="315" border="0" cellpadding="2"> 
                                    <tr> 
                                      <td><div align="left">Nombre</div></td> 
                                      <td>&nbsp;</td> 
                                      <td class="form"><div align="left"><? echo "<input name=\"nombre\" id=\"nombre\" type=\"text\" class=\"form\" value=\"$nombre\" size=\"30\">"; ?> *</div></td> 
                                    </tr> 
                                    <tr> 
                                      <td><div align="left">E-mail</div></td> 
                                      <td>&nbsp;</td> 
                                      <td class="form"><div align="left"><? echo "<input name=\"email\" id=\"email\" type=\"text\" class=\"form\" value=\"$email\" size=\"30\">"; ?> *</div></td> 
                                    </tr> 
                                    <tr> 
                                      <td><div align="left">Pa&iacute;s</div></td> 
                                      <td>&nbsp;</td> 
                                      <td class="form"><div align="left"> 
continua...
Código PHP:
<?  
// datos de conexion a la BD.  
$servidor "xxxxxx"// host  
$usuario "xxxxxx";  
$clave "xxxxxx";  
$basedatos "xxxxxx"// Indicar una Base de datos.  

// si se ha pulsao el boton enviar ($enviado) se procesa el formulario ..  
// Sino, se continua con el formulario y los nuevos valores de los Select ..  
// OJO si se tienen mas varibles (mas <input> ) se van a perder sus valores a no ser  
// que los obtengamos y se les de como valor inicial en el value= de cada uno segun corresponda.  

if (!empty($_POST['enviado'])){  

// Procesar el formulario ...  
echo "Procesando formulario:<br>";  
echo 
"Recibido id_tabla_padre: ".$_POST['id_padre']."<br>";  
echo 
"Recibido id_tabla_hija: ".$_POST['id_hija']."<br>";  
  

} else {  

// Conexi&oacute;n a la BD  
$conexion mysql_connect($servidor$usuario$clave) or die(mysql_error());  
mysql_select_db($basedatos$conexion) or die(mysql_error());  

// Obtener el $id_padre del envio a si mismo del formulario ..  
if(isset($_POST['id_padre'])){  
$id_padre=$_POST['id_padre'];  
}  

if(isset(
$_POST['id_hija'])){  
$id_hija=$_POST['id_hija'];  
}  

// Inicio Formulario .. PHP_SELF enviamos a si mismo (a este script).  
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n\n";  

// Formar Selec "Padre".  
echo "<select name=\"id_padre\" class=\"select\" onChange=\"this.form.submit()\">\n";  
echo 
"<option value=\"\"> Seleccione </option>\n";  

$SQLconsulta_padre="SELECT * FROM countries";  
$consulta_padre mysql_query($SQLconsulta_padre,$conexion) or die(mysql_error());  

While (
$registro_padre=mysql_fetch_assoc($consulta_padre )){  
// Se mira si el ID del registro es el mismo q el $id_padre q recibimos si hemos cambiado el select hijo.  
// Se selecciona en consecuencia (selected) la opci&oacute;n elegida.  
if ($id_padre == $registro_padre['country_id']){  
echo 
"<option value=\"".$registro_padre['country_id']."\" selected>".$registro_padre['name']."</option>\n";  
} else {  
echo 
"<option value=\"".$registro_padre['country_id']."\">".$registro_padre['name']."</option>\n";  
}  
}  
echo 
"</select>\n\n";  

mysql_free_result($consulta_padre); // Liberar memoria usada por consulta.?> 
                                      </div></td> 
                                    </tr> 
                                    <tr> 
                                      <td><div align="left">Regi&oacute;n</div></td> 
                                      <td>&nbsp;</td> 
                                      <td class="form"><div align="left"> 
                                          <? 
                        
// Formar Select "Hijo"  
echo "<select name=\"id_hija\" class=\"select\" onChange=\"this.form.submit()\">\n";  

// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo  
// se muestra el mensaje de "seleccine un item" (del select padre).  
if (!empty($id_padre)){  

$SQLconsulta_hija="SELECT * FROM states WHERE country_id='$id_padre'";  
$consulta_hija mysql_query($SQLconsulta_hija,$conexion) or die(mysql_error());  
// se mira el total de registros de la consulta .. si es 0 se muestra mensaje en el select ..  
if (mysql_num_rows($consulta_hija) != 0){  
While (
$registro_hija=mysql_fetch_assoc($consulta_hija)) {  
//echo "<option value=\"".$registro_hija['state_id']."\">".$registro_hija['name']."</option>\n";  
if ($id_hija == $registro_hija['state_id']){  
echo 
"<option value=\"".$registro_hija['state_id']."\" selected>".$registro_hija['name']."</option>\n";  
} else {  
echo 
"<option value=\"".$registro_hija['state_id']."\">".$registro_hija['name']."</option>\n";  
}  


}  
} else {  
echo 
"<option value=\"\"> no hay registros </option>";  
}  
} else {  
echo 
"<option value=\"\"> Seleccione primero el pa&iacute;s</option>";  
}  

mysql_free_result($consulta_hija); // Liberar memoria usada por consulta.  


echo "</select>\n\n";  
  
}  
?>
continua...
Código HTML:
</div></td> 
                                    </tr> 
                                    <tr> 
                                      <td><div align="left">Contactar</div></td> 
                                      <td>&nbsp;</td> 
                                      <td><div align="left"> 
                                          <select name="contactar" class="select" id="contactar"> 
                                            <option value="null" selected="selected"> Seleccione </option> 
                                            <option value="[email protected]">Asistencia T&eacute;cnica</option> 
                                            <option value="[email protected]">Atenci&oacute;n al Cliente</option> 
                                            <option value="[email protected]">Mercadeo y Ventas</option> 
                                            <option value="[email protected]">Webmaster</option> 
                                          </select> 
                                      *</div></td> 
                                    </tr> 
                                    <tr> 
                                      <td><div align="left">Mensaje </div></td> 
                                      <td>&nbsp;</td> 
                                      <td><div align="left"> 
                                          <textarea name="mensaje" cols="38" rows="3" class="form" id="mensaje"></textarea> 
                                      *</div></td> 
                                    </tr> 
                                    <tr> 
                                      <td colspan="3"><div align="center"> 
                                          <input type="submit" name="Submit" class="boton" value="Enviar" onclick="this.form.action='mensaje.php'; this.form.submit()" /> 
                                      </div></td> 
                                    </tr> 
                                    </table> 
                              </form> 
  #2 (permalink)  
Antiguo 24/12/2005, 15:47
 
Fecha de Ingreso: diciembre-2005
Mensajes: 122
Antigüedad: 12 años
Puntos: 0
necesitas usar javascript para poder evitar que se envie vacio. quita el boton y agrega un input de tipo button.

Código:
<input type="button" OnClick="validar()">
ahora es cuestion de agregar el script correspondiente.

Código:
function validar()
{
    if(document.contacto.nombre == "" ...)//etcetera
    alert("Formulario incompleto");
    else
    document.contacto.submit();
}
  #3 (permalink)  
Antiguo 24/12/2005, 15:55
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
Pero ya en el boton tengo esto:

onclick="this.form.action='mensaje.php'; this.form.submit()"

que es lo que hace que me funcione el script php de las listas dependientes

Se puede poner tambien el otro onClick

????????
  #4 (permalink)  
Antiguo 24/12/2005, 16:05
 
Fecha de Ingreso: diciembre-2005
Mensajes: 122
Antigüedad: 12 años
Puntos: 0
realmente no entiendo para que agregas eso. tranquilamente podes agregar "mensaje.php" en el atributo action del formulario y el "this.form.submit()" esta de mas, ya que se sobreentiende que lo queres enviar al pulsar el boton. en todo caso...

Código:
<?php
if(isset($_POST['enviado']))
{
     if(isset($_POST['nombre']) && isset($_POST['email']))
     //leer datos
}
?>
hace que el script ignore todo si esos campos estan vacios.
  #5 (permalink)  
Antiguo 24/12/2005, 16:31
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
Debe ser porque el script php para las listas dependientes usa esto:
Código PHP:
// Formar Selec "Padre".   
echo "<select name=\"id_padre\" class=\"select\" onChange=\"this.form.submit()\">\n";   
echo 
"<option value=\"\"> Seleccione </option>\n"
para formar los select y si quito esto del boton:

onclick="this.form.action='mensaje.php'; this.form.submit()"

entonces cuando la lista 1 ejecute su

onChange=\"this.form.submit()\

el formulario se envia de una vez...

claro, si en el action hay la direccion de proceso

Es justo por eso que estoy sin resolver!!!!!!!!

dependo totalmente de ese boton para que me funcione el script de las listas
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 07:35.