Foros del Web » Programando para Internet » PHP »

Problemas con condicionales

Estas en el tema de Problemas con condicionales en el foro de PHP en Foros del Web. Buenas tardes a tod@s, Estoy intentando crear un condicional en php para que dependiendo de las variables que le lleguen (edad y sexo) me devuelva ...
  #1 (permalink)  
Antiguo 09/02/2012, 10:59
 
Fecha de Ingreso: mayo-2004
Ubicación: Madrid
Mensajes: 15
Antigüedad: 20 años, 6 meses
Puntos: 0
Pregunta Problemas con condicionales

Buenas tardes a tod@s,
Estoy intentando crear un condicional en php para que dependiendo de las variables que le lleguen (edad y sexo) me devuelva un valor determinado, sin embargo estos condicionales no me funcionan, de todas formas os explico:
Con un formulario en html recojo 2 variables: sexo y edad y las paso a un php que dependiendo de la edad y el sexo introducido me devuelva una serie de valores.
El php tiene el siguiente código:
Código PHP:
Ver original
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <?
  6. if($edad2<=30 && $sexo==1){
  7.     echo "la prima a pagar es de 1€";
  8. }
  9. else if ($edad2<=30 && $sexo==0){
  10.         echo "la prima a pagar es de 1'50€";
  11.     }
  12.     else if ($edad2>30 && $edad2<=40 && $sexo==1){
  13.             echo "la prima a pagar es de 2€";
  14.         }
  15.     else if ($edad2>30 && $edad2<=40 && $sexo==0){
  16.         echo "la prima a pagar es de 2'5€";
  17.         }  
  18.     else if ($edad2>40 && $edad2<=50 && $sexo==1){
  19.             echo "la prima a pagar es de 3€";
  20.         }
  21.     else if ($edad2>40 && $edad2<=50 && $sexo==0){
  22.             echo "la prima a pagar es de 3'5€";
  23.         }  
  24.     else if ($edad2>50 && $sexo==1){
  25.             echo "la prima a pagar es de 4€";
  26.         }
  27.     else if ($edad2>50 && $sexo==0){
  28.             echo "la prima a pagar es de 4'50€";
  29.         };
  30. ?>
  31. </body>
  32. </html>
Pues bien, aplicando este formulario siempre me da los mismos resultados, independientemente de cual sea la edad, es decir, para hombres (sexo=1) siempre me va a mostrar una prima de 1, y para mujeres (sexo=0) siempre me va a mostrar una prima de 1'5, independientemente de la edad que introduzca.

Sabeis a que se puede deber?
Muchas gracias.
  #2 (permalink)  
Antiguo 09/02/2012, 11:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problemas con condicionales

Imprime lo valores de tus variables y comprueba que realmente son lo que crees.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 09/02/2012, 11:10
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Problemas con condicionales

en que lado recibes los valores del formulario? los envias por POST o GET? de donde salen las variables $edad2 y $sexo?
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #4 (permalink)  
Antiguo 09/02/2012, 11:14
 
Fecha de Ingreso: septiembre-2009
Mensajes: 25
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: Problemas con condicionales

Coincido con el comentario anterior, imprime el valor de tus variables para que sepas que es lo que realmente esta llegando de tu formulario, como estas obteniendo tus variables con $_GET[] ó $_POST[] ????
  #5 (permalink)  
Antiguo 09/02/2012, 11:23
 
Fecha de Ingreso: mayo-2004
Ubicación: Madrid
Mensajes: 15
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Problemas con condicionales

Cita:
Iniciado por pateketrueke Ver Mensaje
Imprime lo valores de tus variables y comprueba que realmente son lo que crees.
Cita:
Iniciado por jonn59 Ver Mensaje
Coincido con el comentario anterior, imprime el valor de tus variables para que sepas que es lo que realmente esta llegando de tu formulario, como estas obteniendo tus variables con $_GET[] ó $_POST[] ????
pateketrueke y jon59, las variables llegan bien, ya que hice un echo con esos datos y me llegan correctamente

Cita:
Iniciado por andresdzphp Ver Mensaje
en que lado recibes los valores del formulario? los envias por POST o GET? de donde salen las variables $edad2 y $sexo?
andres, los valores los recibo por un post del formulario, el cual tiene el siguiente código:
Código HTML:
Ver original
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  2. <script type="text/javascript">
  3.  
  4. function validar(){
  5. //hago validacion edad
  6. edad2= document.getElementById('edad').value;
  7. if (edad2==""){
  8.        alert("Por favor introduzca su edad.")
  9.              return false;
  10.     }else{
  11.        if (edad2<18){
  12.          alert("Debe ser mayor de 18 años.")
  13.         return false;
  14.    }else{
  15.         if( isNaN(edad2) ) {
  16.     alert("Por favor introduzca una edad correcta.")
  17.  return false;
  18.    }
  19. }
  20.     }
  21. //hago validacion Radiobutton
  22. sexo2= document.getElementsByName('sexo');
  23. var seleccionado = false;
  24. for(var i=0; i<sexo2.length; i++) {
  25.  if(sexo2[i].checked) {
  26.    seleccionado = true;
  27.    break;
  28.  }
  29. }
  30.  
  31. if(!seleccionado) {
  32.     alert("Por favor indiquenos su sexo.")
  33.  return false;
  34. }
  35. }
  36. </head>
  37. <body><table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
  38.   <tr>
  39.     <td><form action="paso2b.php" method="post" name="envio" target="_new" id="envio" onSubmit="return validar();">
  40.   <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
  41.     <tr>
  42.       <td align="center">Edad:</td>
  43.     </tr>
  44.     <tr>
  45.       <td align="center"><label for="edad"></label>
  46.       <input name="edad" type="text" id="edad" maxlength="2" /></td>
  47.     </tr>
  48.     <tr>
  49.       <td align="center">Sexo:</td>
  50.     </tr>
  51.     <tr>
  52.       <td align="center"><label>
  53.                           <input type="radio" name="sexo" value="1" id="sexo_0" />
  54.                           Hombre</label>
  55.                         <br />
  56.                         <label>
  57.                           <input type="radio" name="sexo" value="0" id="sexo_1" />
  58.                           Mujer</label></td>
  59.     </tr>
  60.     <tr>
  61.       <td align="center"> <input type="submit" name="paso2" id="paso2" value="Continuar" /></td>
  62.     </tr>
  63.   </table>
  64. </form></td>
  65.   </tr>
  66. </body>
  67. </html>
  #6 (permalink)  
