Foros del Web » Programando para Internet » PHP »

Campos Requeridos... no está muy claro...

Estas en el tema de Campos Requeridos... no está muy claro... en el foro de PHP en Foros del Web. Hola, Gracias a los que siempre sacan tiempo para colaborar. Escribo en este foro pero tambien lo haré en el de JavaScript pues no tengo ...
  #1 (permalink)  
Antiguo 26/09/2004, 20:02
 
Fecha de Ingreso: septiembre-2004
Mensajes: 362
Antigüedad: 13 años, 3 meses
Puntos: 1
Campos Requeridos... no está muy claro...

Hola, Gracias a los que siempre sacan tiempo para colaborar.

Escribo en este foro pero tambien lo haré en el de JavaScript pues no tengo claro cual es el correcto. He leido mensajes similares pero no he podido encontrar respuestas que yo entienda (...disculpen, no tengo mucha experiencia):

Tengo un formulario en html (<FORM METHOD="POST" ACTION="add_reg2.php3">) y como pueden ver... lo datos se reciben en PHP y este los carga en una base de datos en MySQL.

Bien, necesito que si los datos requerido no se llenan, aparezca un mensaje que indique a la persona que debe volver al formulario y completarlo correctamente.

Podrían decirme cual es el código que debo ingresar... donde lo debo ingresar (en el form o en el PHP) y en que parte del archivo lo debo hacer.

PD: si me envían un código de ejemplo podrían indicar cual es la parte que debo personalizar.

De Nuevo Gracias !
Martin
  #2 (permalink)  
Antiguo 27/09/2004, 07:16
 
Fecha de Ingreso: abril-2003
Mensajes: 583
Antigüedad: 14 años, 7 meses
Puntos: 5
Pues mira es bien sencillo:

Código PHP:
    if(empty($_POST['nombre_campo']))

    {

    die(
"<script>alert('ERROR PERSONALIZADO');history.go(-1);</script>");

    } 
yo la alerta la e metido en javascript pero vamos puede ser html lo que quiera siempre que no causes un error en el die.

te explico:
el contenido del if esta recojiendo el campo enviado por el formulario en metodo POST si no lo es y es get pues ya sabras GET, bien en nombre_campo tienes que poner el nombre del campo text el cual quieres comprobar que no entre vacio si entra vacio el die () dentrendra la ejecucion del script sacando el alert en js. si el campo no esta vacio seguira con la ejecucion sin lanzar el contenido del die();

es bien sencillo

Saludos
__________________
Si la vida te da la espalda tocale el culo
  #3 (permalink)  
Antiguo 27/09/2004, 12:58
 
Fecha de Ingreso: septiembre-2004
Mensajes: 362
Antigüedad: 13 años, 3 meses
Puntos: 1
Gracias Freedatos... pero mi inexperiencia me deja todavía con dudas:

Me imagino que el código que me haz enviado se debe poner en el archivo PHP3 que recoge los datos... si no es así por favor corrígeme y dime tambien:

1. En que parte del archivo debo poner el código (... en Head, o si es en el formulario en Action="xxxx" o en otra parte ...?).

2. Podrías decirme como es ese mismo código pero para varios 'nombre_campo'... desde y hasta que parte debo repetir...?

Esto es parte de los dos archivos que creo puedes necesitar para ayudarme:

En el Formulario: <FORM METHOD="POST" ACTION="add_reg2.php3">

En add-reg2.php3:

<BODY> <?PHP // process form
$link = mysql_connect("localhost", "XXXXX_usuario","passw");
mysql_select_db("base_datos",$link);
$sql = "INSERT INTO solicitud (Date, Name, Age, Nationality) ".
"VALUES ('$date', '$name', '$age', '$nationality')";
$result = mysql_query($sql);
echo "¡Gracias! Hemos recibido sus datos.\n";


?>
</BODY>

Gracias por tu tiempo.
  #4 (permalink)  
Antiguo 27/09/2004, 13:08
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 15 años, 11 meses
Puntos: 1
Saludos.

Lo mejor es validar si los usuarios han colocado data en tus campos del FORM con javascript, para no tener que procesar el FORM y luego mandar un mensaje diciendo: "ESTO ESTA VACIO, REGREAR E INTENTE DE NUEVO".

el ejemplo de freedatos es mejor usarlo para estar seguros de no mandar a guardar campos vacios en la DB.

Suerte
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #5 (permalink)  
Antiguo 27/09/2004, 18:05
 
Fecha de Ingreso: abril-2003
Mensajes: 583
Antigüedad: 14 años, 7 meses
Puntos: 5
es sencillo:

Código PHP:
<BODY> <?php

// nombre_campo: nombre del campo de texto

if(empty($_POST['nombre_campo'])) 

    { 

    die(
"<script>alert('ERROR  por favor no deje espacios en blanco');history.go(-1);</script>"); 

    } 

$link mysql_connect("localhost""XXXXX_usuario","passw");
mysql_select_db("base_datos",$link);
$sql "INSERT INTO solicitud (Date, Name, Age, Nationality) ".
"VALUES ('$date', '$name', '$age', '$nationality')";
$result mysql_query($sql);
echo 
"¡Gracias! Hemos recibido sus datos.\n";


?>
</BODY>
Saludos
__________________
Si la vida te da la espalda tocale el culo
  #6 (permalink)  
Antiguo 27/09/2004, 22:53
 
Fecha de Ingreso: septiembre-2004
Mensajes: 362
Antigüedad: 13 años, 3 meses
Puntos: 1
Ya casi... pero la ignorancia es atrevida.
Los datos de mi formulario son - Date, Name, Age, Nationality -
El INPUT TYPE="TEXT" NAME="date" ... y así los otros.

Ahora, yo quiero que los campos requeridos sean Date, Name y Age ...En el código que me envías me imagino que debo cambiar lo que estoy marcando con color rojo por los campos requeridos. Si es así, lo he intentado de varias formas... separándolos por 'Comas', entre paréntesis...etc... pero siempre me sale el mensaje de "Error favor llenar los campos requeridos"

Creo que esto sería lo último... si me puedes decir como hacerlo o donde ver un ejemplo o leer al respecto. De nuevo gracias, estos foros son de mucha ayuda y alientan a los principiantes como yo a saber cada día mas.

<?php

// nombre_campo: nombre del campo de texto
  #7 (permalink)  
Antiguo 29/09/2004, 09:28
 
Fecha de Ingreso: agosto-2004
Mensajes: 440
Antigüedad: 13 años, 3 meses
Puntos: 2
Esta funcion la guardas como validar.js
******************************
function verificar(obj) {
missinginfo = "";

if (obj.date.value=="")
{
missinginfo += "\n - Date";
}
if (obj.name.value=="")
{
missinginfo += "\n - Name";
}
if (obj.age.value=="")
{
missinginfo += "\n - Age";
}
if (obj.nationality.value=="")
{
missinginfo += "\n - Nationality";
}


if (missinginfo != "") {
missinginfo = "Te ha faltado introducir los siguientes datos:\n" + missinginfo + "\n\n¡Por favor pulsa enter, ingresa los datos y prueba de nuevo!\n";
alert(missinginfo);

return false;
}
else return true;
}
*********************************************

despues la llamas en tu formulario asi:
en el head

<head>
<script src="scripts/validar.js"></script>
</head>
************************************

y luego colocas un boton de envio asi:

<input id="enviar" type="submit" name="enviar" value="Enviar" onclick="return verificar(document.forms.Formulario);">

Reemplazas.Formulatio por .como hayas llamado a tu form name=""

espero te sirva copiala tal cual esta y me cuentas si te sirvio
__________________
paty :adios:
  #8 (permalink)  
Antiguo 29/09/2004, 10:47
 
Fecha de Ingreso: septiembre-2004
Mensajes: 362
Antigüedad: 13 años, 3 meses
Puntos: 1
Hola Niltza... gracias por participar.

Hice lo que me recomiendas pero no se están validando los campos requeridos... los estoy enviando en blanco y sale el mensaje de "¡Gracias! Hemos recibido sus datos."

A ver si por aquí tengo algún error:

El archivo "validar.js" lo copie y lo pegué en NotePad y luego= guardar como: validar.js Este archivo está en el mismo directorio del "form.html" y del "php3"

El archivo php3 lo dejé como lo tenía inicialmente... es decir:

<?PHP // process form
$link = mysql_connect("localhost", "Usuario","passw"); mysql_select_db("tabla1",$link);
$sql = "INSERT INTO solicitud (Date, Name, Age, Nationality) ".
"VALUES ('$date', '$name', '$age', '$nationality')";
$result = mysql_query($sql);
echo "¡Gracias! Hemos recibido sus datos.\n";


