Foros del Web » Programando para Internet » PHP »

Combos dependientes en php

Estas en el tema de Combos dependientes en php en el foro de PHP en Foros del Web. Buenas. Deseo crear 2 combos dependientes, es decir, dinámicos en php.Por ejemplo tengo una Base de Datos Mysql con una tabla Países y otra tabla ...
  #1 (permalink)  
Antiguo 11/07/2011, 22:41
 
Fecha de Ingreso: julio-2010
Mensajes: 75
Antigüedad: 14 años, 3 meses
Puntos: 2
Combos dependientes en php

Buenas. Deseo crear 2 combos dependientes, es decir, dinámicos en php.Por ejemplo tengo una Base de Datos Mysql con una tabla Países y otra tabla Provincia. La idea es que en el primer Select o listbox seleccione un país y de acuerdo a esa selección el segundo Select aparezcan las provincias del país elegido. No quiero meterme con Ajax ya que soy novata y nunca lo he trabajado, quiero hacer esto mediante php. Tengo el siguiente código que me deja seleccionar el país y me sale las opciones de él en el lisbox de abajo , sin embargo, el nombre del país no queda seleccionado, y cuando selecciono la provincia sale es el id del país no el nombre.
mi tabla país tiene idpais nombre
mi tabla provincia tiene idpais provincia

El código php

<?php include("mysql.php");

$db = new MySQL();
$consulta_pais = $db->consulta("SELECT * FROM pais");
echo '<html>';
echo '<form method="post" action="combo2.php">';

$pais=$_POST['pais'];
$departamentos=$_POST['departamentos'];
//$distrito=$_POST['distrito'];
//lo saque de aqui http://www.forosdelweb.com/f18/combobox-dinamicos-php-2-mas-combos-anidados-575482
echo '<select name="pais" onChange="submit()" style="position:absolute;left:14px;top:5px;width:1 86px;font-family:Times New Roman;font-size:16px;z-index:0">';
if ($db->num_rows($consulta_pais)>0){
//echo "<option value= '$pais'>".$pais.'</option>';
while ($resultado=$db->fetch_array($consulta_pais)){ echo '<option value= "'.$resultado['idpais'].'">'.$resultado['nombre'].'</option>';
}
}
echo '</select>';
echo '<br>';

$consulta_cod_pais = $db->consulta("SELECT idpais FROM pais WHERE idpais='$pais'");
$resultado_cod_pais=$db->fetch_array($consulta_cod_pais);
$cod_pais=$resultado_cod_pais['idpais'];
$consulta_departamento = $db->consulta("SELECT * FROM deptos where idpais='$pais'");


echo '<select name="departamentos" onChange="submit()" style="position:absolute;left:14px;top:35px;width: 186px;font-family:Times New Roman;font-size:16px;z-index:1">';
if ($db->num_rows($consulta_departamento)>0){
//echo "<option value= '$departamentos'>".$departamentos.'</option>';
while ($resultado=$db->fetch_array($consulta_departamento)){ echo '<option value= "'.$resultado['idpais'].'">'.$resultado['provincia'].'</option>';
}
}
echo '</select>';
echo '<br>';

echo '</html>';
echo '</form>';
?>
Cómo puedo hacer para mantener el Nombre del País en el Select 1 una vez elegido, y cómo puedo mantener y mostrar el nombre de la provincia
  #2 (permalink)  
Antiguo 11/07/2011, 23:19
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 2 meses
Puntos: 188
Respuesta: Combos dependientes en php

Hola que tal.

Mira la verdad es que AJAX es mucho mas sencillo de lo que parece. Es comun que los recientes practicantes de la programación en PHP les de miedo interactuar con otros lenguajes de apoyo, como lo es AJAX, pero éste miedo hay que quitárselo.

(En esencia Solo hay 2 formas de hacer eso que quieres con PHP, una es usando un lenguaje Asincronico y la otra es sin usar alguno)

Solo debes de saber que si te decides a no usar AJAX; deberás recoger los valores del formulario "PAIS" y al hacer submit, mediante una nueva consulta con PHP obtengas las provincias.

