Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/02/2013, 12:37
Avatar de Nico0601
Nico0601
 
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 11 meses
Puntos: 0
Select dependiente php y mysql y ajax

Buenas gente, recurro a uds porque tengo un problema con los datos que me arroja el ultimo select.
Estoy haciendo 4 select dependientes de Codigo postal, localidad, provincia y seccional. Hasta provincia voy bien pero la seccional me la devuelve mal.
Les paso el codigo para que vean a ver si me pueden ayudar porque hace dias que llevo con esto y no puedo resolverlo.
Gracias
Este es el formulario
Código PHP:
<div class="label"><label><strong>Código Postal </strong>*</label>
                    <select id="cp_nombre">
                        <option value="">Codigo Postal</option>
                            <?php while($r=mysql_fetch_array($cp)){
                            echo 
"<option value = ".$r['id'].">".$r['cod_post']."</option>";} ?>
                    </select> 
                </div>
                <div class="label"><label><strong>Localidad </strong>*</label>
                    <select id="localidad" disabled="disabled"></select>
                    <img id="imglocalidad" style="display: none;" src="imagenes/loading.gif" alt="Cargando" />
                </div>
                <div class="label"><label><strong>Provincia </strong>*</label>
                    <select id="provincia" disabled="disabled"></select>
                    <img id="imgprovincia" style="display: none;" src="imagenes/loading.gif" alt="Cargando" />
                </div>
                <div class="label"><label><strong>Seccional </strong>*</label>
                    <select id="seccional" disabled="disabled"></select>
                <img id="imgseccional" style="display: none;" src="imagenes/loading.gif" alt="Cargando" />
                </div>
Este es el ajax
Código:
$(document).ready(function(){
        $("#cp_nombre").change(function(){
			$("#localidad").empty().attr("disabled","disabled");
            $("#provincia").empty().attr("disabled","disabled");
            $("#seccional").empty().attr("disabled","disabled");
            if($(this).val()!=""){
                var dato=$(this).val();
                $("#imglocalidad").show();
                $.ajax({
                    type:"POST",
                    dataType:"html",
                    url:"action.php",
                    data:"id="+dato+"&tarea=listLocalidad",
                    success:function(msg){
                        $("#localidad").removeAttr("disabled").append(msg);
                        $("#imglocalidad").hide();
                    }
                });
            }else{
                $("#localidad").empty().attr("disabled","disabled");
                $("#provincia").empty().attr("disabled","disabled");
            }
        });
        $("#localidad").change(function(){			
            if($(this).val()!=""){
                var dato=$(this).val();
                $("#imgprovincia").show();
                $.ajax({
                    type:"POST",
                    dataType:"html",
                    url:"action.php",
                    data:"prov_id="+dato+"&tarea=listProvincia",
                    success:function(msg){                        
                        $("#provincia").empty().removeAttr("disabled").append(msg);
                        $("#imgprovincia").hide();
                    }
                });
            }else{
                $("#provincia").empty().attr("disabled","disabled");
            }
        });
        $("#provincia").change(function(){			
            if($(this).val()!=""){
                var dato=$(this).val();
                $("#imgseccional").show();
                $.ajax({
                    type:"POST",
                    dataType:"html",
                    url:"action.php",
                    data:"sec_id="+dato+"&tarea=listSeccional",
                    success:function(msg){                        
                        $("#seccional").empty().removeAttr("disabled").append(msg);
                        $("#imgseccional").hide();
                    }
                });
            }else{
                $("#seccional").empty().attr("disabled","disabled");
            }
        });
    });
Y aca hago las consultas para llenar los select.
Código PHP:
<?php
include("configuracion.inc.php");
$link=conectar($bd_host,$bd_usuario,$bd_pwd,$bd_nombre);


function 
getLocalidad(){
  global 
$link;
  
$sql="select * from cp where id=".$_POST["id"];
  
$result=mysql_query($sql,$link);
  
$resp="";
  if(
$result){
    if(
mysql_num_rows($result)>0){
        
$resp.="<option value=''>- Seleccione Localidad -</option>";
        while(
$r=mysql_fetch_object($result)){
          
$resp.="<option value='".$r->provincia."'>".$r->localidad."</option>";
            }
    }else 
$resp.="<option value=''>- Seleccione Localidad -</option>";
    }else 
$resp="ERROR";
    echo 
$resp;
}

function 
getProvincias(){
    global 
$link;
    
$sql="select * from provincias where prov_id=".$_POST["prov_id"];
    
$result=mysql_query($sql,$link);
    
$resp="";
    if(
$result){
        if(
mysql_num_rows($result)>0){            
            
$resp.="<option value=''>- Seleccione Provincia -</option>";
            while(
$r=mysql_fetch_object($result)){
                
//$resp.="$r->idprovincia".$r->nombre_ciudad."";
                
$resp.="<option value='".$r->prov_id."'>".$r->prov_nombre."</option>";
            }
        }else 
$resp="<option value=''>- Seleccione Provincia -</option>";
    }else 
$resp="ERROR";
    echo 
$resp;
}
function 
getSeccional(){
    global 
$link;
    
$sql="select * from seccionales where sec_id=".$_POST["sec_id"];
    
$result=mysql_query($sql,$link);
    
$resp="";
    if(
$result){
        if(
mysql_num_rows($result)>0){            
            
$resp.="<option value=''>Seleccione Seccional</option>";
            while(
$r=mysql_fetch_object($result)){
                
$resp.="<option value='".$r->sec_id."'>".$r->sec_nombre."</option>";
            }
        }else 
$resp="<option value=''>Seleccione Seccional</option>";
    }else 
$resp="ERROR";
    echo 
$resp;
}
if(
$_POST)
{
    switch(
$_POST["tarea"]){
        case 
"listLocalidad":getLocalidad();
                break;
        case 
"listProvincia":getProvincias();
                break;
        case 
"listSeccional":getSeccional();
                break;
    }
    
}


?>
La tabla cp tiene id,cod_post,localidad,provincia,seccional
la tabla provincias tiene prov_id,prov_nombre
y la tabla seccionales tiene sec_id,sec_nombre

Gracias
__________________
Nico...