Tengo construido un formulario que valida con JavaScript Hasta ahí, más o menos bien. Si el fulano no completa los campos, le salen los errores, y si los completa pasa a la siguiente fase (en esto tuve la ayuda de DriverOP a quién agradezco).
La siguiente fase es la conexión con la base de datos, la conversión de los valores del formulario a variable y la inserción de los mismos en la base de datos. Pero no sucede.
Tengo este formulario:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Página de registro</title>
<link href="estilos.css" rel="stylesheet" type="text/css" media="screen" />
<script>
function enviar()
{
var ok = true;
<!--recogida de variables-->
var name = document.getElementById("nombre").value;
var user = document.getElementById("usuario").value;
var correo = document.getElementById ("email").value;
var posarroba = correo.indexOf("@"); <!--Asignamos a una variable la posicion del carácter-->
var pospunto = correo.lastIndexOf(".");
var contra1 = document.getElementById("pass1").value;
var contra2 = document.getElementById("pass2").value;
var year = document.getElementById("año").selectedIndex;
var day = document.getElementById("dia").selectedIndex;
var month = document.getElementById("mes").selectedIndex;
<!--Validación de los campos del forumalario-->
if (name==null || name == "")
{
document.getElementById("error").innerHTML = "Este campo no puede estar vacio";
ok=false;
}
if (user==null || user == "")
{
document.getElementById("error2").innerHTML = "Este campo no puede estar vacio";
ok=false;
}
if (posarroba<1 || pospunto<posarroba+2 || pospunto+2>=correo.length)
{
document.getElementById("error3").innerHTML = "El correo esta mál escrito";
ok=false;
}
if (contra1.length <= 6)
{
document.getElementById("error4").innerHTML = "Escribe como mínimo seis letras";
ok=false;
}
if (contra1 != contra2)
{
document.getElementById("error5").innerHTML = "Las claves no son iguales";
ok=false;
}
if (year==null || year==0 || month==null || month==0 || day==null || day==0)
{
document.getElementById("error6").innerHTML = "Tienes que escoger una fecha de nacimiento";
ok=false;
}
else
{
window.location.assign("registro_aceptado.php")
}
return ok;
}
</script>
</head>
<body>
<h1 class="titular"> Crea tu usuario </h1>
<form class="formulario" id="registro" onSubmit="return enviar();">
<fieldset>
<legend> *Campos obligatorios </legend>
<div>
Tu nombre:
<input type="text" id="nombre"><p class="fallos" id="error"></p><br />
</div>
<div>
Tu usuario:
<input type="text" name="user" id="usuario"><p class="fallos" id="error2"></p><br />
</div>
<div>
Tu email:
<input type="text" name="ema" id="email"><p class="fallos" id="error3"></p><br /><br />
</div>
<div>
<label for="contraseña">Tu contraseña:</label>
<input type="password" id="pass1"><p class="fallos" id="error4"></p><br />
</div>
<div>
<label for="contraseña2">Vuelve a escribir tu contraseña:</label>
<input type="password" id="pass2"><p class="fallos" id="error5"></p><br />
</div>
<div>
<label for="fecha">Fecha de nacimiento:</label>
<select id="dia">
<option value="">-Día-</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
<select id="mes">
<option value="">-Mes-</option>
<option value="enero">enero</option>
<option value="febrero">febrero</option>
<option value="marzo">marzo</option>
<option value="abril">abril</option>
<option value="mayo">mayo</option>
<option value="junio">junio</option>
<option value="1">julio</option>
<option value="1">agosto</option>
<option value="1">sepiembre</option>
<option value="1">octubre</option>
<option value="1">noviembre</option>
<option value="1">diciembre</option>
</select>
<select id="año">
<option value="">-Año-</option>
<option value="2000">2000</option>
<option value="1999">1999</option>
<option value="1998">1998</option>
<option value="1997">1997</option>
<option value="1996">1996</option>
<option value="1995">1995</option>
<option value="1994">1994</option>
<option value="1993">1993</option>
<option value="1992">1992</option>
<option value="1991">1991</option>
</select><p class="fallos" id="error6"></p><br />
</div>
<div>
<label for="sexo">¿Cuál es tu sexo?</label><br />
Mujer <input type="radio" id="sexo" value="mujer" checked>
Hombre <input type="radio" id="sexo" value="hombre"><br />
</div>
<input type="reset" value="Borrar">
<button type="submit">¡Registrarme!</button>
</form>
</fieldset>
<br />
</body>
</html>
Y estas son las pruebas que he hecho para insertar los datos (omito la conexión a la base de datos, que funciona y escribo el código sólo con una variable para simplificar)
<?php
$nombre = $_POST['nombre'];
mysql_select_db("registro");
mysql_query("insert into usuarios (nombre,usuario,email,password) VALUES ('$nombre')");
?>
<h1><div align="center">Registro Insertado</div></h1><br/>
<a href="entrada.php">Ir al formulario de entrada</a>
</body>
</html>
ERROR:
Notice: Undefined index: nombre in C:\wamp\www\practicas\proyecto\registro_aceptado.php
¿Qué estoy escribiendo mal?
Y aquí viene otra pregunta: en los campos del formulario, ¿debo utilizar id y name? Esto lo digo porque cuando construí la primera versión del formulario sin validación, utilice name y no id y, en ese caso, si entraban los valores en la tabla sin ningún error. Sin embargo, para que la validación del formulario me funcione tengo que utilizar id. No entiendo por qué.
En cualquier caso, en la versión del formulario con validación, he probado a utilizar name e id al mismo tiempo pero me sigue dando el mismo error.
Agradeceré eternamente un poco de iluminación