Comprobar que un campo no está vacío.

El problema que tengo ahora es que, tengo un código para que me compruebe que un campo, o más bien una variable de un formulario no está vacía, lo he hecho así:
$nombre =$HTTP_POST_VARS["nombre"];
if (!isset($nombre)){
echo "<center><p>Debe especificar un nombre</p>";
echo "<p><a href=\"formulariolinks.php\">Volver</a></p></center>";
exit;
}
De la manera en que está escrito arriba, me cierra el script, este o no vacía la variable, y si el "isset" no lo niego, me corre todo el código sin comprobar los campos.
¿Cómo puedo hacer que esto no ocurra?
Si es posible me gustaría saber como se podría cambiar el código para poder comprobar más campos sin necesidad de usar tantos condicionales.
Otra cosa más, también, y si no es mucho pedir:
¿Cómo podría hacer para que los valores introducidos en un formulario no se borren al pasar a otra página?
Si necesitas el código ya sea del formulario o del php, esta en otra pregunta que ya he realizado con anterioridad:
Pasar variables de un Formulario a BD.

1 respuesta

Respuesta
1
Prueba este código que se me acaba de ocurrir. Todavía hay mucho que afinarle, pero funciona con lo que yo lo probé.
Ahí está la respuesta a tus dudas, cualquier cosa mandame un e-mail.
PD. Te sugeriero usar una capa de abstracción para la BD, puedes usar PEAR, ADODB o PHPLib
Saludos !
Atentamente: Mack
----------------------------------------
Al principio era UNIX, y UNIX habló y dijo:
"Hello World\n",
no dijo: "Hello New Jersey\n",
ni "Hello USA\n"...
########################################
ARCHIVO 1: prueba_form.html
CONTENIDO:
<html>
<head>
<title>Prueba</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="prueba_form.php" method="post" name="form1">
Nombre: <input name="nombre" type="text"><br>
Paterno: <input name="paterno" type="text"><br>
Materno: <input name="materno" type="text"><br>
Sexo:
<table width="200">
<tr>
<td><label>
<input type="radio" name="Sexo" value="m">
Masculino</label></td>
</tr>
<tr>
<td><label>
<input type="radio" name="Sexo" value="f">
Femenino</label></td>
</tr>
</table>
Sistema Operativo:
<select name="Sistema Operativo">
<option value="L">Linux</option>
<option value="W">Winbugs</option>
<option value="B">BSD</option>
</select><br>
<input name="enviar" type="submit">
</form>
</body>
</html>
########################################
ARCHIVO 2: prueba_form.php
CONTENIDO:
<?php
/******************************************************************************
Datos para el debugging:
******************************************************************************/
echo "Datos Recibidos: <br><br>";
echo var_dump ($HTTP_POST_VARS); // Imprime el contenido de la variable $HTTP_POST_VARS
echo "<br><br>";
echo "Nombre de los Campos: <br><br>";
echo var_dump (array_keys ($HTTP_POST_VARS));
echo "<br><br>";
$variable = $HTTP_POST_VARS['materno'];
echo "Verificar si está fijada Sexo: <br><br>";
echo var_dump (isset ($HTTP_POST_VARS['Sexo']));
echo "<br><br>";
/******************************************************************************
Esto sería el script d comprobación:
******************************************************************************/
echo "Campos en la forma: ";
$campos = count ($HTTP_POST_VARS) - 1;
/* -1 Porq en el arreglo $HTTP_POST_VARS también se incluye el botón de envío*/
echo "$campos<br><br>";
echo "Campos definidos por el programador: ";
$campos_programador = 5;
echo "$campos_programador<br><br>";
/* Si faltan campos comprobamos cuales faltan:*/
if ($campos < $campos_programador) {
/* nombres de los campos para referenciarlos: */
$nombre_campos = array (
"nombre",
"paterno",
"materno",
"Sexo",
"Sistema_Operativo");
/* Fijamos una bandera para saber si faltaron campos o no*/
$flag = 0;
/* Comprobamos si están fijados los nombres d los campos:*/
for ($indice = 0; $indice < $campos; $indice++) {
if (!isset ($HTTP_POST_VARS[ $nombre_campos [$indice]]) ||
$HTTP_POST_VARS[ $nombre_campos [$indice]] == "") {
PD. Creo que el archivo 2 salió incompleto:
<?php
/******************************************************************************
Datos para el debugging:
******************************************************************************/
echo "Datos Recibidos: <br><br>";
echo var_dump ($HTTP_POST_VARS); // Imprime el contenido de la variable $HTTP_POST_VARS
echo "<br><br>";
echo "Nombre de los Campos: <br><br>";
echo var_dump (array_keys ($HTTP_POST_VARS));
echo "<br><br>";
$variable = $HTTP_POST_VARS['materno'];
echo "Verificar si está fijada Sexo: <br><br>";
echo var_dump (isset ($HTTP_POST_VARS['Sexo']));
echo "<br><br>";
/******************************************************************************
Esto sería el script d comprobación:
******************************************************************************/
echo "Campos en la forma: ";
$campos = count ($HTTP_POST_VARS) - 1;
/* -1 Porq en el arreglo $HTTP_POST_VARS también se incluye el botón de envío*/
echo "$campos<br><br>";
echo "Campos definidos por el programador: ";
$campos_programador = 5;
echo "$campos_programador<br><br>";
/* Si faltan campos comprobamos cuales faltan:*/
if ($campos < $campos_programador) {
/* nombres de los campos para referenciarlos: */
$nombre_campos = array (
"nombre",
"paterno",
"materno",
"Sexo",
"Sistema_Operativo");
/* Fijamos una bandera para saber si faltaron campos o no*/
$flag = 0;
/* Comprobamos si están fijados los nombres d los campos:*/
for ($indice = 0; $indice < $campos; $indice++) {
if (!isset ($HTTP_POST_VARS[ $nombre_campos [$indice]]) ||
$HTTP_POST_VARS[ $nombre_campos [$indice]] == "") {
echo "El campo ".$nombre_campos [$indice]." es requerido!!!<br>";
$flag = 1; /* cambiamos el estado de la bandera*/
}
}
if ($flag == 1) {
echo '<a href="prueba_form.html">Regresar al Formulario</a>';
exit;
}
}
echo "No faltaron campos";
?>
Pues muchas gracias por el script, ya tengo una idea bastante amplia de lo que tengo que hacer, pero no entiendo que es una capa de abstracción para la BD.
Me he bajado el PHPLib y he leído un poco sobre esta librería pero todavía no veo como utilizarla en mi web y que posibilidades puede llegar a tener.
Una capa de abstracción básicamente es una herramienta que t permite gestionar las operaciones hacia tu BD. Con la ventaja de que estandarizas las funciones que se emplean, como conexión, ejecución de consultas, manejo de recordsets, control de errores de ejecución, etc...
Una de las principales ventajas de implementar este tipo de herramientas dentro de una aplicación es que poder cambiar de Base de Datos (por Ej. de MySQL a PostgreSQL) sin tener que regenerar todo el código.
Por Ejemplo:
- ¿Si usas MySQL como haces una conexión? Con la función mysql_connect (parámetros)
- Si usas PostgreSQL la tienes que hacer con pg_Connect (parámetros) o pg_pConnect (parámetros)
Y así con las demás funciones...
Supongamos que tenemos una aplicación con BD MySQL y por POR razón tenemos que migrarla ha PostgreSQL, tendríamos que reemplazar todas las funciones mysql_connect por pg_Connect en todos los scripts en donde se empleasen, pero no solo eso, los parámetros no son los mismo, ni usan la sintaxis idéntica, ¿y las funciones para la ejecución de consultas? ¿Y para el manejo de los recordsets?
Entonces esto se vuelve una labor titánica :-)
Cosa que podemos evitar implementando una herramienta de estas, en donde solo tendrías que configurar un solo script y todo seguiría funcionando sin problemas (para el caso de los scripts, no para la migración de los datos)
Además algunas incluyen otro conjunto de bibliotecas adicionales que t ayudan a crear código al vuelo como si fuese un "framework", ¿cómo qué código? Campos para formularios web, uso de plantillas, etc.. pero estas son solo características adicionales, no la funcionalidad principal.
Recuerda que siempre hay que prevenir en la medida de lo posible los problemas a los que podemos enfrentarnos, mucho más en este cambiante mundo de Internet...
Saludos !
Atentamente: Mack
----------------------------------------
www.google.com/linux - Interfaz de comandos para la Web

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas