Foros del Web » Programando para Internet » PHP »

Cargar combo dependiendo de la seleccion de otro

Estas en el tema de Cargar combo dependiendo de la seleccion de otro en el foro de PHP en Foros del Web. Hola Mi problema es que....necesito cargar un combo dependiendo de la seleccion de otro combo y todo desde una base de datos. Ademas antes de ...
  #1 (permalink)  
Antiguo 08/09/2004, 09:15
Avatar de Evert  
Fecha de Ingreso: abril-2004
Ubicación: Cochabamba - Bolivia
Mensajes: 94
Antigüedad: 13 años, 7 meses
Puntos: 2
Pregunta Cargar combo dependiendo de la seleccion de otro

Hola
Mi problema es que....necesito cargar un combo dependiendo de la seleccion de otro combo y todo desde una base de datos. Ademas antes de selecionar el combo ya se introduce una cierta cantidad de informacion en campos de tipo text y al actualizar la pagina no quiero que se pierda esa informacion.
Por favor ayudenme!!!!

Saludos a todos
  #2 (permalink)  
Antiguo 08/09/2004, 09:48
 
Fecha de Ingreso: agosto-2002
Mensajes: 301
Antigüedad: 15 años, 4 meses
Puntos: 2
una solucion seria utilizando php mas javascript
esto lo utilizado con asp, pero es lo mismo

Select con opciones padres
aqui se encuentran los valores y nombres de las empresas(en este ejemplo)
<select name="empresa" id="empresa" onChange="componer_Centros(this.value)">
<option>--Seleccione--</option>
<%do while not R_bu.eof%>
<option value="<%=R_bu(1)%>" ><%=R_bu(3)%></option>
<%R_bu.movenext
loop
R_bu.close%>
</select>

select con los hijos
por defecto aparece vacio y se llana segun la opcion elegida en el select de
empresas

<select name="select1" style="width: 300">
<option value=></option></option>
</select>

funcion javascript con asp o php que se encarga de crear las posibles
opciones para llenar el select de los hijos

<script>
function componer_Centros(cod_area)
{
//alert(cod_area);
document.Hotelform.select1.length=0;
document.Hotelform.select1.options[0] = new Option("-- Seleccione --","","defaultSelected","");
var indice=1;
<%
set R_c_costos = Objetoarea.llena_area("depart_tbl")
do while not R_c_costos.eof%>
if(cod_area=='<%=R_c_costos("ID_BU")%>')
{
document.Hotelform.select1.options[indice] = new Option("<%=trim(R_c_costos("ID_CC"))&"-"&trim(R_c_costos("CC_Area"))%>","<%=trim(R_c_cost os("ID_CC"))%>");
indice++;
}
<%R_c_costos.movenext
loop
R_c_costos.close%>
}

</script>

si tienes mas dudas me avisas
  #3 (permalink)  
Antiguo 08/09/2004, 12:13
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 15 años, 4 meses
Puntos: 2
Aca tienes en las FAQ de JS: http://www.forosdelweb.com/showthre...9655#post259655
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #4 (permalink)  
Antiguo 08/09/2004, 12:57
Avatar de e-miliox  
Fecha de Ingreso: noviembre-2002
Ubicación: San Antonio - Chile
Mensajes: 223
Antigüedad: 15 años, 1 mes
Puntos: 7
http://www.forosdelweb.com/showthrea...999#post664999

esa es (la anterior no funcionaba no se porque...)

PD: voy a ver si puedo aportar a la faq con una funcoin que hice hace tiempo que genera los combos enlazados, tu le das los parametros y te devuelve 3 variables, las dos primeras contienen el codigo html de los combos y la tercera el codigo javascript para que funcione la cosa, tengo que buscarlo y lo posteo.

saludos!
__________________
=PoWeReD By MySeLf!=
  #5 (permalink)  