Esto sería algo asi como:


Código HTML:
Ver original
  1. Indica tu Pais
  2. |    SELECT DE FORMULARIO  |   | submit  | <!-- Boton de formulario -->
  3. .
  4. .
  5. .
  6. .
  7. => muestro provincias

Con respecto a tu última duda.

Cita:
Cómo puedo hacer para mantener el Nombre del País en el Select 1 una vez elegido, y cómo puedo mantener y mostrar el nombre de la provincia
Lo que puedes hacer es recibir por POST el valor del campo Pais he insertarlo dentro del campo despues del submit.

ej.
<option selected="selected">$_POST['pais']</option>


Es todo saludos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #3 (permalink)  
Antiguo 12/07/2011, 07:08
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 10 meses
Puntos: 209
Respuesta: Combos dependientes en php

no tengas miedo a usar ajax
mira esto que sencillo es

http://micodigobeta.com.ar/?p=487

es con jquery...
leetelo, intentalo y cualquier duda, estamos acá
__________________
aconcaguaestudio.com
  #4 (permalink)  
Antiguo 12/07/2011, 08:31
 
Fecha de Ingreso: julio-2010
Mensajes: 75
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Combos dependientes en php

Gracias por tu respuesta. Vi los ejemplos del link que me sugeriste. Sin embargo, mis combos no están definidos sus valores, es decir, los debe traer de la base de datos. Mi primer Select es para que la persona escoja un Curso, los cuales pueden ser creados e insertados en la base de datos, así que el número de cursos no se mantiene puede crecer. Mi segundo Select son los módulos o unidades del curso seleccionado . Por lo que no conozco todas las selecciones como para ponerlas en arreglos como sale en el ejemplo. Cómo puedo hacer combos dependientes totalmente dependientes de lo que está almacenado en la base de datos. Estoy trabajando con Mysql
  #5 (permalink)  
Antiguo 12/07/2011, 08:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Combos dependientes en php

Es solo que cambies el array que se genera por un array que tu generes de MySQL, esa parte es la más fácil, intenta hacer el ejemplo, ya que lo tengas funcionando cambia el array de PHP por un array que tu generes desde la base de datos.

Saludos.
  #6 (permalink)  
Antiguo 12/07/2011, 23:18
 
Fecha de Ingreso: julio-2010
Mensajes: 75
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Combos dependientes en php

Buenas. Disculpa pero no tendrás un ejemplo directamente usando base de datos? Tengo confusión sobre cómo hacerlo, soy novato en esto de la programación.
  #7 (permalink)  
Antiguo 13/07/2011, 00:49
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 13 años, 6 meses
Puntos: 261
Respuesta: Combos dependientes en php

Aquí puedes descargar uno totalmente funcional de 3 niveles.
http://www.drbizarre.net/post/combob...n-poco-de-ajax

La demo, por si quieres ver como funciona:
http://www.drbizarre.net/tester/selects/index.html

Echa un vistazo al code, intenta comprenderlo por si necesitar hacer ajustes te será más fácil.

PD.: Hay más, pero de los que he encontrado es el más sencillo de implementar.
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #8 (permalink)  
Antiguo 13/07/2011, 08:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Combos dependientes en php

Por ejemplo en el ejemplo que te pusieron, si el primer select se genera así:
Código PHP:
Ver original
  1. $array_areas = array(
  2.         0=>"Seleccione",
  3.         1=>"Direcciones",
  4.         2=>"Departamentos",
  5.         3=>"Divisiones",
  6.         4=>"Servicios",
  7.         5=>"Secciones");
  8. ?>

Lo puedes generar de igual manera usando tu bdd:
Código PHP:
Ver original
  1. $array_areas = array();
  2. $query = "SELECT id_area, area FROM areas";
  3. $result = mysql_query($query);
  4.  
  5. while($row = mysql_fetch_array($result)) {
  6.       $array_areas[$row['id_area']] = $row['area'];
  7. }

y así ya tendrías tu $array_areas creado de igual manera para trabajar con el combo dependiente.

Saludos.

Etiquetas: combos, dependientes, html, mysql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:58.