Foros del Web » Programando para Internet » PHP »

formulario php

Estas en el tema de formulario php en el foro de PHP en Foros del Web. He realizado esta pregunta un par de veces ( http://www.forosdelweb.com/f18/if-fo...io-php-711280/ ), pero no consigo resolverla. Intentaré explicarla correctamente para ver si tengo más suerte ahora. ...
  #1 (permalink)  
Antiguo 03/07/2009, 09:05
Avatar de Lutaj  
Fecha de Ingreso: septiembre-2007
Ubicación: Sevilla
Mensajes: 97
Antigüedad: 17 años, 2 meses
Puntos: 3
formulario php

He realizado esta pregunta un par de veces (http://www.forosdelweb.com/f18/if-fo...io-php-711280/ ), pero no consigo resolverla. Intentaré explicarla correctamente para ver si tengo más suerte ahora.
Tengo una página php con un formulario para inscripciones en carreras de atletismo, dicho formulario guarda los datos en una BD que manejo con Myadminphp.
Necesito que al completar el formulario, cuando se indique la edad y sexo asigne un valor a la variable categoria del siguiente modo (es un ejemplo):
Si es hombre y con edad entre 30 y 40 años la variable categoría = sénior
Si es hombre y con edad entre 41 y 50 años la variable categoría = veterano...
y así para varias posibilidades de edad y sexo.
Hasta ahora me han pasado códigos para que aparezca el resultado con print o echo, pero lo que necesito es que el resultado se le asigne a la variable "categoria", de modo que al volver a revisar la BD aparezca dicho campo completado con su valor correspondiente.
La página de inscripción actual es http://www.ajama.es/inscripciones.php
y para revisar la BD es http://www.ajama.es/inscritos.php
Espero que esté bien explicado y obtener una solución adecuada, os agradezco la ayuda compañeros.
  #2 (permalink)  
Antiguo 03/07/2009, 09:17
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: formulario php

Los ejemplos que te dieron son perfectamente adaptables a lo que necesitas, el ejemplo que te dió huesos52 por ejemplo, con unas pequeñas correcciones, funciona:
Código php:
Ver original
  1. switch($edad){
  2.     case ($edad <= 18):
  3.         $categoria = "joven";
  4.         echo $categoria;
  5.         break;
  6.     case ($edad > 18 AND $edad <= 30):
  7.         $categoria = "Mas grande";
  8.         echo $categoria;
  9.         break;
  10.     case ($edad > 30 AND $edad <= 40):
  11.         $categoria = "Ya no estas tan joven";
  12.         echo $categoria;
  13.         break;
  14.     case ($edad > 45):
  15.         $categoria = "Muy viejo";
  16.         echo $categoria;
  17.         break;
  18. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 03/07/2009, 09:26
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 15 años, 4 meses
Puntos: 8
Respuesta: formulario php

<?php
switch ($i) {
case "1": // hombre y entre 30 y 40
$categoría = senior
break;
case "2": // hombre entre 41 y 50
$categoria = veterano
break;
}
?>

Haz tantos case como quieras
  #4 (permalink)  
Antiguo 03/07/2009, 13:11
Avatar de Lutaj  
Fecha de Ingreso: septiembre-2007
Ubicación: Sevilla
Mensajes: 97
Antigüedad: 17 años, 2 meses
Puntos: 3
Respuesta: formulario php

Entiendo que los datos que me pasáis son correctos, porque prácticamente todos conincidís en ellos, pero sigue si funcionarme, al incluir el php en el formulario me aparece este mensaje de error: Parse error: syntax error, unexpected T_BREAK in /homepages/38/d224791685/htdocs/inscripciones.php on line 188
¿Será que no debo de incluírlo en el formulario? ¿dónde lo pongo si no?
Gracias.
  #5 (permalink)  
Antiguo 03/07/2009, 13:25
Avatar de anf
anf
 
Fecha de Ingreso: junio-2009
Mensajes: 30
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: formulario php

Cita:
Iniciado por David Ver Mensaje
Los ejemplos que te dieron son perfectamente adaptables a lo que necesitas, el ejemplo que te dió huesos52 por ejemplo, con unas pequeñas correcciones, funciona:
Código php:
Ver original
  1. switch($edad){
  2.     case ($edad <= 18):
  3.         $categoria = "joven";
  4.         echo $categoria;
  5.         break;
  6.     case ($edad > 18 AND $edad <= 30):
  7.         $categoria = "Mas grande";
  8.         echo $categoria;
  9.         break;
  10.     case ($edad > 30 AND $edad <= 40):
  11.         $categoria = "Ya no estas tan joven";
  12.         echo $categoria;
  13.         break;
  14.     case ($edad > 45):
  15.         $categoria = "Muy viejo";
  16.         echo $categoria;
  17.         break;
  18. }
No funciona si pones edades entre 41 y 45 por que no tiene default:, estructurar el código ayuda a ver mas claras las cosas.

Código PHP:
switch ($edad) {
    case (
$edad <= 18): $r "joven"; break;
    case (
$edad 18) && ($edad <= 30): $r "Mas grande"; break;
    case (
$edad 30) && ($edad <= 40): $r "Ya no estas tan joven"; break;
    case (
$edad 40): $r "Muy viejo"; break;    
}
print 
$r
  #6 (permalink)  
Antiguo 04/07/2009, 08:03
Avatar de Lutaj  
Fecha de Ingreso: septiembre-2007
Ubicación: Sevilla
Mensajes: 97
Antigüedad: 17 años, 2 meses
Puntos: 3
Respuesta: formulario php

Sigo sin poder resolver el problema. ¿Dónde coloco el código php? si lo hago en el formulario me da mensajes de error.
  #7 (permalink)  
Antiguo 04/07/2009, 09:46
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: formulario php

Debes usarlo al momento de procesar el formulario. Lee atentamente los mensajes del tema anterior pues ahí ya te habían dado la respuesta, además, lee el código y trata de entenderlo; luego, lo adaptas a lo que necesitas.

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 04/07/2009, 10:27
Avatar de Lutaj  
Fecha de Ingreso: septiembre-2007
Ubicación: Sevilla
Mensajes: 97
Antigüedad: 17 años, 2 meses
Puntos: 3
Respuesta: formulario php

Debo ser un inútil porque no consigo que me funcione. Estoy loco colocando el código en mil sitios: en el formulario, tras el formulario, delante de submit, después, al inicio del html, al final...
El código lo entiendo bien, es simple y está muy bien explicado, pero lo coloque donde lo coloque siempre me devuelve el mensaje de error:
Parse error: syntax error, unexpected '<' in /homepages/38/d224791685/htdocs/inscripciones.php on line XXX
Abandono. Gracias a todos por vuestro interés.
  #9 (permalink)  
Antiguo 05/07/2009, 04:32
Avatar de anf
anf
 
Fecha de Ingreso: junio-2009
Mensajes: 30
Antigüedad: 15 años, 4 meses
Puntos: 4
De acuerdo Respuesta: formulario php

Código PHP:
<?php
if ($_POST["edad"]) {
  
$edad $_POST["edad"];
  switch (
$edad) {
    case (
$edad <= 18): $r "joven"; break;
    case (
$edad 18) && ($edad <= 30): $r "mas grande"; break;
    case (
$edad 30) && ($edad <= 40): $r "no tan joven"; break;
    case (
$edad 40): $r "muy viejo"; break;
    
/* Siempre hay que dejar una opcion por defecto, que pasa si pone 'yo' ? */
    
default: print "$edad no es un número válido."; exit();
  }
  
/* con comillas dobles las variables pueden ir dentro del string
     y te ahorras el chorizo de poner ".$var." cada vez y tal... */
  
print "Hola, tienes $edad años, eres $r";
}
?>
<html>
<head>
<title>Formulario</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form action='' method='POST' name='formulario'>
<input type='text' name='edad' size='9' maxlength='2' value='' />
<input type='submit' name='submit' value='Enviar' />
</form>
</body>
</html>
Si ya no te aclara esto como no nos copies tu código no podemos hacer mas.
  #10 (permalink)  
Antiguo 05/07/2009, 10:42
Avatar de Lutaj  
Fecha de Ingreso: septiembre-2007
Ubicación: Sevilla
Mensajes: 97
Antigüedad: 17 años, 2 meses
Puntos: 3
Respuesta: formulario php

Todos los case o switch los veo muy bien y los entiendo, pero a ver si me contestan a mi pregunta: ¿Dónde pongo este código? Siempre me da error, o no asigna a la variable "categoria" el valor que se asigna con los case.
El código es el que sigue, pero ya he dado el enlace desde la primera vez para que podáis verlo.
------------



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title>II CIRCUITO SOLO RUNNERS / inscripciones BD</title>
<link rel="stylesheet" type="text/css" href="css/layout.css"/>
<link rel="stylesheet" type="text/css" href="css/menu.css"/>
<link rel="stylesheet" type="text/css" href="css/estilos.css"/>
<link rel="shortcut icon" href="imagenes/favicon.ico"/>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="description" content="Circuito solo runners"/>
<meta name="keywords" content="circuito,solo,runners,corredores,populare s,carreras,navarra,rioja,"/>

</head>
<body>

<?php
$state = false;
if ($_POST['action'] == "add") {
$conexion = mysql_connect("db160.1and1.es", "dbo284603800", "8p.Fx37E");
mysql_select_db("db284603800", $conexion);

$que = "INSERT INTO empresa (categoria, carrera, apellidos, nombre, sexo, edad, localidad, club, email, pago) ";
$que.= "VALUES ('".$_POST['categoria']."', '".$_POST['carrera']."', '".$_POST['apellidos']."', '".$_POST['nombre']."', '".$_POST['sexo']."',

'".$_POST['edad']."', '".$_POST['localidad']."', '".$_POST['club']."', '".$_POST['email']."', '".$_POST['pago']."') ";
$res = mysql_query($que, $conexion) or die(mysql_error());
$state = true;
}
?>


<div id="header">
CABECERA
</div><!-- end div header -->
<div id="wrapper">
<div id="content">
<br>
<h2>INSCRIPCIONES</h2>
<br>
<p>TEXTO</p>

<div id="inscripciones">
TEXTO
</div>

<div id="boxpubli">
TEXTO
</div><!-- end div boxpubli -->

<p>
<form id="insertar" name="insertar" method="post" action="">

<p><label>Carreras:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& nbsp;&nbsp;&nbsp;</label>
<select name="carrera">
<option>VIANA
<option>FUSTIÑANA
<option>LODOSA
</select></p>
<p>Apellidos:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& nbsp;
<input name="apellidos" type="text" id="apellidos" size="40" onkeyup="this.value=this.value.toUpperCase()" />
</p>
<p>Nombre:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs p;&nbsp;&nbsp;
<input name="nombre" type="text" id="nombre" size="40" onkeyup="this.value=this.value.toUpperCase()" />
</p>
<p>Edad:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input name="edad" type="text" id="edad" size="40" />
<p>Sexo:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp ;
<input type="radio" name="sexo" value="M"/>Mujer
<input type="radio" name="sexo" value="H" checked />Hombre
</p>
<p>Localidad:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp ;
<input name="localidad" type="text" id="localidad" size="40" onkeyup="this.value=this.value.toUpperCase()" />
</p>
<p>Club:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp ;
<input name="club" type="text" id="club" size="40" onkeyup="this.value=this.value.toUpperCase()" />
</p>
<p>Email:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input name="email" type="text" id="email" size="40" />
</p><br>


<input type="submit" name="Submit" value="Inscribirme" />
<input type="hidden" name="action" value="add" />

</form>
<?php if ($state) { ?>
<pSUBIENDO DATOS...</p>
<?php } ?>

<p>TEXTO</p>


</div><!-- end div content -->
</div><!-- end div wraper -->

<div id="navigation">
TEXTO
</div><!-- end div navigation -->

<div id="footer"><p>Circuito Solo Runners &copy; 2009 &nbsp;_.o0o._&nbsp; <a href="mailto:[email protected]">info@cir cuitosolorunners.es</a></p>
</div><!-- end div footer -->


</body>
</html>
  #11 (permalink)  
Antiguo 05/07/2009, 15:31
Avatar de anf
anf
 
Fecha de Ingreso: junio-2009
Mensajes: 30
Antigüedad: 15 años, 4 meses
Puntos: 4
De acuerdo Respuesta: formulario php

Cita:
Iniciado por Lutaj Ver Mensaje
Código PHP:
<?php
$state 
false;
if (
$_POST['action'] == "add") {
    
/* ----------------------------------------------------- */
    
$edad $_POST["edad"];
    switch (
$edad) {
        case (
$edad <= 18): $r "joven"; break;
        case (
$edad 18) && ($edad <= 30): $r "mas grande"; break;
        case (
$edad 30) && ($edad <= 40): $r "no tan joven"; break;
        case (
$edad 40): $r "muy viejo"; break;
        default: 
$r false; break;
    }
    
/* ----------------------------------------------------- */
    
if ($edad) {
        
/***********************************************************
        Deberías comprobar aqui cada uno de los valores a introducir
        y que todos sean correctos, una vez hecho esto insertarlos,
        si no te inyectan código SQL de la forma más fácil.

        Te puesto $edad como false si no es un valor aceptado
        para que veas como debería ir el resto.
        ***********************************************************/
        
if ($conexion mysql_connect("db160.1and1.es""dbo284603800""8p.Fx37E")) {
            
/*mysql_select_db("db284603800", $conexion);*/
            
$sql "INSERT INTO empresa (categoria,carrera,apellidos,nombre,sexo,edad,localidad,club,email,pago) 
            VALUES ('"
.$_POST['categoria']."','".$_POST['carrera']."','".$_POST['apellidos']."','".$_POST['nombre']."','".$_POST['sexo']."','$edad','".$_POST['localidad']."','".$_POST['club']."','".$_POST['email']."','".$_POST['pago']."')";
            
$res mysql_db_query("db284603800",$sql) or die("MySQL falló, error nº ".mysql_errno()."<hr />MySQL dijo: ".mysql_error());
            
$state true;
            
mysql_close($conexion);
        } else { print 
"Error conectando con el servidor de datos, consulte al administrador."; }
    }
}
?>
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 12:56.