Un script para generar dos campos de formulario SELECT dinámicos y combinados, con programación cliente Javascript y Ajax con jQuery y programación servidor por medio de PHP y MySQL.
Para ello vamos a relatar un caso práctico completo. Un sistema que nos permitirá escoger provincias en un select y luego una población en otro select, que dependerá de la provincia seleccionada en el promer select. Veremos todo el sistema de manera global, desde la programación del cliente con Javascript y Ajax, pasando por el desarrollo en el servidor por medio de PHP y una base de datos MySQL donde están todas las provincias y poblaciones. Además, utilizaremos el el framework Javascript jQuery, para facilitarnos la vida gracias a sus funciones para hacer Ajax y modificar el DOM de la página.
Así mismo, podemos consultar otros artículos que también tratan sobre hacer este tipo de interfaces de usuario, como Elementos de formulario select asociados con Javascript http://www.desarrolloweb.com/articulos/1281.php o bien Selects combinados con Ajax y PHP.
En el ejercicio utilizaremos en total 3 tablas: provincias, poblaciones y clientes. En este tutorial vamos a insertar y modificar la base de datos, para ello necesitaremos crear 3 documentos: insertar.php, modificar.php y buscar.php.
Para los documentos insertar.php y modificar.php iniciamos el documento poniendo la conexión a base de datos y el enlace con la librería jQuery.
<?
function Conectarse(){
if (!($link=mysql_connect("localhost","root","")))
{echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("desarrolloweb",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
$link=Conectarse();
echo "<!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=ISO-8859-1\" />
<script src=\"http://code.jquery.com/jquery-latest.js\"></script>
</head>
<body>";
?>
Y para su finalización :