Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Selects dependientes

Estas en el tema de Selects dependientes en el foro de Frameworks JS en Foros del Web. Buenas Me imagino que muchos llegan al en que necesitan llenar un selects dependiendo de lo que se selecciono en otro... Pues yo ando con ...
  #1 (permalink)  
Antiguo 02/08/2011, 07:52
 
Fecha de Ingreso: junio-2010
Mensajes: 4
Antigüedad: 13 años, 9 meses
Puntos: 2
Exclamación Selects dependientes

Buenas

Me imagino que muchos llegan al en que necesitan llenar un selects dependiendo de lo que se selecciono en otro...

Pues yo ando con este problema ya que necesito llenar 4 selects dependientes usando Ajax y Base de Datos solo que no he encontrado uno que solvente bien esto ya que todos son para 3 selects y cuando intento agregarle un 4 ya no carga..

si alguien me podria ayudar se lo agradeceria de antemano
  #2 (permalink)  
Antiguo 02/08/2011, 22:36
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Selects dependientes

¿sin código?: es imposible ayudarte.

sí, la mayoría se limitan hasta 3, pero no es complicado extenderlo.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 03/08/2011, 00:25
 
Fecha de Ingreso: julio-2011
Ubicación: Mexico
Mensajes: 36
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Selects dependientes

Cita:
Iniciado por wibav Ver Mensaje
Buenas

Me imagino que muchos llegan al en que necesitan llenar un selects dependiendo de lo que se selecciono en otro...

Pues yo ando con este problema ya que necesito llenar 4 selects dependientes usando Ajax y Base de Datos solo que no he encontrado uno que solvente bien esto ya que todos son para 3 selects y cuando intento agregarle un 4 ya no carga..

si alguien me podria ayudar se lo agradeceria de antemano
Hecha un vistaso a esto, espero te sirva. Pero OJO en IE no sirve la funcion .change de jQuery aunque si miras el ejemplo de la pagina, por raro que parezca funciona. Yo no logro que me funcione, si te funciona a ti en IE avisame.

http://enterx.wordpress.com/2009/11/05/combos-dependientes-con-jquery-ajax/
  #4 (permalink)  
Antiguo 03/08/2011, 08:52
 
Fecha de Ingreso: julio-2011
Ubicación: Barcelona
Mensajes: 6
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Selects dependientes

Que tal si creas un array con la lista de todos tus selects, luego creas una funcion que te permita aumentar en uno el indice cada vez que llamas a onchange para que así puedas depender el primer select del posterior y asi sucesivamente
  #5 (permalink)  
Antiguo 04/08/2011, 12:30
 
Fecha de Ingreso: junio-2010
Mensajes: 4
Antigüedad: 13 años, 9 meses
Puntos: 2
De acuerdo Respuesta: Selects dependientes

Bueno muchas gracias a todos pero gracias al post de alguien que coloco en este mismo Foro resolví (el cual se me perdio el link)

Que hice, Bueno coloque 4 Selects:

El 1 Seleccionas una Empresa.

El 2 Seleccionas una Sucursal. (Este se llena de acuerdo a la empresa seleccionada).

El 3 Seleccionas un Modulo. (Este se llena al momento de selecionar una sucursal pero de acuerdo a la empresa seleccionada) .

El 4 Seleccionas una Transaccion. (Este se llena de acuerdo al Modulo seleccionado).

El codigo va asi:

index.php:

Código PHP:
<?php
include_once ('conexion.php');
$conexion = new ControlBD();
$conexion->conectar();
$conexion->seleccionarBD();
$query="select * from cgempresa";
$result=$conexion->ejecutarQuery($query);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>INDEX</title>
<script type="text/javascript" src="cargarEmails.js"></script>  
<script type="text/javascript" src="jquery.js"></script>
</head>

<body>
<form id="form" action="" method="post">
<table>
    <tr>
        <td>Empresa:</td>
        <td><select name="empresa" id="empresa"  onchange="cargarSucursales();" />
        <option value="null">---Seleccione---</option>
<?      while($array=mysql_fetch_assoc($result)){ ?>
        <option value="<?=$array['em_id']?>"><?=$array['em_nombre']?></option>
<? }?>
        </select></td>
        <td>Sucursal:</td>
        <td><select name="sucursal" id="sucursal" onchange="cargarModulos();" />
        <option value="null">---Seleccione---</option>
        </select></td>
        <td>Modulo:</td>
        <td><select name="modulo" id="modulo" onchange="cargarTransacion();" />
        <option value="null">---Seleccione---</option>
        </select></td>
        <td>Transacion:</td>
        <td><select name="transacion" id="transacion" />
        <option value="null">---Seleccione---</option>
        </select></td>
</tr>
</table>
</form>

</body>
</html>
En mi caso el Archivo Conexion.php incluido es una conexion a MySql orientado a Objeto

El Script:

Código:
cargarEmails.js

