Ver Mensaje Individual
  #8 (permalink)  
Antiguo 19/05/2014, 15:22
Avatar de ginitofl
ginitofl
 
Fecha de Ingreso: diciembre-2006
Ubicación: Lima Perú
Mensajes: 349
Antigüedad: 18 años
Puntos: 22
Respuesta: Combos Dependientes 3 niveles php ajax mysql

aqui tienes una alternativa para hacer combos (select) dependientes, para ello use jquery, espero sea de tu ayuda.

primero hacemos nuestra clase:

bd.php
Código PHP:
<?php
    
class BD{
        var 
$cn;
        function 
__construct($servidor="localhost"$usuario="root"$clave="juver"$base="test"){
            
$this->cn mysql_connect($servidor$usuario$clave);
            
mysql_select_db($base$this->cn);
            
ini_set('display_errors','On');
        }
        
        function 
consulta($sql){
            
$res mysql_query($sql$this->cn) or die("Error <b><br>".mysql_error()."</b><br>$sql");
            if(!
$res){
                die(
"query error."); 
            }else{ 
                return 
$res;
            }
        }
        function 
fetch_assoc($resultado){
            return 
mysql_fetch_assoc($resultado);
        }
        
    }
?>
Luego el Index.php
Código PHP:
<?php
include ("bd/bd.php");
$obj_bd = new BD();
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Select dependientes</title>
<script language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
function cargarcombos(combo, url){
    $(combo).html("<option selected>Cargando...</option>");
    var php  = url;
    $.post(php,function(respuesta){
        $(combo).html(respuesta);
    });
}
</script>
</head>
<body>
<select name="region" id="region" onchange="cargarcombos('#plantas', 'combos.php?id_region=' + this.value + '&modo=plantas')">
    <option value="">Seleccione Region</option>
    <?php
    $sql 
$obj_bd->consulta("SELECT id, nombre, pais FROM region order by pais, nombre");
    while(
$fila=$obj_bd->fetch_assoc($sql)){?>
        <option value="<?php echo $fila['id'];?>"><?php echo $fila['pais'].' / '.$fila['nombre'];?></option> 
    <?php }?>
</select>
<select name="plantas" id="plantas" onchange="cargarcombos('#depas', 'combos.php?id_planta=' + this.value + '&modo=depas')">
    <option value="">Seleccione Planta</option>
</select> 
<select name="depas" id="depas" onchange="cargarcombos('#cargos', 'combos.php?id_depa=' + this.value + '&modo=cargos')">
    <option value="">Seleccione Departamento</option>
</select>
<select name="cargos" id="cargos">
    <option value="">Seleccione Cargo</option>
</select>   
</body>
</html>
y por ultimo nuestro archivo combos.php
Código PHP:
<?php
include("bd/bd.php");
$obj_bd = new BD();
$modo $_REQUEST['modo'];

if (
$modo=="plantas"){
    
$id_region $_REQUEST['id_region'];
    echo 
'<option value="">Seleccione Planta</option>';
    
$sql $obj_bd->consulta("SELECT id, codigo, nombre FROM planta WHERE id_region='$id_region'");
    while(
$fila=$obj_bd->fetch_assoc($sql)){
        echo 
'<option value="'.$fila['id'].'">'.$fila['nombre'].'</option>'
    }
}elseif (
$modo=="depas"){
    
$id_planta $_REQUEST['id_planta'];
    echo 
'<option value="">Seleccione Departamento</option>';
    
$sql $obj_bd->consulta("SELECT id, codigo, nombre FROM departamento WHERE id_planta='$id_planta'");
    while(
$fila=$obj_bd->fetch_assoc($sql)){
        echo 
'<option value="'.$fila['id'].'">'.$fila['nombre'].'</option>'
    }
}
?>
Saludos.