Ahora... en la parte final de tu mensaje me dices que reemplace Formulario x mi form name="" ... es esto el nombre del archivo? (form2.html... o sólo form2), lo intenté con los dos y me da el mismo resultado... tambien revisé el formulario que estoy usando y no veo esa parte form name=""

Gracias y disculpa el enredo.
  #9 (permalink)  
Antiguo 29/09/2004, 22:52
 
Fecha de Ingreso: septiembre-2004
Mensajes: 362
Antigüedad: 13 años, 3 meses
Puntos: 1
Ya debe Funcionar...Campos Requeridos

Bueno... creo que encontré solución con otro código pero quiero dar las gracias a Niltza a Freedatos a José Molina y a todas las personas que siempre están sacando de su tiempo para colaborar.

A continuación voy a tratar de resumir cual era mi problema inicial y cual la solución... De todas formas si alguien encuentra que se pueden hacer mejoras sobre todo en cuanto a la seguridad pues Bienvenidos los comentarios:

Problema: "Lograr que los campos requeridos en un formulario sean validados antes de enviarse a una base de Datos". El formulario pide Fecha (Date) - Edad(Age) - Nombre (Name) - Nationality (Nacionalidad)... y los campos obligatorios son los 3 primeros.

Herramientas:
1. Formulario en html (METHOD="POST")
2. Archivo php3 para recibir los datos y enviarlos a la Base de Datos
3. Base de Datos en MySQL y administrada por phpMyAdmin

Ok... estos son los 2 archivos que me permiten recibir los datos de forma correcta... los voy a escribir para que los interesados los puedan copiar y personalizar.

form.html:

<HTML>
<HEAD><SCRIPT>

//Pon en la variable obligatorios el name de todos los campos que deben rellenar

obligatorio=["date","name","age"];

//Pon en la variable textoObligatorio el texto que quieres que aparezca en el alert

textoObligatorio=["Date","Name","Age"];

function comprobar(este){
for(a=0;a<obligatorio.length;a++){

if(este.elements[obligatorio[a]].value==""){

alert("Por favor, llena el campo "+textoObligatorio[a]);
este.elements[obligatorio[a]].focus();
return false;


}

}

return true;
}

</SCRIPT>

</HEAD>
<BODY>
<FORM NAME="Prueba" METHOD="POST" ACTION="add_reg5.php3"
ONSUBMIT="return comprobar(this)">

<PRE>
<FONT COLOR="#336699">FIELDS MARKED WITH * ARE REQUIRED.
<FONT COLOR="#990000">CAMPOS MARCADOS CON * SON REQUERDIOS.</FONT></FONT>

</PRE>
<TABLE WIDTH="700" CELLPADDING="3" CELLSPACING="10" ALIGN="CENTER"
STYLE="border-top: 2px #1E5A77 solid; border-right: 2px #1E5A77 solid; border-bottom: 2px #1E5A77 solid; border-left: 2px #1E5A77 solid">

<TR>
<TD ALIGN="RIGHT" WIDTH="300"><BR><FONT COLOR="#336699">* Date -
</FONT><FONT COLOR="#990000">Fecha </FONT><FONT
COLOR="#990000">(MM/DD/AAAA):</FONT></TD>
<TD ALIGN="LEFT" WIDTH="400"><BR><INPUT TYPE="TEXT" NAME="date"
SIZE="8" MAXLENGTH="10"> </TD>
</TR>
<TR>
<TD ALIGN="RIGHT"><FONT COLOR="#336699">* Your Name </FONT><FONT
COLOR="#336699"> </FONT><FONT COLOR="#990000">Nombre y Apellido:</FONT></TD>
<TD><INPUT TYPE="TEXT" NAME="name" SIZE="35" MAXLENGTH="30"></TD>
</TR>
<TR>
<TD ALIGN="RIGHT"><FONT COLOR="#336699"> *Age - <FONT
COLOR="#990000">Edad:</FONT></FONT></TD>
<TD> <INPUT TYPE="TEXT" NAME="age" SIZE="1" MAXLENGTH="2"></TD>
</TR>
<TR>
<TD ALIGN="RIGHT"><FONT COLOR="#336699">Nationality -
<FONT COLOR="#990000">Nacionalidad:</FONT></FONT></TD>
<TD> <INPUT TYPE="TEXT" NAME="nationality" SIZE="35"
MAXLENGTH="20"></TD>
</TR>
<TR>
<TD VALIGN="TOP" ALIGN="RIGHT"><FONT COLOR="#336699">When done,
Please:</FONT><BR><BR></TD>
<TD><INPUT ID="enviar" TYPE="submit" NAME="enviar"
VALUE="Submit - Enviar"> <FONT COLOR="#336699">or </FONT><INPUT TYPE="reset"
VALUE="Clear - Borrar"><BR><BR></TD>
</TR>
</TABLE> </FORM>
</BODY>
</HTML>


