Foros del Web » Programando para Internet » Javascript »

Llenar combobox dependiente de los datos de otro combo

Estas en el tema de Llenar combobox dependiente de los datos de otro combo en el foro de Javascript en Foros del Web. Bueno, a ver si va esto aqui, pues aunque el código tiene php y javascript, yo creo que el fallo puede estar en el JavaScript.(tutorial ...
  #1 (permalink)  
Antiguo 21/09/2010, 05:13
 
Fecha de Ingreso: junio-2009
Mensajes: 30
Antigüedad: 14 años, 10 meses
Puntos: 0
Llenar combobox dependiente de los datos de otro combo

Bueno, a ver si va esto aqui, pues aunque el código tiene php y javascript, yo creo que el fallo puede estar en el JavaScript.(tutorial que pille por ahi)
El problema es que carga el primer combo con los datos de la tabla, pero el segundo combo no lo carga en funcion de lo elegido en la primera, bueno, no carga nada con los datos de la otra tabla.
Gracias.
Tengo estas tablas en SQL

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Base de datos: `pruebacombo`

-- Estructura de tabla para la tabla `departamentos`
--

CREATE TABLE IF NOT EXISTS `departamentos` (
`Id` int(6) unsigned NOT NULL AUTO_INCREMENT,
`Id_depto` int(4) NOT NULL DEFAULT '0',
`nombre_depto` varchar(50) DEFAULT NULL,
UNIQUE KEY `indice` (`Id`,`Id_depto`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Volcar la base de datos para la tabla `departamentos`
--

INSERT INTO `departamentos` (`Id`, `Id_depto`, `nombre_depto`) VALUES
(1, 1, 'Contabilidad'),
(1, 2, 'Marketing'),
(1, 3, 'Bodega Central'),
(2, 1, 'Informatica'),
(2, 2, 'Ventas'),
(2, 3, 'Gerencia'),
(3, 1, 'Capacitacion'),
(3, 2, 'Abastecimiento'),
(3, 3, 'Recursos Humanos');

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `empresas`
--

CREATE TABLE IF NOT EXISTS `empresas` (
`Id` int(6) unsigned NOT NULL AUTO_INCREMENT,
`descripcion` varchar(10) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Volcar la base de datos para la tabla `empresas`
--

INSERT INTO `empresas` (`Id`, `descripcion`) VALUES
(1, 'Empresa001'),
(2, 'Empresa002'),
(3, 'Empesa003'),
(4, 'Empresa 04');

====================================
Y este es el codigo PHP y JavaScript
====================================
<?php
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "";
$bd_base = "pruebacombo";

$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);

$sql = "SELECT * from empresas";
$rs = mysql_query($sql, $con);
echo "el numero de consultas es".mysql_num_rows($rs);

?>
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<p>Seleccion de un select y cambiar los valores de otro select sin tener que submitar </p>
<form name="miformulario" method="get">
<table width="249" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Empresa</td>
<td>Departamento</td>
</tr>
<tr>
<td><select name="empresa" id="empresa" onChange="componer_Centros(this.value)">
<option value="">--Seleccione--</option>
<?php if(mysql_num_rows($rs)>0)
{

while($row = mysql_fetch_assoc($rs))
{
//echo '<option value="'. $row['Id'].'" '.'>'.$row['Id'].'-'.$row['descripcion'].'</option>';
?>
<option value="<?php echo $row['Id']?>"><?php echo $row['descripcion']?></option>
<?php

}
}

?>
</select></td>
<td><select name="depto" id="depto">
<option>--seleccione--</option>
</select></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</form>
</body>
</html>
<script>
function componer_Centros(cod_area)
{
//alert("hola");
document.miformulario.depto.length=0;
document.miformulario.depto.options[0] = new Option("-- Seleccione --","","defaultSelected","");
var indice=1;
<?php
$sql_depto = "SELECT * from departamentos";
$rs_depto = mysql_query($sql_depto, $con);
if(mysql_num_rows($rs_depto)>0)
{
echo "la cantidad de departamentos".mysql_num_rows($rs_depto);
while($row_depto = mysql_fetch_assoc($rs_depto))
{

?>
if(cod_area=='<?php=$row_depto["Id"]?>')
{
document.miformulario.depto.options[indice] = new Option("<?=$row_depto["nombre_depto"]?>","<?=$row_depto["Id_depto"]?>");
indice++;
}
<?php
}
}
mysql_close($con);
?>
}

</script>
  #2 (permalink)  
Antiguo 21/09/2010, 05:30
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Llenar combobox dependiente de los datos de otro combo

Hola

El asunto trata sobre select dependientes. Aquí tienes un caso usando AJAX

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 21/09/2010, 07:15
 
Fecha de Ingreso: octubre-2003
Ubicación: lima
Mensajes: 57
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Llenar combobox dependiente de los datos de otro combo

Usando solo java, tendrias que crear una matriz de 2 por n, es decir, UN POCO GRANDE Prueba con ajax.... ;)
__________________
GUMER FERNANDEZ HUATUCO
--------------------------------------
Solo hay un dio$
  #4 (permalink)  
Antiguo 21/09/2010, 07:50
 
Fecha de Ingreso: junio-2009
Mensajes: 30
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Llenar combobox dependiente de los datos de otro combo

Algo he arreglado cambiando estas líneas ahora por lo menos me aparecen los del primer combo:
<option value="<?php= echo $row['Id']?>"><?php echo $row['Id'].'-'.$row['descripcion']?></option>

document.miformulario.depto.options[indice] = new Option("<?php echo $row_depto['nombre_depto']?>","<?php echo $row_depto['Id_depto']?>");

Y del segundo combo no me sale nada, a no ser que anule esta línea:
if(cod_area=="<?php=$row_depto['Id']?>"),
en este caso me salen todos los departamentos. pero yo necesito

A ver si a alguien se le ocurre algo sin tener que usar java o ajax
Gracias
  #5 (permalink)  
Antiguo 21/09/2010, 08:15
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Llenar combobox dependiente de los datos de otro combo

Hola

Es pura lógica que te liste todos los registros, no estás haciendo ningún filtrado
Cita:
$sql_depto = "SELECT * from departamentos";
Lo único que tienes para hacer el filtrado es cod_area que nunca podrás usarlo para tal fin

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Etiquetas: combo, combobox, dependiente, llenar
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 15:06.