PHP - Validar dato

   
Vista:
Imágen de perfil de Enrique Ramírez

Validar dato

Publicado por Enrique Ramírez (24 intervenciones) el 26/11/2009 18:16:55
Me acaban de dar un curso super basico y super express y ya me pusieron a trabajar en PHP, estoy haciendo mi primer formulario y ya estoy batallando, tengo que dar altas a un catalógo de calles, hasta ahorita ya da las altas pero ahora que quiero validar que los campos no se graben en blanco ó en nulo pero no me queda, no hace la validación y graba sin que los campos tengan datos, vi algunos ejemplos en el foro lo trate de hacer igual y no me funcionan, me pueden decir en que estoy mal.

asi defino el campo nombre_c
echo '<tr>';
echo '<td>Nombre de la Calle * </td><td><input type=text name=nombre_c size=90 maxlength=80></td>';
echo '</tr>';

asi hago la validación:
if (isset($_POST[nombre_c])
{
}
else
{
echo '<br>Nombre de la calle está en blanco .........!</br>';
print ("<p>[<A HREF='altas.php'>Regresar Editar</A>]</p>\n");
}

también he probado así y tampoco funciona:
if ($_POST(nombre_c)) = ' '
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:Validar dato

Publicado por Diego Romero (1450 intervenciones) el 26/11/2009 18:45:04
Hay varias formas de hacerlo pero te diré la más segura.

<?php
$nombre_c = @$_POST["nombre_c"];
if (empty($nombre_c)) {
echo "Nombre de calle está vacía.";
exit; // finaliza el script
}
?>

Nota que lo primero que hago es pasar del array $_POST a una variable independiente. El @ delante de $_POST hace que no salte error en tiempo de ejecución si el índice de ese array no existe, en vez de eso la variable a la izquierda del = queda definida pero vacía.

Esta línea que has puesto:

if ($_POST(nombre_c)) = ' '

No funciona como crees. En PHP el signo = solo y únicamente sirve para asignar valores, no se usa para comparar por la igualdad, para ello debiste escribir == (doble signo igual). Lo que tú has puesto es una asignación dentro de un if y eso siempre devuelve verdadero cuando el valor que está a la derecha sí puede asignarse a la variable que está a la izquierda del signo. En tu caso la cadena vacía sí puede asignarse a $_POST por lo tanto el if siempre te devolverá verdadero.

Recuerda siempre encerrar entre comillas (simples o dobles) los nombres de los índices de los arrays.
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
Imágen de perfil de Enrique Ramírez

Para Diego

Publicado por Enrique Ramírez (24 intervenciones) el 26/11/2009 19:12:59
Diego
gracias si me funcionó bién y te agredezco el tip del @ este es mi primer formulario después de un curso de 1 dia y ya me pusieron a trabajar.
otra pregunta, porqué debo encerrar entre comillas los nombre de los indices de los arrays?, se usa por igual en texto y en numero? las personas que trabajan aquí no lo hacen y si corren los formularios.
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:Para Diego

Publicado por Diego Romero (1450 intervenciones) el 27/11/2009 07:13:58
Porque puede darse el caso en que haya ambigüedad. PHP da mucha (demasiada) libertad al programador. Libertad para hacer desastres.

Considera esto:

<?php
$nombre = "Diego";
$unarray[nombre] = "Romero";
?>

No hay errores de sintaxis en ese código pero hay una ambigüedad. El identificador "nombre" (sin comillas) ¿se refiere a la variable $nombre o al índice "nombre" (con comillas). En algunas configuraciones de PHP cada vez que se encuentra un identificador que aunque no esté especificado como variable (denotada con el símbolo $ por delante) podría considerarse como una variable, PHP asume que es una variable. En el ejemplo dado en vez de tener una posición en el array $unarray con índice "nombre" acabaría teniendo una posición cuyo índice es "Diego".

Para evitar esto, los literales constantes de tipo string hay que ponerlos encerrados en comillas.

Por supuesto, esto no se aplica para índices de tipo entero.

$unarray[1] no es lo mismo que $unarray["1"].

Lo que hacen tus compañeros de trabajo no es aconsejable, si yo fuera director de ese equipo de programación, les tiraría de las orejas :D.
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