Foros del Web » Programando para Internet » PHP »

validando forms

Estas en el tema de validando forms en el foro de PHP en Foros del Web. Holas ya estoy de nuevo en busca de ayuda xD ya se que este tema se ha tratado,pero no me sale. Tengo un form que ...
  #1 (permalink)  
Antiguo 25/11/2008, 17:30
Avatar de Wilfred  
Fecha de Ingreso: octubre-2008
Mensajes: 110
Antigüedad: 15 años, 6 meses
Puntos: 1
validando forms

Holas ya estoy de nuevo en busca de ayuda xD
ya se que este tema se ha tratado,pero no me sale.
Tengo un form que inserta unos datos en la database,el caso es que quiero hacer que antes de insertar me lo valide para ver si el user lo ha insertado correctamente, se que usando un condicional con la función isset y empty,pero no me sale...

Código:
<?php
// incluimos el archivo de conexion
include ('db-cnx.php');

        // creamos las variables y les asignamos los valores a insertar
        $nombre = $_POST['nombre'];
        $autor = $_POST['autor'];
        $descripcion= $_POST['descripcion'];
		 $paper= $_POST['paper'];
		 
		 
        // hacemos el INSERT en la BD
        $sqlInsertNot = mysql_query("INSERT INTO papers
                                     (nombre, autor, descripcion,paper, fecha)
                            VALUES ('$nombre', '$autor', '$descripcion','$paper', CURDATE())",
                                     $db_link) or die(mysql_error());
        // enviamos un mensaje de exito

?>


<!-- el formulario -->

<form name="paper" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">


 <p>
    Nombre del paper<br />
    <input type="text" name="nombre" size="50" />
    </p>
 <p>Autor<br />
   <input type="text" name="autor" size="50" />
</p>
 <p>Descripci&oacute;n<br />
   <input type="text" name="descripcion" size="50" />
</p>
 <p>
    paper(contenido)<br />
    <textarea name="paper2" rows="25" cols="100"></textarea>
 </p>
  <p><br />
  </p>
  <p>
    <input type="submit" name="enviar" value="Enviar" />
    </p>
</form>
intente así

if (isset($nombre)) {
echo "debe rellenar el campo nombre";
} else {
echo "no ha rellenado el campo nombre";
}

pero nada..

Gracias por la ayuda!
  #2 (permalink)  
Antiguo 25/11/2008, 17:41
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: validando forms

isset() siempre te devolverá true, pues el campo existe y es enviado, y por lo tanto forma parte de la matriz $_POST. Debes usar empty(). Por otro lado, también te sería útil ver la función trim()

  #3 (permalink)  
Antiguo 25/11/2008, 17:44
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 meses
Puntos: 70
Respuesta: validando forms

Fuera de lo que dice Okram y a manera de consejo:

Si envias los datos a la misma página...:
Código PHP:
<form name="paper" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
El action lo puedes dejar sin nada...
Código HTML:
<form name="paper" action="" method="post"> 
Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #4 (permalink)  
Antiguo 25/11/2008, 17:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: validando forms

igual, como recomendación... siempre has esto, con cada variable de entrada

Código PHP:
$foo = isset($_POST['foo'])? $_POST['foo']: null
así, cuando compruebes su valor... mínimo, habrá algo que te indique... y por supuesto, esto elimina la posibilidad de errores (diría horrores) comunes, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 26/11/2008, 12:30
Avatar de Wilfred  
Fecha de Ingreso: octubre-2008
Mensajes: 110
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: validando forms

Gracias por la recomendaciones.modifique el code a ver si ahora...primero recogemos las variables,después comprobamos si están vacías y si no lo estan hacemos insert.eso es lo que quiero que haga,esta bien modificado el code?
Código:
<?php
// incluimos el archivo de conexion
include ('db-cnx.php');


        // creamos las variables y les asignamos los valores a insertar
        $nombre = $_POST['nombre'];
        $autor = $_POST['autor'];
        $descripcion= $_POST['descripcion'];
		 $paper= $_POST['paper'];
		 
if(empty($nombre, $autor, $descripcion, $paper)) {
echo "Tienes que introducir todo los datos!";
}
else{
		 
        // hacemos el INSERT en la BD
        $sqlInsertNot = mysql_query("INSERT INTO papers
                                     (nombre, autor, descripcion,paper, fecha)
                            VALUES ('$nombre', '$autor', '$descripcion','$paper', CURDATE())",
                                     $db_link) or die(mysql_error());
        // enviamos un mensaje de exito
}

?>


<!-- el formulario -->

<form name="paper" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">


 <p>
    Nombre del paper<br />
    <input type="text" name="nombre" size="50" />
    </p>
 <p>Autor<br />
   <input type="text" name="autor" size="50" />
</p>
 <p>Descripci&oacute;n<br />
   <input type="text" name="descripcion" size="50" />
</p>
 <p>
    paper(contenido)<br />
    <textarea name="paper2" rows="25" cols="100"></textarea>
 </p>
  <p><br />
  </p>
  <p>
    <input type="submit" name="enviar" value="Enviar" />
    </p>
</form>
Saludos y gracias!
  #6 (permalink)  
Antiguo 26/11/2008, 19:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: validando forms

te sirvió el código .. o esperas una respuesta para experimentar ???




mmm... pues no, no esta bien modificado el código...

pienso que lo modificaste según como tu crees que sirven las funciones, pero no es así ... por ejemplo empty no se usa de esa forma...

demás, tampoco seguiste nuestras recomendaciones...

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 01:11.