Foros del Web » Programando para Internet » PHP »

No enviar si le falta un dato en formulario php

Estas en el tema de No enviar si le falta un dato en formulario php en el foro de PHP en Foros del Web. Saludos a todos los amantes de PHP y de antemano mil gracias por tu ayuda. Lo siguiente es parte de un programita en el cual ...
  #1 (permalink)  
Antiguo 16/07/2002, 21:17
 
Fecha de Ingreso: julio-2002
Mensajes: 7
Antigüedad: 21 años, 9 meses
Puntos: 0
No enviar si le falta un dato en formulario php

Saludos a todos los amantes de PHP y de antemano mil gracias por tu ayuda.

Lo siguiente es parte de un programita en el cual puedo mandar el nombre, dirección y copiar una foto a un directorio determinado.
A) si lo llenan todo no hay problema
B) Si envían nombre y la foto o si se manda la dirección y la foto no hay problema
C) Si sólo en ponen nombre y dirección sin la foto... manda esos datos a la base de datos y me da un enlace a consulta pero me pone un mensaje de error.
D) Si oprime enviar sin llenar nada me da un mensaje de error y crea un espacio vacío en la base de datos.

¿Como hacer que en el formulario en caso de que no llene al algún campo no se envíe nada a la base de datos y de un mensaje de que por favor llene todos los datos.

:P :P

if ($fichero !="")
{
echo "Se ha copiado el fichero $fichero_name";
copy ("$fichero","$ruta"."$fic hero_name");
$row = mysql_fetch_array($result);
?>
<a href="consulta.php?id=<?php echo $row[id] ; ?>">
enlace</a>
<?
}
else
{
?>
<form enctype="multipart/form-data" method="post"
action=<? echo $php_self ?>>
<input type="text" name="nombre" size="20" maxlength="30"><b>Nombre</b></p>
<input type="text" name="direccion" size="20" maxlength="30"><b>Dirección</b></p>
<input type="file" name="fichero" VALUE="Examinar" size="20">
<input type="submit" NAME="fichero" VALUE="Enviar">
<?
}


  #2 (permalink)  
Antiguo 16/07/2002, 22:26
itatpc
Invitado
 
Mensajes: n/a
Puntos:
Re: No enviar si le falta un dato en formulario php



Esto supongo que se hace con JavaScript, así que pregunta en ese foro que hay gente que seguro que te lo dice al instante (yo no tengo ni idea :().

  #3 (permalink)  
Antiguo 18/07/2002, 06:48
 
Fecha de Ingreso: febrero-2002
Mensajes: 64
Antigüedad: 22 años, 2 meses
Puntos: 0
Re: No enviar si le falta un dato en formulario php

Puedes hacerlo en php:
Código:
 
<?
if ($nombre=="" || $direccion=="" || $fichero=="")
{
   echo "Error, debes rellenar todos los campos.";
}
else
{
//aquí procesas lo que necesites
}
?>
Pero yo suelo validar los campos en JavaScript y si falla algo, muestro un alert, seguro que en el foro de JV te pueden informar muy bien, pero por si te sirve te pongo un ejemplo:
Código:
 
<script>
function validar() {
 if (document.form1.nombre.value == "") {
   alert ("Debes rellenar el campo Nombre");
   return;
 }
 if (document.form1.value.direccion == ""){
   alert ("Debes rellenar el campo Dirección");
   return;
 }
 if (document.form1.fichero.value == ""){
   alert ("Debes escoger una imagen");
   return;
 }
 document.form1.submit;
}
</script>
... donde form1 es el nombre que le pongas al formulario.
Entonces tienes que cambiar el "submit" por un "button" que llame a la función validar()y te quedaría algo así:
Código:
 
<input type="button" NAME="fichero" VALUE="Enviar" onClick="validar()">
Espero que te haya servido de ayuda

Salu2
Mònica J.M.
  #4 (permalink)  
Antiguo 18/07/2002, 08:30
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 22 años, 5 meses
Puntos: 5
Re: No enviar si le falta un dato en formulario php

Os recuerdo que es mejor hacer uso de la sfunciones propias de PHP, para ver si una variable esta vacia se usa la funcion empty() con ella vemos si una variable contiene datos o no,y uniendo esto a una estrutura de control (condicionales) podemos determinar si una campo de un formulario esta vacio o no.

<table style="border:1px solid black"><tr><td><center>
<embed width="88" height="144" src="http://www.alaplaya.com/~epplestun/yo.swf"></td></td><font face=verdana size=1>Ivan Rodriguez el poder es [B]PHP</p></td></tr></table>
  #5 (permalink)  
Antiguo 18/07/2002, 21:36
 
Fecha de Ingreso: julio-2002
Mensajes: 7
Antigüedad: 21 años, 9 meses
Puntos: 0
Re: No enviar si le falta un dato en formulario php

:P :P :P
Mil gracias a Mónica J. M. y a Ivan Roduiguez
por sus comentarios

Yo estaba buscando y buscando
Lo mas cercano que llegue fue esto.

A) no escribes nombre , no escribes dirección, no escribes texto......... no manda nada
B) si escribes nombre , no escribes dirección, no escribes texto......... no manda nada
C) si escribes nombre , si escribes dirección, no escribes texto......... no manda nada
D) si escribes nombre , si escribes dirección, si escribes texto......... SI ENVIA
( Todo esto me gusta como trabaja)

