Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: the_sheriff_pino en 24 Mayo 2013, 13:56 pm



Título: consulta mysql : Dificultad media-alta.
Publicado por: the_sheriff_pino en 24 Mayo 2013, 13:56 pm
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
  1. if(isset($_POST['cargar'])) //Se obtiene al pulsar el botón [Datos de cliente] en una página anterior
  2. {
  3. $cif = $_POST['clientes'];
  4.  
  5. $consultaprov = "SELECT * FROM lista_clientes WHERE CIF='".$cif."'";
  6. $rconsultaprov = mysql_query($consultaprov,$link);
  7.  
  8.            while ($fila = mysql_fetch_assoc($rconsultaprov)) //Obtenemos la provincia y población del cliente en dos text.
  9.             { ?>
  10.               <label for="Field6">Provincia</label>
  11.                    <input type="text" value="<?php echo $fila['Provincia'];?>" name="prov" disabled style="text-transform:uppercase;">
  12.                    <label for="Field6">Población</label>
  13.                    <input type="text" value="<?php echo $fila['Localidad'];?>" name="pobl" disabled style="text-transform:uppercase;">
  14.                    <br>
  15. <?php  $pepe=$fila['Provincia'];
  16. global $pepe;?>
  17.  
  18.            Si desea modificarla, elija una de la lista:<br>
  19. Provincia:
  20.          <?php } ?>
  21. <select id="lista1" name="lst1" class="field select addr" >            
  22.      <?php $consulta_prov = " SELECT * FROM lista_clientes WHERE CIF='".$cif."'";
  23. $rconsulta_prov = mysql_query($consulta_prov,$link);
  24.  
  25. while ($fila = mysql_fetch_assoc($rconsulta_prov))
  26.             { ?>
  27. <option selected value="<?php echo $fila['Provincia'];?>"><?php echo $fila['Provincia'];?></option>
  28. <?php }
  29.  
  30. $consulta="SELECT * FROM lista_provincias";
  31. $completa=mysql_query($consulta,$link);?>
  32.  
  33. <?php while ($fila=mysql_fetch_assoc($completa))
  34.             { ?>
  35. <option value="<?php echo $fila['id'];?>"><?php echo $fila['opcion'];?></option>
  36. <?php   }
  37.         $pepe=$fila['id'];
  38. global $pepe;
  39. ?>
  40.  
  41.                </select>  
  42.  
  43.  
  44.  
  45.    <select id="lista2" name="lst2" class="field select addr">
  46.  
  47. <?php $consulta_pobl = " SELECT * FROM lista_clientes WHERE CIF='".$cif."'";
  48. $rconsulta_pobl = mysql_query($consulta_pobl,$link);
  49.  
  50. while ($fila = mysql_fetch_assoc($rconsulta_pobl))
  51.             { ?>
  52. <option selected value="<?php echo $fila['Localidad'];?>"><?php echo $fila['Localidad'];?></option>
  53. <?php }
  54.  
  55. $consultapobl9 = "SELECT lista_poblaciones.opcion FROM lista_provincias JOIN lista_poblaciones
  56. ON lista_provincias.id =lista_poblaciones.id WHERE lista_provincias.opcion ='".$pepe."' ORDER BY opcion ASC";
  57. $rconsultapobl9 = mysql_query($consultapobl9,$link);
  58.           while ($fila=mysql_fetch_assoc($rconsultapobl9))
  59.           { ?>
  60. <option value="<?php echo $fila['opcion'];?>"><?php echo $fila['opcion'];?></option>
  61. <?php } ?>
  62. </select>
  63. <?php } ?>
  64.  
  65. <table>
  66.     <tr>
  67.            <td id="slista">
  68.  
  69.            </td>
  70.  
  71.        </tr>
  72.    </table>
  73.  
  74. </span>

Este fragmento es el de jQuery, que hace que cuando selecciones una provincia cargue el select de poblaciones de esa provincia. ATENCION LINEA 67 del fragmento anterior
Código
  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. });
  24.  

Esta es la página de mostrarpoblaciones3.php, nombrada en el código de jQuery.
Código
  1. <?php
  2. $link=mysql_connect("localhost","root","");
  3. mysql_select_db("clientes",$link);
  4. $id=$_GET['identidad'];
  5.  
  6. $consulta="SELECT DISTINCT id, opcion FROM lista_poblaciones WHERE id = $id ORDER BY opcion ASC";
  7. $completa=mysql_query($consulta,$link);?>
  8. <span class="rigth state">
  9.     <label for="Field6">Población</label>
  10. <select id="lista2" name="lst2" class="field select addr">
  11.  
  12. <?php
  13.            while ($fila=mysql_fetch_assoc($completa))
  14.            {
  15.        ?>
  16.  
  17. <option value="<?php echo $fila['opcion'];?>"><?php echo $fila['opcion'];?></option>
  18.  
  19.  
  20. <?php
  21.  
  22.            }
  23.        ?>
  24. </select>
  25. </span>