add_reg5.php3 Observe que este es el dato que va en la etiqueta FORM ACTION=" add_reg5.php3", Pero Ud le puede dar otro nombre con .php3



<HTML>
<HEAD> </HEAD>

<BODY><?PHP // process form
$link = mysql_connect("localhost", "nombre_de_usuario","password"); mysql_select_db("nombre_de_la_base_de_datos",$link );
$sql = "INSERT INTO nombre_de_la_tabla (Date, Name, Age, Nationality) ".
"VALUES ('$date', '$name', '$age', '$nationality')";
$result = mysql_query($sql);
echo "¡Gracias! Hemos recibido sus datos.\n";


?>
</BODY>
</HTML>

Estos últimos datos hacen referencia a la base de datos en MySQL.
Localhost es donde normalmente está conectada la base... sino, pregúntale a tu proveedor de hosting.

Saludos!

Martin
  #10 (permalink)  
Antiguo 30/09/2004, 11:31
 
Fecha de Ingreso: agosto-2004
Mensajes: 440
Antigüedad: 13 años, 3 meses
Puntos: 2
form

cuando me referia al nombre del form era a este que tienes aqui
*************
<FORM NAME="Prueba" METHOD="POST" ACTION="add_reg5.php3"
ONSUBMIT="return comprobar(this)">
******************
es decir tenias que reeemplazar Formulario po Prueba y ya.........
pero de todas maneras me alegro que ya te haya salido
__________________
paty :adios:
  #11 (permalink)  
Antiguo 01/10/2004, 14:04
Avatar de Covids0020  
Fecha de Ingreso: septiembre-2003
Ubicación: España
Mensajes: 217
Antigüedad: 14 años, 2 meses
Puntos: 1
Yo digo una cosa, en relación al Javascript, la gente que lo usa, estais dispuestos a perder los usuarios que no quieran usar "Javascript"???, que lo tengan desactivado en su navegador y por miedo, paranoia o lo que sea, no quieran activarlo??.

Desde luego, cabe la posibilidad de advertir antes de su uso, y de su carácter no maligno, pero aún así..., es igual que pluggins como "Flash", aunque no voy a entrar en una discusión sobre usabilidad o estándares (Javascript lo es, desde luego), pero que opinais de esto??.

Para muchas opciones o código, un lenguaje del lado servidor no nos sirve, pero que alternativas hay para este tipo de códigos en script del lado cliente??.
__________________
"La sabiduría comienza donde acaba el conocimiento". Yaris.
http://www.culturadigital.org
  #12 (permalink)  
Antiguo 01/10/2004, 14:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Covids0020 ... No este el foro PHP para entrar a ver temas de usabilidad o "paranoias" si el javascript plano y simple hay gente que lo considere como "maligno" ..

Lo único que puedo decir es que pese que el dato por motivos de "usabilidad" y ahorro del ancho de banda (una validación del lado del servidor simpre implica una ida y venida de datos desde el servidor al cliente sean pocos o toda la página según técnicas que se usen) se valide desde el lado del cliente .. siempre se ha de validar en el lado del servidor (notese que no digo ni "javascript" ni "PHP" hablo en general pues es aplicable a todo) pues es este el que en última instancia gestionará ese dato.

Un saludo,
  #13 (permalink)  
Antiguo 01/10/2004, 15:57
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 14 años, 7 meses
Puntos: 35
loading......



Confiarse casi al 100% de un Javascript es peligroso y puede arruinarte toda la website por mi parte me quedo con las validaciones mediante servidor e incluso NI SE NOTA

Código PHP:
if(empty($_GET['bla']))
{
header('Location: atras.php?status=Falta tal cosa');
exit();


connection closed.
__________________

Maborak Technologies
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 11:35.