El reto es: ¿Donde le agregarían el siguiente mensaje?
echo &quot; Tiene que llenar todos los datos&quot;;

********formulario05.php***************
&lt;html&gt;
&lt;body&gt;
&lt;?
if (! empty($texto))
{
echo &quot; los valores del formulario son:&lt;br&gt;&quot;;
echo &quot; Nombre: $nombre &lt;br&gt;&quot;;
echo &quot; Dirección: $direccion &lt;br&gt;&quot;;
echo &quot; Texto: $texto&lt;br&gt;&quot;;
}
else
{
?&gt;
&lt;FORM ACTION=formulario04.php METHOD=POST&gt;
Nombre&lt;INPUT NAME=nombre Value=&quot;&lt;? echo $nombre ?&gt;&quot;&gt;&lt;br&gt;
Dirección&lt;INPUT NAME=direccion Value=&quot;&lt;? echo $direccion ?&gt;&quot;&gt;&lt;br&gt;
Texto &lt;TEXTAREA NAME=texto COLS=20 rows=3&gt;
&lt;? echo $texto ?&gt;
&lt;/TEXTAREA&gt;
&lt;INPUT TYPE=submit VALUE=&quot;ENVIAR&quot;&gt;
&lt;/FORM&gt;
&lt;?
}
?&gt;
&lt;/body&gt;
&lt;/html&gt;

  #6 (permalink)  
Antiguo 19/07/2002, 04:00
 
Fecha de Ingreso: febrero-2002
Mensajes: 64
Antigüedad: 22 años, 2 meses
Puntos: 0
Re: No enviar si le falta un dato en formulario php

Gracias Iván por el recordatorio, tienes toda la razón (a veces se me olvida).

Javier,

No estoy segura de haber entendido bien tu propósito. O sea, no sé cuando quieres que se escriban las línias que has metido dentro del bloque del if, si no me equivoco, esas variables, sólo responden a los campos del formulario, o eso o es que falta parte del código que puede ser de interés.

Si especificas un poco qué es lo que pretendes que haga formulario04.php (imagino que este procesa los datos) y formulario05.php (a parte de mostrar el formulario, qué más tiene que hacer? cuando quieres que se muestren los mensajes que has escrito?)