function cargarSucursales(){
    $('#sucursal').html('<option selected>Cargando</option>');           
    var idusuario= $('#empresa').val();
    var toLoad= 'ajax_sucursal.php?empresa='+ idusuario ;
    $.post(toLoad,function (responseText){                           
    $('#sucursal').html(responseText);   
                            });
}
function cargarModulos(){
    $('#modulo').html('<option selected>Cargando</option>');           
    var id= $('#empresa').val();
    var toLoad= 'ajax_modulos.php?empresa='+ id ;
    $.post(toLoad,function (responseText){                           
    $('#modulo').html(responseText);   
                            });
}
function cargarTransacion(){
    $('#transacion').html('<option selected>Cargando</option>');           
    var id= $('#modulo').val();
    var toLoad= 'ajax_trans.php?modulo='+ id ;
    $.post(toLoad,function (responseText){                           
    $('#transacion').html(responseText);   
                            });
}
Y por ultimos los archivos que hacen el llenado de los Selects:

ajax_sucursal.php:

Código PHP:
<?php
include_once ('../Gestor/conexion.php');
$conexion = new ControlBD();
$conexion->conectar();
$conexion->seleccionarBD();

$usuario$_GET['empresa'];

$query="select * from cgsucursal where su_idmepresa='$usuario'";
$result=$conexion->ejecutarQuery($query); ?>
        <option value="null">---Seleccione---</option>
<? while($rowmysql_fetch_array($result)){ ?>
        <option value="<?=$row['su_id']?>"><?=$row['su_nombre']?></option>
<? ?>
ajax_modulos.php

Código PHP:
<?php
include_once ('../Gestor/conexion.php');
$conexion = new ControlBD();
$conexion->conectar();
$conexion->seleccionarBD();

$usuario$_GET['empresa'];

$query="select * from cgmodulo where mo_idempresa='$usuario'";
$result=$conexion->ejecutarQuery($query); ?>
        <option value="null">---Seleccione---</option>
<? while($rowmysql_fetch_array($result)){ ?>
        <option value="<?=$row['mo_id']?>"><?=$row['mo_nombre']?></option>
<? ?>
ajax_trans.php

Código PHP:
<?php
include_once ('../Gestor/conexion.php');
$conexion = new ControlBD();
$conexion->conectar();
$conexion->seleccionarBD();

$usuario$_GET['modulo'];

$query="select * from cgtransacciones where tra_idmodulo='$usuario'";
$result=$conexion->ejecutarQuery($query); ?>
        <option value="null">---Seleccione---</option>
<? while($rowmysql_fetch_array($result)){ ?>
        <option value="<?=$row['tra_tipo']?>"><?=$row['tra_maestro']?></option>
<? ?>
P.D: Yo use este codigo de la duda de otra persona que posteo en este mismo foro solo que no recuerdo el link.

el Codigo de esa persona era para 2 Selects dependientes yo lo aumente a 4 por que era mi necesidad

Primera vez que Posteo algo de Programacion Perdonen mi mala forma de Explicar si tienen dudas pregunten u opinen yo tratare de revizar algo seguido...
  #6 (permalink)  
Antiguo 19/08/2011, 12:21
 
Fecha de Ingreso: febrero-2010
Ubicación: cba
Mensajes: 203
Antigüedad: 14 años, 2 meses
Puntos: 16
Respuesta: Selects dependientes

muy bueno tu aporte wibav, pero el problema que tengo es que quiero cargar los paises ( lo adapte a paises a los select ) de forma dinamica, porque en la base de datos guardo el pais y provincia que eligio el usuario y si vuelve a visitar la pagina ya tiene que aparecer el pais y pcia que eligio anteriormente, adapte el codigo de esta forma:

Código PHP:

<form id="form" action="" method="post">
<table>
    <tr>
        <td>Empresa:</td>
        <td><select name="empresa" id="empresa"  onchange="cargarSucursales();" />
        <option value="null">---Seleccione---</option>
<?while ($row=mysql_fetch_array($RESULTADO1)) 
{
    if(
$row['id']== $_SESSION['pais'])
    {
?>
        <option value="<?=$row[id]?>" selected="selected"><?=$row['nombre']?></option>
 <? }
    else
    {
?>
        <option value="<?=$row[id]?>"><?=$row['nombre']?></option>
 <? 
?>
        </select></td>
        <td>Sucursal:</td>
        <td><select name="sucursal" id="sucursal"  />
        <option value="null">---Seleccione---</option>
        </select></td>

al pais lo carga bien pero no carga la provincia, me parece que es problema del evento Onchange cargarSucursales(), como podria hacerlo?

aqui esta el codigo del ajax_sucursal.php

Código PHP:
<?php
include ("conectar.inc");
session_start();
$usuario$_GET['empresa'];

$query="select * from provincias where relacion='$usuario'";
$RESULTADO=mysql_query($query);?>
        <option value="null">---Seleccione---</option>



<?while ($row=mysql_fetch_array($RESULTADO)) 
{
    if(
$row['id']== $_SESSION['pcia'])
    {
?>
        <option value="<?=$row[id]?>" selected="selected"><?=$row['nombre']?></option>
 <? }
    else
    {
?>
        <option value="<?=$row[id]?>"><?=$row['nombre']?></option>
 <? 
?>
gracias
saludos
  #7 (permalink)  
Antiguo 19/08/2011, 12:34
 
Fecha de Ingreso: febrero-2010
Ubicación: cba
Mensajes: 203
Antigüedad: 14 años, 2 meses
Puntos: 16
Respuesta: Selects dependientes

ya lo solucione, era solo hacer un onload de la funcion en el body
gracias igual

Etiquetas: ajax, combox, dependientes, selects
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 08:37.