Foros del Web » Programando para Internet » Jquery »

Select dependiente php y mysql y ajax

Estas en el tema de Select dependiente php y mysql y ajax en el foro de Jquery en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 21/02/2013, 12:37
Avatar de 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...
  #2 (permalink)  
Antiguo 21/02/2013, 13:03
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: Select dependiente php y mysql y ajax

crees que es un problema de Ajax o de PHP, o es la estructura de tu BD? Php no creo que sea a menos que le estes pasando con el AJAX un parámetro no válido y este no es el foro adecuado para poder solucionarte el problema... pidele al ADMIN que te cambie a AJAX JQUERY seguro ellos al toque te hallan la falla... con el icono del triabgulo rojo de warning puedes pedir el cambio de foro. En el reporte solo pones para cambiar de foro.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #3 (permalink)  
Antiguo 21/02/2013, 13:18
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Select dependiente php y mysql y ajax

Hola, tengo la duda de AJAX o PHP, la base esta bien porque me trae bien todos los valores hasta que llego a la seccional que me tira otra que no corresponde. Intento cambiar a AJAX a ver si me dan una mano ahi.
__________________
Nico...
  #4 (permalink)  
Antiguo 21/02/2013, 15:00
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 12 años, 1 mes
Puntos: 36
Respuesta: Select dependiente php y mysql y ajax

No veo ningun error en la parte de ajax

trata de mandar un alert() con los datos que te llegan

Saludos
  #5 (permalink)  
Antiguo 20/03/2013, 17:04
Avatar de Ilidam  
Fecha de Ingreso: julio-2009
Ubicación: Veracruz
Mensajes: 108
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Select dependiente php y mysql y ajax

Hola nico0106 que tal te fue con tu problema lo pudiste resolver??
  #6 (permalink)  
Antiguo 21/03/2013, 07:17
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Select dependiente php y mysql y ajax

Hola Ilidam, todavia no. Segui con otra cosa asi no me trabo en esto......Soy nuevo en php y tengo algo complejo para hacer asi que sigo con otras cosas.
__________________
Nico...
  #7 (permalink)  
Antiguo 21/03/2013, 13:59
Avatar de Ilidam  
Fecha de Ingreso: julio-2009
Ubicación: Veracruz
Mensajes: 108
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Select dependiente php y mysql y ajax

Código HTML:
Ver original
  1. Hola nuevamente pues yo lo hice de una forma totalmente distinta sin jquery aunque aun ando en busca de esa solucion mira te dejo un ejemplo kisa te siva todos los registros los tengo en una sola tabla  ejemplo
  2.  
  3. 1.php
  4. <?php error_reporting(E_ERROR); ?>
  5. <?
  6. require('config.php');
  7. require('include/conexion.php');
  8. ?>
  9. <title>BUSQUEDA</title>
  10. <style type="text/css">
  11.  
  12. html {  background-image: url(images/glowcolor.png); }
  13. #Layer3 {
  14.     background-color: rgba(54, 206, 240, 0.5);
  15. -moz-border-radius: 1em;
  16. -webkit-border-radius: 1em;
  17. border-radius: 1em;
  18.  
  19.         background-position: center;
  20.     width:600px;
  21.  
  22.  
  23. }
  24.  
  25. <script language="javascript">
  26.     function myChangeHandler() {
  27.         this.options[this.selectedIndex].value;
  28.         this.form.submit();
  29. }
  30. <div id="Layer3">
  31.  
  32.  
  33.              <form id="1" name="1" method="post" action="2.php">
  34.        <fieldset><legend><h2><font face="calibri" color="#FFFFFF">APLICACION POR VEHICULOS</font> </h2></legend>
  35.            <br>
  36.  
  37.       <?php
  38.    $sql = "Select DISTINCT marca from vehiculo order by marca";
  39.    $result = mysql_query( $sql);
  40. ?>
  41.         <font face="calibri" color="#FFFFFF">&nbsp; MARCA </font> <select name="marca" id="marca" onchange="myChangeHandler.apply(this)">
  42.           <option>------------------SELECCIONA------------------</option>
  43. <?php    while ( $row = mysql_fetch_array($result) ) {?>
  44.     <option style='text-transform: uppercase'> <?php echo $row[0];?>  </option>
  45.         <?php } ?>
  46. <br><br>
  47.   </fieldset> </form> </div>
  48.  
  49.  
  50.  
  51.  
  52. .....en el segundo archivo   2.php
  53.  
  54. <?php error_reporting(E_ERROR); ?>
  55. <?
  56. require('config.php');
  57. require('include/conexion.php');
  58. ?>
  59. <title>BUSQUEDA</title>
  60. <style type="text/css">
  61.  
  62. html {  background-image: url(images/glowcolor.png); }
  63. #Layer3 {
  64.     background-color: rgba(54, 206, 240, 0.5);
  65. -moz-border-radius: 1em;
  66. -webkit-border-radius: 1em;
  67. border-radius: 1em;
  68.  
  69.         background-position: center;
  70.     width:600px;
  71.  
  72.  
  73. }
  74.  
  75. <script language="javascript">
  76.     function myChangeHandler() {
  77.         this.options[this.selectedIndex].value;
  78.         this.form.submit();
  79. }
  80.  
  81. <div id="Layer3">
  82.  
  83.     <form id="1" name="1" method="post" action="3.php">
  84.       <fieldset><legend><h2><font face="calibri" color="#FFFFFF">APLICACION POR VEHICULOS</font> </h2></legend>
  85.            <br>
  86.  
  87. <div id="marca">
  88.  
  89.  
  90.  <?php
  91.  $marca=$_POST['marca'];
  92.   ?>
  93.          <font face="calibri" color="#FFFFFF">&nbsp;&nbsp; MARCA </font> <select name="marca" id="marca">
  94.            <option><? echo $marca; ?></option>
  95.           <option>------------------SELECCIONA------------------</option>
  96.  
  97.          </div>
  98.  
  99. <br>
  100.  
  101. <div id="modelo">
  102.           <?php
  103.           $modelo=$_POST['marca'];
  104.           $sql = "Select DISTINCT vehiculo.modelo from vehiculo where marca='$modelo' order by modelo";
  105.    $result = mysql_query( $sql);
  106. ?>
  107.          <font face="calibri" color="#FFFFFF">&nbsp;MODELO </font> <select name="modelo" onchange="myChangeHandler.apply(this)">
  108.           <option>------------------SELECCIONA------------------</option>
  109. <?php    while ( $row = mysql_fetch_array($result) ) {?>
  110.     <option style='text-transform: uppercase'> <?php echo $row[0];?>  </option>
  111.         <?php } ?>
  112.    </div>
  113.         <br><br>
  114.  
  115.  
  116.   </fieldset> </form> </div>
  117.  
  118.  
  119. y asi sucesivamente de acuerdo a los selectes k requieras saludos de esa forma funciona bien aunque con jqury o ajax se veria mucho mejor espero te sirva saludos

Etiquetas: ajax, dependiente, formulario, html, mysql, php, select, sql, tabla
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 03:00.