Además... otras preguntas. Quieres que el texto &quot;Tiene que llenar todos los datos&quot; salga impreso en el navegador o prefieres un alert? Quieres que salga como error (en caso de no haberlos llenado todos) o por defecto, es decir que salga como una nota informativa, siempre que se muestre el formulario?

Salu2
Mònica J.M.
  #7 (permalink)  
Antiguo 19/07/2002, 06:00
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 22 años, 5 meses
Puntos: 5
Re: No enviar si le falta un dato en formulario php

Bueno jeje es facil lo que yo dije tan, esque como uso mucho esa funcion pos me venia como anillo al dedo para este post jeej pero buenmo, todo se puede encontrar en php.net

<table style="border:1px solid black"><tr><td><center>
<embed width="88" height="144" src="http://www.alaplaya.com/~epplestun/yo.swf"></td></td><font face=verdana size=1>Ivan Rodriguez el poder es [B]PHP</p></td></tr></table>
  #8 (permalink)  
Antiguo 19/07/2002, 18:15
 
Fecha de Ingreso: julio-2002
Mensajes: 7
Antigüedad: 21 años, 9 meses
Puntos: 0
Re: No enviar si le falta un dato en formulario php

:P :P :P
Monica
Mil gracias por la atención a estos mensajes
Cometí un error de preescolar

El ejemplo es formulario04.php
Lo que me gustaría es que en caso de
que no llenen todos los datos
Y hagan clik en Enviar ya NO muestre
echo &quot; los valores del formulario son:&lt;br&gt;&quot;;
echo &quot; Nombre: $nombre &lt;br&gt;&quot;;
echo &quot; Dirección: $direccion &lt;br&gt;&quot;;
echo &quot; Texto: $texto&lt;br&gt;&quot;;

y en lugar de eso muestre
echo &quot; Tiene que llenar todos los datos&quot;;

y regresar nuevamente para que terminen el formulario.
(si capto esto, entonces podré arreglar el primer ejemplo que puse)
(Bueno eso el lo que creo ;) )
*****************************************
Lo que quiero que sea notorio que tiene que llenar todo el formulario
Y que no me de el resultado (echo &quot; Nombre: $nombre &lt;br&gt;&quot;;...etc)
Por que esto más adelante lo enviaría a una base de Datos

Es una cosa que me pasa con el primer ejemplo que puse, que aunque este
Vacío el formulario y se toca Enviar abre un espacio vacío en la base de datos.
Y como va a un listado se crea una línea vacía y eso se mal.
*****************************************
Quieres que el texto &quot;Tiene que llenar todos los datos&quot;
salga impreso en el navegador o prefieres un alert?
Monica...¿Qué es un alert? :)
******************************************
Monica ¿Me permites tener comunicación contigo ?
[email protected]
Saludos
********formulario04.php***************
&lt;html&gt;
&lt;body&gt;
&lt;?
if (! empty($texto))
{
echo &quot; los valores del formulario son:&lt;br&gt;&quot;;
echo &quot; Nombre: $nombre &lt;br&gt;&quot;;
echo &quot; Dirección: $direccion &lt;br&gt;&quot;;
echo &quot; Texto: $texto&lt;br&gt;&quot;;
}
else
{
?&gt;
&lt;FORM ACTION=formulario04.php METHOD=POST&gt;
Nombre&lt;INPUT NAME=nombre Value=&quot;&lt;? echo $nombre ?&gt;&quot;&gt;&lt;br&gt;
Dirección&lt;INPUT NAME=direccion Value=&quot;&lt;? echo $direccion ?&gt;&quot;&gt;&lt;br&gt;
Texto &lt;TEXTAREA NAME=texto COLS=20 rows=3&gt;
&lt;? echo $texto ?&gt;
&lt;/TEXTAREA&gt;
&lt;INPUT TYPE=submit VALUE=&quot;ENVIAR&quot;&gt;
&lt;/FORM&gt;
&lt;?
}
?&gt;
&lt;/body&gt;
&lt;/html&gt;
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 17:12.