Antiguo 08/09/2004, 13:56
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 15 años, 4 meses
Puntos: 2
Excelente, asi contribuyes a enriquecer los foros. Un saludo!
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #6 (permalink)  
Antiguo 08/09/2004, 14:08
Avatar de Evert  
Fecha de Ingreso: abril-2004
Ubicación: Cochabamba - Bolivia
Mensajes: 94
Antigüedad: 13 años, 7 meses
Puntos: 2
Vito gris...gracias por el ejemplo....es lo que necesito ...pero tengo problemas porque no se como obtener el array con los resultados de la consulta para llenar el segundo combo desde el interior del codigo javascript ya uqe no puedo usar la variable que le paso a la funcion de javascript dentro de mi codigo php.
  #7 (permalink)  
Antiguo 08/09/2004, 15:27
 
Fecha de Ingreso: agosto-2002
Mensajes: 301
Antigüedad: 15 años, 4 meses
Puntos: 2
Bueno aqui va un ejemplo

1) crear una base de datos (MYSQL) de nombre mibase
2)ejecutar las isntrucciones sql
3)probar el archivo

*********SCRIPT SQL****************
# Tabla departamentos

CREATE TABLE `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`)
) TYPE=MyISAM;

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

# Tabla empresas


CREATE TABLE `empresas` (
`Id` int(6) unsigned NOT NULL auto_increment,
`descripcion` varchar(10) default NULL,
PRIMARY KEY (`Id`)
) TYPE=MyISAM;

INSERT INTO `empresas` VALUES (1,'Empresa001');
INSERT INTO `empresas` VALUES (2,'Empresa002');
INSERT INTO `empresas` VALUES (3,'Empesa003');

*********FIN SCRIPT SQL*******************


***********PAGINA PHP********************
<?
$bd_host = "localhost";
$bd_usuario = "localhost";
$bd_password = "";
$bd_base = "mibase";

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

$sql = "SELECT * from empresas";
$rs = mysql_query($sql, $con);

?>
<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 (valido segun su uso)</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>
<? if(mysql_num_rows($rs)>0)
{
while($row = mysql_fetch_assoc($rs))
{
?>
<option value="<?=$row["Id"]?>"><?=$row["descripcion"]?></option>
<?
}
}

?>
</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(cod_area);
document.miformulario.depto.length=0;
document.miformulario.depto.options[0] = new Option("-- Seleccione --","","defaultSelected","");
var indice=1;
<?
$sql_depto = "SELECT * from departamentos";
$rs_depto = mysql_query($sql_depto, $con);
if(mysql_num_rows($rs_depto)>0)
{
while($row_depto = mysql_fetch_assoc($rs_depto))
{

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

</script>

***********FIN PAGINA PHP*****************
  #8 (permalink)  
Antiguo 08/09/2004, 16:01
Avatar de Evert  
Fecha de Ingreso: abril-2004
Ubicación: Cochabamba - Bolivia
Mensajes: 94
Antigüedad: 13 años, 7 meses
Puntos: 2
Funciona muy bien
GRACIAS vito_gris
  #9 (permalink)  
Antiguo 13/09/2005, 03:05
 
Fecha de Ingreso: septiembre-2005
Mensajes: 2
Antigüedad: 12 años, 3 meses
Puntos: 0
Problemilla con vuestro código

Buenas, he hecho una ligera modificación del código de VITO_GRIS, pero me da un problema y es que no me pasa el valor que deberia, el caso es que no se como pasarle el valor que recoge la funcion para se lo pase a la sentencia SQL.

Gracias a todos.

Este es el código:

function llenarcombo(a)
{

document.form1.NoSerie.length=0;
document.form1.NoSerie.options[0] = new Option("-- Seleccione uno --","","defaultSelected","");
var indice=1;

<%
sql = "select * from almareal where ref1 = '"& a &"';"
call LeerDb(sql,rst,3)
if rst.eof then
%>
document.form1.NoSerie.length=0;
document.form1.NoSerie.options[0] = new Option("No hay existencias","","defaultSelected","");
var indice=1;
<%
else
do until rst.eof
%>
document.form1.NoSerie.options[indice] = new Option("<%=rst("reffab1") %>","<%=rst("reffab1") %>");
indice++;
<%
rst.movenext
loop
end if
%>
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 16:01.