PHP - Campos en blanco

 
Vista:

Campos en blanco

Publicado por kstro21 (10 intervenciones) el 04/07/2008 20:59:10
tengo un formulario para enviarlo a la base de datos, y no se pueden dejar campos en blanco, como hago para que le avise al usuario de que no puede dejar campos en blanco y que no se pierdan los datos que ya escribio, para que no tenga que repetir lo mismo de nuevo, es mas o menos lo que hacen sitios como yahoo cuando vas a registrar un nuevo usuario. Cual es la idea.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Campos en blanco

Publicado por Rein (13 intervenciones) el 05/07/2008 04:06:33
colocas en este script el nombre del campo de texto que quieres validar.

<script>
function verificar_campos()
{
var text=document.forms[0].nombre_del_campo_de_texto.value.length;
if(text==0)
{
alert("DEBE INGRESAR DATO");
document.forms[0].nombre_del_campo_de_texto.focus();
return false;
}
}
</script>

y luego en el boton para enviar los datos en onclick llamas a la funcion.

<input type="submit" name="Submit2" value="Enviar" class="bluebutton" onClick="verificar_campos()">

eso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Campos en blanco

Publicado por Diego Romero (1450 intervenciones) el 05/07/2008 04:09:01
Usando sesiones.

Voy a escribir (de memoria) un ejemplo sencillo. Supondré que usas dos archivos, uno para el formulario, otro para procesar los datos de ese formulario. Me limito solo al código relevante.

------ formulario.php ---------

<?php
session_start();
$err = FALSE;
if (isset($_SESSION["form1"])) { // si la sesión existe...
$err = TRUE; // entonces hubo error.
}

$valor1 = @$_SESSION["form1"]["valor1"]; // (1)
$valor2 = @$_SESSION["form1"]["valor2"]; // (1)
?>
...
<form name="form1" id="form1" method="POST" action="proceso.php">

<input name="valor1" type="text" id="valor1" value="<?=$valor1?>">
<?php if ($err) { // hubo error
if (@$_SESSION["form1"]["valor1"] == "") { // y es en este campo
?>
<br><font size="small" color="#FF0000">Este campo no puede estar vacío</font>
<?php } } ?>

<input name="valor2" type="text" id="valor2" value="<?=$valor2?>">
<?php if ($err) { // hubo error
if (@$_SESSION["form1"]["valor2"] == "") { // y es en este campo
?>
<br><font size="small" color="#FF0000">Este campo no puede estar vacío</font>
<?php } } ?>
-------------------
-------- proceso.php ----------
<?php
session_start();
$_SESSION["form1"] = array(); // (2)
$valor1 = @$_POST["valor1"];
$_SESSION["form1"]["valor1"] = $valor1;
$valor2 = @$_POST["valor2"];
$_SESSION["form1"]["valor2"] = $valor2;

if (($valor1 == "") or ($valor2 == "")) { // si alguno o los dos campos están vacíos...
header( "Location: http://www.example.com/formulario.php"); // regresar al formulario
exit; // y terminar el script.
}

/* si llegó hasta aquí, ambos campos están llenos, entonces procesarlos */

unset($_SESSION["form1"]); // destruyo el array.
?>
---------------
Notas:
(1) El @ frente a la variable de sesión hace que en caso de que no esté definida asigne vacío (nulo) a la variable y no cause un error.
(2) Crea un array en esa variable de sesión.

La idea general es usar variables de sesión para trasladar los datos desde proceso.php a formulario.php en caso de que proceso.php determine que algún campo del formulario está vacío.
En condiciones normales cuando el usuario carga formulario.php por primera vez el script verá que $_SESSION["form1"] no existe por lo tanto $valor1 y $valor2 estarán vacíos y eso es lo que se mostrará en el formulario HTML.
El usuario llena (o no) ambos inputs y presiona "enviar".
Los datos llegan por POST a proceso.php.
Se crea la variable de sesion $_SESSION["form1"] vacía.
Se le asignan los datos llegados por POST desde el formulario.
Se verifica que los datos no estén vaciós.
Si no lo están el script continua.
Pero si alguno o ambos campos el usuario los dejó vacíos el script fuerza al navegador a regresar a formulario.php.
Es aquí donde formulario.php ve que $_SESSION["form1"] sí existe ya que se creó en proceso.php, entonces $valor1 y $valor2 en formulario.php toman los valores almacenados en la variable de sesión y los reproduce en los campos de formulario HTML apropiado y con un mensaje informandole al usuario lo que ha ocurrido.

Es importante que destruyas $_SESSION["form1"] al final de proceso.php si todo ha ido bien porque si el usuario vuelve a formulario.php por alguna razón, éste verá que aún existe esa variable de sesión y asumirá que hubo un error cuando no es así.

Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Muchas Gracias

Publicado por kstro21 (10 intervenciones) el 07/07/2008 18:21:02
Muchas gracias por las 2 respuestas, me han servido de maravilla, es bueno poder contar con ustedes....gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar