Cambialo así
Código HTML:
<!--Esta pagina se llama ahora pagina.tmpl.php y solo se encarga de mostrar la informacion ->
<form method="post" action="">
<input type="text" name="nombre" placeholder="nombre"/>
<input type="text" name="mail" placeholder="email"/>
<select name="codigocurso">
<option value="1">PHP</option>
<option value="2">ASP</option>
<option value="3">JSP</option>
</select>
<input type="submit" name="submit" value="registrar"/>
</form>
Luego en otra pagina (yo te recomendaria que todas las logicas las hagas en una pagina diferente y solo dejes el el php de arriba donde esta la forma sola, solo mostrar o recibir la data del controller -que en este caso esta abajo-), luego escribes esto:
Código PHP:
<?php
//Este script esta en un archivo diferente de donde esta la forma a completar
try
{ //Se conecta a la base de datos mysql a traves de pdo
$pdo=new PDO("mysql:host=localhost;dbname=base1","root","");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e)
{
//Si encuentra un error a la hora de conectarse a la db, la linea de abajo te dira el error
die("No se pudo conectar a la base de datos, error: ". $e->getMessage());
}
//Cuando el usuario Aprete el bottom "Registrar"..
if(isset($_POST['submit'])){
//Guardamos los datos que el usuario escribio en variables:
$nombre= $_POST["nombre"];
$email= $_POST["mail"];
$curso= $_POST["codigocurso"];
//Revisa si el usuario NO escribio algo en la forma
if(!nombre || !$email || !$curso) {
echo "por favor llene los campos";
//Si el usuario lleno todos los datos:
} else {
//Preparamos el query
try
{
$sql=$pdo->prepare("INSERT INTO
alumnos (nombre,mail,codigocurso)
VALUES (:name,:mail,:curso) ");
//Asignamos los valores(:name, :mail, etc) a las variables de arriba
$sql->bindValue("name",$nombre);
$sql->bindValue("mail",$email);
$sql->bindValue("curso",$curso);
//Finalmente ejecutamos el codigo
$sql->execute();
//Si encuentra un error...
}catch(PDOException $d)
{
//El script se termina (porque usamos la funcio die() ) y nos da el mensaje del error:
die("No se pudo guardar datos, error: ". $d->getMessage());
}
}
}
include "pagina.tmpl.php";
Tambien estaria bueno como creaste la tabla alumnos.
Si estas en linux o mac, abri la terminal, conectate a la base de datos con:
mysql -u root -p
luego de que escribas el password y le des enter, entraras a mysql desde la terminal y luego escribes:
show databases;
luego para entrar a la base de datos donde esta alumnos escribes:
use
tubasededatos;
"tubasededatos" es el nombre de tu base de datos. Luego cuando estes adentro escribe:
show tables;
ahi te mostrara todas las tablas, y si esta la tabla "alumnos", escribe:
describe alumnos:
Y listo, luego posteas lo que dice esa tabla en este post.
Bueno eso es mas o menos. Los errores de lo que escribiste en tu post son:
1-Al <form> tag no le pones name, eso solo se lo dejas a lo que va adentro del form.
2-El input con value="registrar" es el que se encarga de enviar los datos que el usuario subio, como vos no le escribiste un "name", el script no tiene idea de donde sacar los datos, al ultimo input con type="submit" agregale esto: name="submit". No tiene que llamarse submit en el name, le podes escribir lo que queres.
3- "mysql_query("INSERT INTO alumnos(nombre,mail,codigocurso) VALUES 'Sergio','
[email protected]','2012')");
Como podes ver donde dice INSERTO INTO, significa que estas insertando valores a una tabla(en este caso alumnos), luego dice VALUES, en values vos le decis que valores queres insertar a la tabla, pero ahora mismo values, ya tiene valores insertados("Sergio",
[email protected]", etc..).
Lo que tenes que poner luego de VALUES son los datos que recibiste de la forma, esos datos los tenes que guardar en una variable, como esta escrito el script de arriba esta bien. Ahora fijate esto:
$nombre = $_POST['nombre'];
Como vos pusiste la forma con el method="post", la unica forma de obtener los datos que usuario escribio es con una super global $_POST, que queremos obtener de $_POST ?? bueno queremos obtener el nombre, y es en ese instante en donde buscamos name="name" dentro de la forma.
Entonces:
$nombre =$_POST['nombre']; significa:
Guardamos en una variable llamado nombre, el nombre que escibrio el usuario en el <input> que tiene name="nombre" .Si queres obtener los datos que el usuario escriba, necesitas obtenerlos a traves del $_POST[''], dentro de los corchetes cuadrados le tenes que escribir el valor que le pusiste dentro de cualquier name (en este caso name="nombre").
4-estas usando mysql_connect, mysql_query. NO LO USES, estas funciones traen muchas vulnerabilidades de seguridad, y estan depreciadas. la forma actual y mucho mas segura de trabajar con base de datos con php es usando mysqli, o PDO. En el script que puse arriba, php se conecta y agrega valores a la base de datos a traves de PDO.
En internet de seguro que hay varios tutoriales o videos de youtube donde te enseñan a conectarte a la base de datos y usar la base de datos con PDO, en mi caso yo lo aprendi leyendo el libro "Php from novice no ninja" o "Php fundamentals jeffrey way".
Bueno eso es todo, cualquier duda avisame.