-Tengo una base de datos, a la cual he llamado Ejemplo.
-Cuatro tablas dentro de Ejemplo.
-pais
paisId -- País
1 -- España
2 -- Francia
-ciudad
ciudadId -- Ciudad -- paisId
1 -- Madrid -- 1
2 -- Barcelona-- 1
3 -- Paris -- 2
4 -- Niza -- 2
-lugares
lugarid -- Lugar -- ciudadId
1 -- Museo -- 1
1 -- Museo -- 2
1 -- Museo -- 3
1 -- Museo -- 4
2 -- Cine -- 1
2 -- Cine -- 2
2 -- Cine -- 3
2 -- Cine -- 4
3 -- Teatro -- 1
3 -- Teatro -- 2
3 -- Teatro -- 3
3 -- Teatro -- 4
-datoslugares
ciudadId -- Población -- Museos -- Cines -- Teatros
1 -- PobA -- MusA -- CinA -- TeatA
1 -- PobB -- MusA -- CinA -- TeatA
1 -- PobC -- MusA -- CinA -- TeatA
2 -- PobA -- MusA -- CinA -- TeatA
2 -- PobB -- MusA -- CinA -- TeatA
2 -- PobC -- MusA -- CinA -- TeatA
3 -- PobA -- MusA -- CinA -- TeatA
3 -- PobB -- MusA -- CinA -- TeatA
3 -- PobC -- MusA -- CinA -- TeatA
4 -- PobA -- MusA -- CinA -- TeatA
Bien, he creado una pag a la cual he llamado ejemplo.html
Código HTML:
y cuatro más en php:Ver original
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <script type="text/javascript"> $("document").ready(function(){ $("#pais").load("pais.php"); $("#pais").change(function(){ var id = $("#pais").val(); $.get('ciudad.php',{param_id:id}) .done(function(data){ $("#ciudad").html(data); $("#ciudad").change(function(){ var id2 = $("#ciudad").val(); $.get('lugares.php',{param_id:id2}) .done(function(data){ $("#lugares").html(data); $("#lugares").change(function(){ var id2 = $("#ciudad").val(); var id3 = $("#lugares option:selected").text(); $.post('mostrar.php',{lug_id:id3, param_id:id2}) .done(function(data){ $("#mostrar").html(data); }) }) }) }) }) }) }) </script> </head> <body> <select id="pais"> </select> <select id="ciudad" > </select> <select id="lugares" > </select> <div id="mostrar"> </div> </body> </html>
país.php
Código PHP:
Ver original
<?php $servidor="localhost"; $usuario="root"; $pass=""; $bd="Ejemplo"; $con = mysqli_connect($servidor,$usuario, $pass, $bd); //realizamos conexion y seleccionamos base de datos $result = mysqli_query($con, "SELECT * FROM paises" );//almacenamos en $result todos(*) los resultados de la tabla paises echo'<option>Selecciona:</option>'; echo '<option value="'.$row['paisId'].'">'.$row['Pais'].' </option>';//Mostramos los resultados de Pais dentro de las opciones } ?>
ciudad.php
Código PHP:
Ver original
<?php $paisid = $_GET['param_id']; $servidor="localhost"; $usuario="root"; $pass=""; $bd="Ejemplo"; $con = mysqli_connect($servidor,$usuario, $pass, $bd); //realizamos conexion y seleccionamos base de datos $result = mysqli_query($con, "SELECT * FROM ciudad WHERE paisId = $paisid");//almacenamos en $result todos(*) los resultados de la tabla ciudad que coincidan en el paisIdId echo'<option>Selecciona:</option>'; echo '<option value="'.$row['ciudadId'].'">'.$row['Ciudad'].' </option>';//Mostramos los resultados de Ciudad dentro de las opciones } ?>
lugares.php
Código PHP:
Ver original
<?php $ciudadid = $_GET['param_id']; $servidor="localhost"; $usuario="root"; $pass=""; $bd="Ejemplo"; $con = mysqli_connect($servidor,$usuario, $pass, $bd); //realizamos conexion y seleccionamos base de datos $result = mysqli_query($con, "SELECT * FROM lugares WHERE ciudadId = $ciudadid");//almacenamos en $result todos(*) los resultados de la tabla lugares que coincidan en el ciudadId echo'<option>Selecciona:</option>'; echo '<option >'.$row['lugares'].' </option>';//Mostramos los resultados de lugares dentro de las opciones } ?>
y mostrar.php
Código PHP:
Ver original
<?php $ciudadid = $_POST['param_id']; $lugar = $_POST['prop_id']; //echo $tropa; //echo $propiedad; $servidor="localhost"; $usuario="root"; $pass=""; $bd="Ejemplo"; $con = mysqli_connect($servidor,$usuario, $pass, $bd); //realizamos conexion y seleccionamos base de datos switch ($propiedad){ case['Museos']: echo $row[1];//que corresponde a la columna Poblacion echo $row[2];}//que corresponde a la columna Museos en la tabla break; case['Cines']: echo $row[1]; echo $row[3];}//que corresponde a la columna Cines break; case['Teatros']: echo $row[1]; echo $row[4];}//que corresponde a la columna Teatros break; default: break; } ?>
Todos los select funcionan perfectamente, se llenan dependiendo de la selección del usuario, pero no soy capaz de lograr que ,tras seleccionar la opción en el ultimo select, muestre los datos correctos, o sea que el fallo esta en mostrar.php.
He de decir que ya he probado varias opciones
p.ej.
- Al realizar la consulta a la bd poner lo siguiente
Código:
Gracias anticipadas.$result = mysqli_query($con, "SELECT '".$lugar."' FROM datoslugares WHERE ciudadId=$ciudadid"); while ($row = mysqli_fetch_array($result)){ echo $row[$lugar] </option>';
P.D. ya se que el código se podría simplificar añadiendo un include :conexión p. ej. pero ahora lo que me preocupa es hacerlo funcionar.