Duda con formulario

Iniciado por Maties 360, 24 Julio 2007, 10:37 AM

0 Miembros y 1 Visitante están viendo este tema.

Maties 360

Buenas, queria hacer un formulario para registro de usuarios y no se como hacer que por ejemplo con este formulario:

<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>*LE*|| Registro Nuevo Usuario</title>
</head>

<body bgcolor="#000000">

<br><br><br><br><br>
<br><br><br><br><br>

<table border="0" cellpadding="0" cellspacing="0" align="center">

<form action="proces.php" method="get">

<tr><td><font color="white">Nick:   </font><input type="text" name="nick"><br></td></tr>

<tr><td><br><font color="white">Contraseña: </font><input type="password" name="contrasenya"></td></tr>

<tr><td><br><font color="white">Repite la contraseña: </font><input type="password" name="re-contrasenya"></td></tr>

<tr><td><br><font color="white">Email: </font><input type="text" name="email"></td></tr>

<tr><td><br><font color="white">Fecha de nacimiento: </font>
<input type="text" name="data" title="Formato: dd/mm/aaaa" maxlength="10"></td></tr>

<tr><td><br><font color="white">País: </font>
<select name="pais">
  <option>España</option>
  <option>Inglaterra</option>
  <option>Françia</option>
  <option>Portugal</option>
</select></td></tr>

<tr><td><br><input type="submit" value="Enviar">&nbsp;&nbsp;&nbsp;
<input type="reset" value="Borrar"></td></tr>

</form>
</table>
</body>
</html>


Y queria conseguir que por ejemplo creo otro <select></select> con las provincias, y que por ejemplo eligo españa que me salgan provincias españolas, si eligo inglaterra que me salgan otras provincias,etc..

Y otra duda es que no se como, ni si se puede hacer, poner un codigo html entre los signos "<?php" " ?>"

Gracias de antemano

Enga Salu2^^

SirLanceCC

para poner código html en php usa print
Código (php) [Seleccionar]

...
<?
print '<p>Código html</p>';
print '<p>dentro de php</p>';
?>
...

Ves que bonito se ve el código? es más facil de leer así... solo debes presionar el boton y escribir ahi tu código cuando edites tus mensajes. Te lo agradeceremos

CitarY queria conseguir que por ejemplo creo otro <select></select> con las provincias, y que por ejemplo eligo españa que me salgan provincias españolas, si eligo inglaterra que me salgan otras provincias,etc..
Deberás tener una lista inmensa de provincias... pero suponiendo que la tienes puedes hacerlo con javascript o con php.
Con javascript sería:
Si se selecciona un elemento es pais
cambio los elementos en provincia
Con php:
Se selecciona un elemento en pais
entonces recargo la página tomando en cuenta el pais
y muestro las proviencias correspondientes...

saludos ;)

Maties 360

Gracias por la respuesta, pero me podrias aclararlo un poco mas poniendo el codigo?¿?

Gracias y Salu2^^

Sanjuu

Cita de: Maties 360 en 24 Julio 2007, 16:56 PM
Gracias por la respuesta, pero me podrias aclararlo un poco mas poniendo el codigo?¿?

Gracias y Salu2^^

A ver, poner el codigo .... no sabemos ni donde tienes almacenados esos datos, es realmente complicado poner código a partir de suposiciones.

Como estamos en el foro de php te pondré la idea en php.

Suponemos que tienes los datos almacenados en una bd, tendrías que ir haciendo SELECT de paises, provincias....

El primer select sería de paises y mostrarías los paises recuperandolos de tu bd, una vez se envíe el formulario harías otro select pero ahora de provincias y que solo mostrara las provincias del país indicado.

Todo esto suponiendo que lo quieras hacer dinámicamente, sino la lista de provincias/paises va a ser larga y bien tediosa.

Código (php) [Seleccionar]

if (pregunta->buscador()==NULL)
     pregunta->formular_pregunta();

Maties 360

Buenas, por ejemplo uso este formulario con el SELECT de paises:

<tr><td><br><font color="white">País: </font>
<select name="pais">
  <option>España</option>
  <option>Inglaterra</option>
  <option>Françia</option>
  <option>Portugal</option>
</select></td></tr>


Y lo que no se es que debo hacer despues....Seguramente tengo que crear cuatro SELECT con las provincias, uno de cada pais. Y supuestamente tengo que hacer el codigo PHP en la misma pagina, o tengo que poner en el ACTION otra pagina que te llevara donde una pagina php que diciera que si has seleccionado españa te redireccione a otra con el formulario de provincias de españa.

Pero seria mas facil haciendolo en la misma pagina que supuestamente se debe de poder hacer...

Gracias y Salu2^^

Sanjuu

Cita de: Maties 360 en 24 Julio 2007, 22:44 PM
Buenas, por ejemplo uso este formulario con el SELECT de paises:

<tr><td><br><font color="white">País: </font>
<select name="pais">
  <option>España</option>
  <option>Inglaterra</option>
  <option>Françia</option>
  <option>Portugal</option>
</select></td></tr>


Y lo que no se es que debo hacer despues....Seguramente tengo que crear cuatro SELECT con las provincias, uno de cada pais. Y supuestamente tengo que hacer el codigo PHP en la misma pagina, o tengo que poner en el ACTION otra pagina que te llevara donde una pagina php que diciera que si has seleccionado españa te redireccione a otra con el formulario de provincias de españa.

Pero seria mas facil haciendolo en la misma pagina que supuestamente se debe de poder hacer...

Gracias y Salu2^^

Sí, pero esos datos son estáticos? Si es así (un coñazo serio) tendrías que tener una matriz que te recogiera las provincias de cada país por ejemplo:

Código (php) [Seleccionar]

$provincias['españa'][0] = 'Alava';
$provincias['españa'][1] = 'Alicante';
....
$provincias['españa'][n] = 'Otra provincia';
$provincias['inglaterra'][0] = 'Provincia';
...
$provincias['inglaterra'][n] = 'Otra provincia mas';


Una vez tienes esa matriz (en la página de destino) accederías a mostrar el select con:
Código (php) [Seleccionar]

// Recoges $pais desde $_GET['pais'] o $_POST['pais']

echo '<select name="provincia">';
$i=0;
while (!empty($provincia[$pais][$i])){
    echo '<option value="'.$provincia[$pais][$i].'">'.$provincia[$pais][$i].'</option>';
    $i++;
};
echo '</select>';


Así es más o menos como se haría en php, en javascript se puede hacer (y te lo hace todo en la misma página) pero es sobrecargar más al cliente pues el script se ejecuta en el cliente y no en el servidor (como hace php), además como preguntaste en el foro de PHP te respondí en PHP.

Espero que te sirva, un saludo!

Código (php) [Seleccionar]

if (pregunta->buscador()==NULL)
     pregunta->formular_pregunta();

Maties 360

Buenas, mirad he intentado hacer lo que me proponia de esta manera:

registrousuarios.php

<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>*LE*|| Registro Nuevo Usuario</title>
</head>

<body bgcolor="#000000">
<br><br><br /><br /><br /><br /><br /><br /><br /><br />
<table border="0" cellpadding="0" cellspacing="0" align="center">
<form action="proces.php" method="get">
<tr><td><font color="white">Nick:   </font><input type="text" name="nick"><br></td></tr>
<tr><td><br><font color="white">Contraseña: </font><input type="password" name="contrasenya"></td></tr>
<tr><td><br><font color="white">Repite la contraseña: </font><input type="password" name="re-contrasenya"></td></tr>
<tr><td><br><font color="white">Email: </font><input type="text" name="email"></td></tr>
<tr><td><br><font color="white">Fecha de nacimiento: </font>
<input type="text" name="data" title="Formato: aaaa-mm-dd" maxlength="10"></td></tr>
<tr><td><br><font color="white">País: </font>
<select name="pais">
  <option value="1">España</option>
  <option value="2">Inglaterra</option>
</select></td></tr>
<tr><td><br><input type="submit" value="Continuar">&nbsp;&nbsp;&nbsp;
<input type="reset" value="Borrar"></td></tr>
</form>
</table>
</body>
</html>


El proces.php en teoria tiene que redireccionarte a otro documento que hay otro formulario, segun que pais eligas, por ejemplo si eliges españa las de españa..., pero el problema esta en que siempre me muestra el mismo formulario... No se si se podra hacer de esta manera. Pero si se puede que alguien me ayude con esto, que soy principiante^^.

Bueno terminare de poner todos mis archivos:

proces.php


<?php
session_start
();
switch(
$pais) {
case 
"1":
header("Location: registrousuariosespanya.php");
break;
case 
"2":
header("Location: registrousuariosportugal.php");
break;
default:
echo 
"No has seleccionado ningun pais";
}
$nick$_GET['nick'];
$contrasenya$_GET['contrasenya'];
$recontrasenya$_GET['re-contrasenya'];
$email$_GET['email'];
$fecha$_GET['data'];
$pais$_GET['pais'];
$espanya$_GET["pais['1']"];
$inglaterra$_GET["pais['2']"];
?>


registrousuariosespanya.php


<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body bgcolor="#000000">
<br><br><br /><br /><br /><br /><br /><br /><br /><br />
<table align="center" border="0" cellpadding="0" cellspacing="0">
<form action="procesfinal.php" method="get">
<tr><td><font color="white">Provincia: </font>
<select name="provincies">
<option value="1">Almeria</option>
<option value="2">Barcelona</option>
<option value="3">Cadiz</option>
<option value="4">Islas Baleares</option>
<option value="5">Madrid</option>
</select></td></tr>
<tr><td><br><font color="white">Sexo: <br />&nbsp;<input type="radio" name="sexe" value="Hombre">Hombre <br>
&nbsp;<input type="radio" value="Mujer" name="sexe">Mujer</font></td></tr>
<tr><td><br><input type="submit" value="Enviar">&nbsp;&nbsp;<input type="reset" value="Borrar"></td></tr>
</form>
</table>
</body>
</html>


registrousuariosportugal.php


<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body bgcolor="#000000">
<br><br><br /><br /><br /><br /><br /><br /><br /><br />
<table align="center" border="0" cellpadding="0" cellspacing="0">
<form action="procesfinal.php" method="get">
<tr><td><font color="white">Provincia: </font>
<select name="provincies">
<option value="1">Lisboa</option>
<option value="2">Porto Alegre</option>
<option value="3">Sao Paulo</option>
</select></td></tr>
<tr><td><br><font color="white">Sexo: <br />&nbsp;<input type="radio" name="sexe" value="Hombre">Hombre <br>
&nbsp;<input type="radio" value="Mujer" name="sexe">Mujer</font></td></tr>
<tr><td><br><input type="submit" value="Enviar">&nbsp;&nbsp;<input type="reset" value="Borrar"></td></tr>
</form>
</table>
</body>
</html>


procesfinal.php


<?php
header
("Location: registrocompleto.php");
session_start();
include (
'conexion.php');
require (
'proces.php');
require (
'registrousuarios.php');
$provincia$_GET['provincies'];
$sexe$_GET['sexe'];
$nick$_GET['nick'];
$contrasenya$_GET['contrasenya'];
$recontrasenya$_GET['re-contrasenya'];
$email$_GET['email'];
$fecha$_GET['data'];
$pais$_GET['pais'];
$sql"insert into usuaris (Nick,Contrasenya,ReContrasenya,Email,Pais,Neixament,Provincia,sexe) values 
      ('
$nick','$contrasenya','$recontrasenya','$email','$pais','$fecha','$provincia','$sexe')";
mysql_query("$sql");
?>


Y si continuo con el formulario cuando envia los datos a la base de datos solo me envia los datos del ultimo formulario, la provincia y el sexo...

Bueno espero que alguien me pueda ayudar^^

Gracias y Salu2

Sanjuu

A ver tu haces un include del proces.php que es donde haces el proceso genérico y luego derivas en dos ficheros diferentes.

¿Por qué no haces el include con un condicional? Es decir, según el país que tengas incluyes solamente el select correspondiente.

Código (php) [Seleccionar]

if (pregunta->buscador()==NULL)
     pregunta->formular_pregunta();

Maties 360

A ver lo que yo quiero hacer es que si por ejemplo en el primer formulario eliges españa, mediante el documento php, con una condicional como esta:


<?php
switch ($pais) {
case 
"" ://aqui esta el problema, que no se como hacer referencia a la opcion de españa o inglaterra
header(" Location: registrousuariosespanya.php");
break;
....
....
//Aqui el otro case

$pais$_GET['pais'];
$espanya$_GET["pais['1']"];
$inglaterra$_GET["pais['2']"];

//me suponia que era de esta forma pero no funciona, siempre me lleva a las provincias de españa


Y que cuando rellenes el ultimo formulario, que inserte todos los datos de los dos formularios, como lo hacia yo solo me metia los datos del ultimo formulario.

Enga a ver si me he explicado mejor^^. Y mejor si poneis ejemplos

Gracias y Salu2

Sanjuu

A ver, te creas un fichero con las provincias de España:

españa.php
Código (html4strict) [Seleccionar]

<select name="provincias">
<option value="Alava">Alava</option>
<option value="Alicante">Alicante</option>
...
<option value="Zaragoza">Zaragoza</option>
</select>


haces lo mismo con los demás paises

y ahora en tu fichero con el form principal:
Código (php) [Seleccionar]


switch ($_GET['pais']){
    case 1 : include('españa.php');
    case 2 : include('inglaterra.php');
    case 3 : include('otropais.php');
}


Código (php) [Seleccionar]

if (pregunta->buscador()==NULL)
     pregunta->formular_pregunta();