Foros del Web » Programando para Internet » PHP »

Validacion interna

Estas en el tema de Validacion interna en el foro de PHP en Foros del Web. Hola como estan? estoy desarrollando un formulario para ingresar unos datos pero quiero colocar una condicion inicial para que la persona pueda ingresar datos o ...
  #1 (permalink)  
Antiguo 31/03/2008, 10:27
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Validacion interna

Hola como estan? estoy desarrollando un formulario para ingresar unos datos pero quiero colocar una condicion inicial para que la persona pueda ingresar datos o no a la DB. En este caso, la condicion que quiero es la siguiente:
Tengo dos radio button que dicen "Si" y "No"
Código HTML:
<form method="post">
<label>Si<input  name="pregrado" type="radio" value="Si"/> 
           No<input name="pregrado" type="radio" value="No"/>
</label>
<label><input type="submit" name="submit" value="Inscribirme"/></label>
</form> 
Ninguno de los radio button estan chequeados para que el usuario seleccione el correspondiente haga la accion. "Si" da la condicion validad para ingresar los datos y "No" y la al usuario una respuesta
Código PHP:
echo "Necesita estar graduado"
Solo que la condicion de validacion no se esta cumpliendo y no entro en cual es el error, alguien podria ayudarme

gracias, el novato.

Código PHP:
<?php

include "conexion.php";

$pregrado=$_POST['pregrado'];

if (
$pregrado='Si')
{
$sql="insert into $tabla values
('','$_POST[nombre]','$_POST[apellido]','$_POST[cedula]','$_POST[sexo]'
,'$_POST[email]','$_POST[codigo]','$_POST[telefono]','$_POST[fecha]',
'$_POST[deposito]')"
;

$consulta mysql_query($sql$conexion) or die( mysql_error() );

if(!
mysql_error()) {echo "Bien";}
else {echo 
"Intente mas tarde";}
}

else {echo 
"Necesita estar graduado";}
mysql_close($conexion);
?>
  #2 (permalink)  
Antiguo 31/03/2008, 10:41
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 20 años, 10 meses
Puntos: 3
Re: Validacion interna

Esta línea:
if ($pregrado='Si')

Tiene que ser así:
if ($pregrado=='Si')
  #3 (permalink)  
Antiguo 31/03/2008, 10:55
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Validacion interna

Hola, gracias, ciertamente me faltaba eso pero tengo otra pregunta, cuando igualo la variable a esa condicion y entro a la página automaticamente me aparece el mensaje que prosigue al if
Código PHP:
if {..... } else {echo "Necesita estar graduado";} 
y la idea es que el mensaje aparezca si el usuario selecciona "No" y le da al boton ingresar. Podrias ayudarme en ese aspecto?? gracias
  #4 (permalink)  
Antiguo 31/03/2008, 12:20
Avatar de qvixote  
Fecha de Ingreso: marzo-2008
Mensajes: 79
Antigüedad: 16 años, 1 mes
Puntos: 2
Re: Validacion interna

¡Hola!

No sé si esto sea la causa de tu problema, pero tu HTML está mal ordenado. La etiqueta LABEL debería sólo contener texto, sin los INPUTs dentro. En el HTML que entrgaste, los input están como parte del primer label, por lo que puede que no sean tomados como el objeto 'pregrado' y por lo tanto no se envíe ese valor por POST, por lo que la condición siempre será falsa en la validación.

El HTML debería ir así:

Código HTML:
<form method="post">
    <label>Si</label> <input  name="pregrado" type="radio" value="Si" />
    <label>No</label> <input name="pregrado" type="radio" value="No" />
    <input type="submit" name="submit" value="Inscribirme" />
</form> 

Corrige eso y cuéntame cómo te va.

Saludos.
  #5 (permalink)  
Antiguo 31/03/2008, 12:49
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Validacion interna

En ese caso si te puedo decir que es indiferente la organizacion del label ya que esta es una de las que te permite definirla en un punto y definir varios contenidos para despues cerrar la etiqueta. Ya con la corrección que me paso damargon funciono la validacion pero el problema ahora es que Cada vez que ingreso a la pagina se aplica la condicion siguiente al if es decir, se imprime
Código PHP:
else {echo "Necesita estar graduado";} 
pero si ejecuto el envio del formulario con cualquiera de las opciones se se produce la validacion, si el usuario marco si, el registro se carga, si el usuario marca no el registro no se carga y aparece el mensaje. Lo que me gustaria corregir es eso, que la condición del else se cumpla unicamenete cuando se produzca la validación por el botón de envio del formulario
  #6 (permalink)  
Antiguo 31/03/2008, 13:00
Avatar de qvixote  
Fecha de Ingreso: marzo-2008
Mensajes: 79
Antigüedad: 16 años, 1 mes
Puntos: 2
Re: Validacion interna

Insisto, si tu HTML está mal, aparte de no cumplir con las recomendaciones de W3C, te afectará el funcionamiento del PHP que recibe los datos.

Ciertamente el error es porque la condición de tu PHP da siempre FALSO, por eso siempre muestra lo que está en el ELSE. Eso debe ser porque 'pregrado' está vacío.

Prueba a agregar estas líneas al principio de tu PHP:

Código PHP:
if (isset($_POST['pregrado'])) echo "Valor enviado para pregrado: ".$_POST['pregrado'];
else echo 
"<p>No se ha enviado un valor para 'pregrado'.</p>"
Si te muestra "No se ha enviado un valor para 'pregrado'", yo tengo razón y el problema está en tu HTML.

Saludos y suerte.
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 18:35.