jueves, 3 de septiembre de 2009

Grabar datos del Select multiple en php y mysql

Hola que tal aqui les dejo un pequeño ejemplo sobre el uso del select con multiples selecciones:

Bien para empezar debemos de crear la BD a la cual la vamos a denominar Sisteduvirtual:
/*script*/
create database Sisteduvirtual
go
/*fin de la creación de la BD*/

Ahora pasamos a crear las tablas que en este ejemplo son dos: Curso y pre_requisito

/*crear tabla curso*/

CREATE TABLE `curso` (
`idcurso` int(11) NOT NULL auto_increment,
`nombre` varchar(50) character set utf8 collate utf8_spanish2_ci NOT NULL,
`descripcion` varchar(50) character set utf8 collate utf8_spanish2_ci NOT NULL,
PRIMARY KEY (`idcurso`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

/*crear tabla pre_requisito*/

CREATE TABLE `pre_requisito` (
`idcurso` int(11) NOT NULL,
`idcursore` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_spanish2_ci;

Bien ahora vamos a crear el archivo de conección de la BD (conexion.php)

function conectarse()
{
if (!($link = mysql_connect("127.0.0.1","root","clave")))
{
echo"Error conectado a la Base de Datos";
exit();
}
if (! mysql_select_db("sisteduvirtual",$link))
{
echo"Error seleccionando Base de Datos";
exit();
}
return $link;
$link=conectarse();
}
?>


Una vez hecho todos esto vamos a crear nuestro formulario en el que se incluye 4 input type=text,un select multiple="multiple" y un input type="submit" y lo denominamos index.php


include ("conexion.php");
$link = conectarse ();
//******

//**Realizamos la consulta para llenar nuestro select
$sqlrequi="SELECT c.idciclo,c.idcurso, c.nombre AS nombre, c.descripcion as curso,cic.ciclo,cic.descripcion FROM credito_curso cre INNER JOIN curso c ON c.idcredito = cre.idcredito INNER JOIN ciclo cic ON cic.idciclo = c.idciclo INNER JOIN escuela e ON e.idescuela = cic.idescuela order by cic.ciclo,nombre";
$resultrequi=@mysql_query($sqlrequi);

?>




Ahora procedemos a crear el archivo grabar.php//**** incluimos al archivo de coneccióninclude ("conexion.php");
$link = conectarse ();
//******


$sql = "INSERT INTO curso (nombre, descripcion) VALUES ('".$_POST["nom"]."', '".$_POST["des"]."')";
$result = mysql_query ($sql);
?>
//capturamos id para enlazar curso con su pre-requisito
$consulta='select * from curso order by idcurso desc limit 1';
$c=mysql_query($consulta);
while($rowc=@mysql_fetch_array($c)){
$id=$rowc['idcurso'];
}

//usamos un foreach para recorrer el arreglo( valores de nuestro select y guardarlos en la tabla pre_requisitoif(isset($_POST['pr'])){
foreach( $_POST['pr'] as $prereq ) {
echo $prereq;
$sqli="insert into pre_requisito(idcurso,idcursore) values($id,'$prereq')";
$resulti=mysql_query($sqli);
}
}
else{
foreach( $_POST['pr'] as $prereq ) {
echo $prereq;
$sqli="insert into pre_requisito(idcurso,idcursore) values($id,'$prereq')";
$resulti=mysql_query($sqli);
}
}?>

Y asi hemos llegado al final de este pequeño ejemplo espero que les sirva de mucho

4 comentarios:

  1. Gracias por este magnífico ejemplo espero que sigas publicando más cosas

    ResponderEliminar
  2. Por favor publica la tabla faltante

    ResponderEliminar
  3. Podria publicar la tabla credito_curso por favor

    ResponderEliminar
    Respuestas
    1. Es simple la tabla credito_curso tiene los id de la tabla curso y el id de la tabla credito:

      Eliminar