Antiguo 09/02/2012, 11:28
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: Problemas con condicionales

¿Y estás seguro q en php es $edad2 y no $edad? o.O

No se ve como obtienes el "post" en paso2b.php
__________________
>> Eleazan's Source
>> @Eleazan
  #7 (permalink)  
Antiguo 09/02/2012, 11:29
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Problemas con condicionales

en el archivo php debería ser algo así:

Código PHP:
Ver original
  1. <?php
  2. $edad2 = $_POST['edad'];
  3. $sexo = $_POST['sexo'];
  4.  
  5. if ($edad2 <= 30 && $sexo == 1) {
  6.     echo "la prima a pagar es de 1€";
  7. } else if ($edad2 <= 30 && $sexo == 0) {
  8.     echo "la prima a pagar es de 1'50€";
  9. } else if ($edad2 > 30 && $edad2 <= 40 && $sexo == 1) {
  10.     echo "la prima a pagar es de 2€";
  11. } else if ($edad2 > 30 && $edad2 <= 40 && $sexo == 0) {
  12.     echo "la prima a pagar es de 2'5€";
  13. } else if ($edad2 > 40 && $edad2 <= 50 && $sexo == 1) {
  14.     echo "la prima a pagar es de 3€";
  15. } else if ($edad2 > 40 && $edad2 <= 50 && $sexo == 0) {
  16.     echo "la prima a pagar es de 3'5€";
  17. } else if ($edad2 > 50 && $sexo == 1) {
  18.     echo "la prima a pagar es de 4€";
  19. } else if ($edad2 > 50 && $sexo == 0) {
  20.     echo "la prima a pagar es de 4'50€";
  21. }
  22. ?>

También es importante usar isset para evitar errores:

Código PHP:
Ver original
  1. $edad2 = isset($_POST['edad']) ? $_POST['edad'] : 0;
  2. $sexo = isset($_POST['sexo']) ? $_POST['sexo'] : 0;

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #8 (permalink)  
Antiguo 09/02/2012, 11:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problemas con condicionales

Además usando algo se sentido común yo agregaría las condiciones así:
Código PHP:
if ($sexo == 0) {
  
// if (...)
} elseif ($sexo == 1) {
  
// if (...)

Así mantienes ordenadas las comparaciones, así no repites condiciones.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 09/02/2012, 11:38
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 9 meses
Puntos: 53
Respuesta: Problemas con condicionales

corri todo tu codigo y no me marca ni un error,
Cita:
Iniciado por 0gradoskelvin Ver Mensaje
Buenas tardes a tod@s,

El php tiene el siguiente código:
Código PHP:
Ver original
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <?
  6. /**********************/
  7. Seguro estas recogiendo las variables asi?
  8. $edad2=$_POST['edad'];
  9. $sexo=$_POST['sexo'];
  10. /**********************/
  11. if($edad2<=30 && $sexo==1){
  12.     echo "la prima a pagar es de 1€";
  13. }
  14. else if ($edad2<=30 && $sexo==0){
  15.         echo "la prima a pagar es de 1'50€";
  16.     }
  17.     else if ($edad2>30 && $edad2<=40 && $sexo==1){
  18.             echo "la prima a pagar es de 2€";
  19.         }
  20.     else if ($edad2>30 && $edad2<=40 && $sexo==0){
  21.         echo "la prima a pagar es de 2'5€";
  22.         }  
  23.     else if ($edad2>40 && $edad2<=50 && $sexo==1){
  24.             echo "la prima a pagar es de 3€";
  25.         }
  26.     else if ($edad2>40 && $edad2<=50 && $sexo==0){
  27.             echo "la prima a pagar es de 3'5€";
  28.         }  
  29.     else if ($edad2>50 && $sexo==1){
  30.             echo "la prima a pagar es de 4€";
  31.         }
  32.     else if ($edad2>50 && $sexo==0){
  33.             echo "la prima a pagar es de 4'50€";
  34.         };
  35. ?>
  36. </body>
  37. </html>
Cita:
Pues bien, aplicando este formulario siempre me da los mismos resultados, independientemente de cual sea la edad, es decir, para hombres (sexo=1) siempre me va a mostrar una prima de 1, y para mujeres (sexo=0) siempre me va a mostrar una prima de 1'5, independientemente de la edad que introduzca.

Sabeis a que se puede deber?
Muchas gracias.
esto se debe aque tu validacion esta bien pero no la forma en recibir las variables recuerda que la que recibes en edad y no edad2
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #10 (permalink)  
Antiguo 09/02/2012, 11:52
 
Fecha de Ingreso: mayo-2004
Ubicación: Madrid
Mensajes: 15
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Problemas con condicionales

Muchas gracias a todos, sois unos fenómenos, al final he seguido vuestros consejos y todo funciona y queda también mas ordenado.
Un abrazo para todos

Etiquetas: condicionales, formulario, html, variables
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 22:20.