Ver Mensaje Individual
  #3 (permalink)  
Antiguo 03/12/2012, 18:57
pilucho
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Combo Selecc PHP INNER JOIN

Cita:
Iniciado por nahuelevy Ver Mensaje
Postea el código completo. No queda claro qué es lo que no te funciona.
Código PHP:
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
    $("select").change(function(){
        // Vector para saber cuál es el siguiente combo a llenar

        var combos = new Array();
        combos['pais'] = "estado";
        combos['estado'] = "ciudad";
        // Tomo el nombre del combo al que se le a dado el clic por ejemplo: país
        posicion = $(this).attr("name");
        // Tomo el valor de la opción seleccionada 
        valor = $(this).val()        
        // Evaluó  que si es país y el valor es 0, vacié los combos de estado y ciudad
        if(posicion == 'pais' && valor==0){
            $("#estado").html('    <option value="0" selected="selected">----------------</option>')
            $("#ciudad").html('    <option value="0" selected="selected">----------------</option>')
        }else{
        /* En caso contrario agregado el letreo de cargando a el combo siguiente
        Ejemplo: Si seleccione país voy a tener que el siguiente según mi vector combos es: estado  por qué  combos [país] = estado
            */
            $("#"+combos[posicion]).html('<option selected="selected" value="0">Cargando...</option>')
            /* Verificamos si el valor seleccionado es diferente de 0 y si el combo es diferente de ciudad, esto porque no tendría caso hacer la consulta a ciudad porque no existe un combo dependiente de este */
            if(valor!="0" || posicion !='ciudad'){
            // Llamamos a pagina de combos.php donde ejecuto las consultas para llenar los combos
                $.post("combos.php",{
                                    combo:$(this).attr("name"), // Nombre del combo
                                    id:$(this).val() // Valor seleccionado
                                    },function(data){
                                                    $("#"+combos[posicion]).html(data);    //Tomo el resultado de pagina e inserto los datos en el combo indicado                                                                                
                                                    })                                                
            }
        }
    })        
})
</script>

<form id="form1" name="form1">
<div>
<select name="pais" id="pais">
    <option selected="selected" value="0">---------</option>

<?
$res 
mysql_query("SELECT * FROM pais");
$cant =  mysql_num_rows($res);
if(
$cant>0){                        
    while(
$rs mysql_fetch_array($res)){
    
?>
        <option value="<?=$rs['idpais']?>"><?=$rs['pais']?></option>
    <? 
    
}

?>

</select>
</div>

<div>
<select id="estado" name="estado">
    <option value="0" selected="selected">----------------</option>
</select>
</div>

<div> 
<select id="ciudad" name="ciudad">
    <option value="0" selected="selected">-------------------</option>
</select>
</div>
</form>
TABLA

Código HTML:
CREATE TABLE `pais` (
`idpais` int(10) unsigned NOT NULL auto_increment,
`pais` varchar(50) default NULL,
PRIMARY KEY USING BTREE (`idpais`)
) ENGINE=MyISAM;
 
CREATE TABLE `estado` (
`idestado` int(10) unsigned NOT NULL auto_increment,
`estado` varchar(50) default NULL,
`pais` int(11) NOT NULL default '0',
PRIMARY KEY USING BTREE (`idestado`)
) ENGINE=MyISAM;
 
CREATE TABLE `ciudad` (
`idciudad` int(10) unsigned NOT NULL auto_increment,
`ciudad` varchar(50) NOT NULL default '',
`estado` int(11) NOT NULL default '0',
`pais` int(10) unsigned NOT NULL default '0',
PRIMARY KEY USING BTREE (`idciudad`)
) ENGINE=MyISAM;
"el combo select"

Código PHP:
<?
require_once('conexion.php');
$idcombo $_POST["id"];
$action =$_POST["combo"];
switch(
$action){
    case 
"pais":{
        
$res mysql_query("SELECT idestado,estado FROM estado WHERE pais = $idcombo order by estado ASC");
        while(
$rs mysql_fetch_array($res))
            echo 
'<option value="'.$rs['idestado'].'">'.htmlentities($rs['estado']).'</option>';    
    break;
    }
    case 
"estado":{        
        
$res mysql_query("SELECT idciudad,ciudad FROM ciudad WHERE estado= $idcombo order by ciudad ASC");
        while(
$rs mysql_fetch_array($res))
            echo 
'<option value="'.$rs['idciudad'].'">'.htmlentities($rs['ciudad']).'</option>';    
    break;
    }
}
?>
Listo eso es todo el script espero que a muchos les ayude este script si funciona muy bien pero, en modo post envia datos solo numeros de "Id's" y la idea es que llegue el nombre de seleccion