Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/05/2013, 05:53
Avatar de the_sheriff_pino
the_sheriff_pino
 
Fecha de Ingreso: abril-2013
Ubicación: Córdoba
Mensajes: 118
Antigüedad: 11 años, 1 mes
Puntos: 0
Consulta asesina

Saludos compañeros foreros!
Recurro a ustedes porque mi cabeza ya no da para más.

Os pongo en situación
Tengo una tabla lista_clientes que contiene, entre otros campos, un campo Provincia.
También tengo una tabla lista_provincias que contiene los campos id, provincia.
Y una tabla lista_poblaciones que contiene los campos id(El mismo que la provincia), poblacion.

Vamos al meollo!

En un formulario de crear cliente, a la hora de meter la provincia y la población, al usuario se le muestra una lista desplegable con todas las provincias, y cuando selecciona una de ellas, con jQuery, se le muestra otra lista desplegable con las poblaciones que pertenecen a la provincia seleccionada. (Recuerdo que tienen en común el ID).

Pues cuando quiero mostrar los datos del cliente, en los input type=text no hay problema; pero tanto la provincia como la población las cargo en un select, mostrándose la opción selected, la obtenida del campo Provincia de la tabla lista_clientes.

La cuestión es: como le digo yo a la página que el valor obtenido de la provincia del cliente lo relacione con la provincia del mismo nombre de la tabla provincias, para que se pueda ejecutar el jQuery y así mostrarme directamente la lista con las poblaciones de esa provincia.

Resumiendo: Cargar el valor del campo[Provincia] de la tabla[lista_clientes], asociarle el ID que le correspondería de la tabla[lista_provincias] para que se pueda mostrar luego la lista de las poblaciones.

Perdonen la chapa, pero creo que mejor explicarlo todo de una vez.

Os dejo el código que afecta para aclararos un poco.

Este fragmento de código es el que crea los select.
Código PHP:
if(isset($_POST['cargar'])) //Se obtiene al pulsar el botón [Datos de cliente] en una página anterior
        {    
            $cif    =    $_POST['clientes'];
            
            $consultaprov    =    "SELECT * FROM lista_clientes WHERE CIF='".$cif."'";
            $rconsultaprov    =    mysql_query($consultaprov,$link);
            
            while ($fila    =    mysql_fetch_assoc($rconsultaprov)) //Obtenemos la provincia y población del cliente en dos text.
                { ?>
                       <label for="Field6">Provincia</label>
                    <input type="text" value="<?php echo $fila['Provincia'];?>" name="prov" disabled style="text-transform:uppercase;">
                    <label for="Field6">Población</label>
                    <input type="text" value="<?php echo $fila['Localidad'];?>" name="pobl" disabled style="text-transform:uppercase;">
                    <br>
            <?php  $pepe=$fila['Provincia'];
            global 
$pepe;?>

            Si desea modificarla, elija una de la lista:<br>
            Provincia:
          <?php    }    ?>
                <select id="lista1" name="lst1" class="field select addr" >            
      <?php $consulta_prov    =    " SELECT * FROM lista_clientes WHERE CIF='".$cif."'";
            
$rconsulta_prov    =    mysql_query($consulta_prov,$link);
            
            while (
$fila    =    mysql_fetch_assoc($rconsulta_prov))
                { 
?>
                    <option selected value="<?php echo $fila['Provincia'];?>"><?php echo $fila['Provincia'];?></option>                
        <?php     }            
                
                
$consulta="SELECT * FROM lista_provincias";
                
$completa=mysql_query($consulta,$link);?>

        <?php    while ($fila=mysql_fetch_assoc($completa))
                    {    
?>
                        <option value="<?php echo $fila['id'];?>"><?php echo $fila['opcion'];?></option>
        <?php       }    
                
$pepe=$fila['id'];
                global 
$pepe;
                
?>
                
                </select>  
                
                
    
    <select id="lista2" name="lst2" class="field select addr">

        <?php $consulta_pobl    =    " SELECT * FROM lista_clientes WHERE CIF='".$cif."'";
            
$rconsulta_pobl    =    mysql_query($consulta_pobl,$link);
            
            while (
$fila    =    mysql_fetch_assoc($rconsulta_pobl))
                { 
?>
                    <option selected value="<?php echo $fila['Localidad'];?>"><?php echo $fila['Localidad'];?></option>                
        <?php     }            

                
$consultapobl9    =    "SELECT lista_poblaciones.opcion FROM lista_provincias JOIN lista_poblaciones 
                                    ON lista_provincias.id =lista_poblaciones.id WHERE lista_provincias.opcion ='"
.$pepe."' ORDER BY opcion ASC";
                
$rconsultapobl9    =    mysql_query($consultapobl9,$link);
                    while (
$fila=mysql_fetch_assoc($rconsultapobl9))
                       {    
?>
                 <option value="<?php echo $fila['opcion'];?>"><?php echo $fila['opcion'];?></option>
        <?php        }    ?>
    </select>        
 <?php    }    ?>
 
 <table>
     <tr>
            <td id="slista">
                        
            </td>
    
        </tr>
    </table>

</span>
Este fragmento es el de jQuery, que hace que cuando selecciones una provincia cargue el select de poblaciones de esa provincia. Atención a la tabla del final del fagmento anterior donde se cargaría el resultado de este script.
Código Java:
Ver original
  1. $(document).on("ready",function()
  2.     {
  3.         $('#lista1').on("change",function()
  4.         {
  5.             var id = $('#lista1').val();
  6.             var metodo = $('#formulario').attr('post')
  7.             $.ajax(
  8.             {
  9.                 url:"mostrarpoblaciones3.php",
  10.                 type:metodo,
  11.                 data:{identidad: id},
  12.                 success: function(resp)
  13.                 {  
  14.                     $('#slista').html(resp);   
  15.                 },
  16.                 error: function(jqXHR,estado,error)
  17.                 {
  18.                     alert("No se ha podido realizar la consulta a la base de datos, por favor intentelo de nuevo");
  19.                 }
  20.             });
  21.         });
  22.    
  23.     });

Esta es la página de mostrarpoblaciones3.php, nombrada en el código de jQuery.
Código PHP:
<?php
$link
=mysql_connect("localhost","root","");
mysql_select_db("clientes",$link);
$id=$_GET['identidad'];

$consulta="SELECT DISTINCT id, opcion FROM lista_poblaciones WHERE id = $id ORDER BY opcion ASC";
$completa=mysql_query($consulta,$link);?>
<span class="rigth state">
        <label for="Field6">Población</label>
<select id="lista2" name="lst2" class="field select addr">

        <?php
            
while ($fila=mysql_fetch_assoc($completa))
            {
        
?>

                 <option value="<?php echo $fila['opcion'];?>"><?php echo $fila['opcion'];?></option>


        <?php
                
            
}
        
?>
</select>
</span>