Anteriormente publiqué un post para crear combos dependientes usando jquery, el cual podía modificarse para ser usado con una base de datos, ahora voy a publicar esa modificación. Puedes ver el post original aqui

En el caso anterior se usaban dos archivos para mostrar el nuevo contenido del combo que serían combo1.php y combo2.php

1
2
3
4
5
6
$rpta= '
    <option value="op2_1">Option1</option>
    <option value="op2_2">Option2</option>
    <option value="op2_3">Option3</option>
    '
;
echo $rpta;

¿Cómo me conecto a la base de datos?

Lo primero es conectarnos a la base de datos y buscar el elemento seleccionado en el combo y según eso llenar el otro combo por una cuestión de comodidad voy a usar una clase que se encargue de dicha conexion, puedes descargarla y ver como funciona aqui

¿Cómo busco los datos?

Para eso hay que usar una consulta sql como esta:
«SELECT * FROM ciudad WHERE pais_id LIKE ‘$_POST[elegido]'»
La consulta obviamente varia de acuerdo a nuestra base de datos, para este ejemplo estoy usando una base de datos con las tablas continente, pais y ciudad

combo1.php y combo2.php

El script para ambos similar, lo único que varía es la consulta sql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// Incluimos la configuración de la conexión de base de datos
include("includes/config.inc.php");
include("includes/mysql.class.php");
// Creamos la conexión
$db = new MySQL();  
// Abrimos la conexión
$db->open();
// Ejecutamos la consulta sql
$consulta = $db->consulta("SELECT * FROM pais WHERE continente_id LIKE '$_POST[elegido]'");
// Creamos un array para mostrar los datos del combo
if ($row = $db->fetch_array($consulta)) {
    do {
        echo
        '<option value="'.$row['pais_id'].'">'.$row['pais_name'].'</option>';
    }while($row = $db->fetch_array($consulta));
}
?>

Puedes bajar todo el código desde aquí
No olvides que para usar ese ejemplo debes subir primero la base de datos (migueltest.sql) y además debes modificar el archivo includes/config.inc.php con la información de tu servidor de base de datos