Foros del Web » Programando para Internet » PHP »

Guardar valor de un Select con datos de una BD

Estas en el tema de Guardar valor de un Select con datos de una BD en el foro de PHP en Foros del Web. Saludos foreros! Tengo una pequeña consulta que haceros. Tengo dos listas desplegables, la elección del valor de la primera condiciona los valores mostrados en la ...
  #1 (permalink)  
Antiguo 08/04/2013, 05:52
Avatar de the_sheriff_pino  
Fecha de Ingreso: abril-2013
Ubicación: Córdoba
Mensajes: 118
Antigüedad: 11 años
Puntos: 0
Guardar valor de un Select con datos de una BD

Saludos foreros!
Tengo una pequeña consulta que haceros.
Tengo dos listas desplegables, la elección del valor de la primera condiciona los valores mostrados en la segunda, pero cuando clico en el botón para enviar los datos de la primera lista a la segunda, la primera lista no conserva el valor.
Os pongo en situación:
Lista 1: Provincias de España
Lista 2: Localidades.

Al elegir una provincia se muestran las localidades de la misma y se selecciona la deseada, pero el valor elegido en la lista 1 no permanece.

Un saludo y espero vuestra ayuda! Si responden y necesitan subo el código!
  #2 (permalink)  
Antiguo 08/04/2013, 05:55
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: Guardar valor de un Select con datos de una BD

¿Al elegir la provincia se recarga la página o utilizas ajax?
  #3 (permalink)  
Antiguo 08/04/2013, 05:57
Avatar de the_sheriff_pino  
Fecha de Ingreso: abril-2013
Ubicación: Córdoba
Mensajes: 118
Antigüedad: 11 años
Puntos: 0
Respuesta: Guardar valor de un Select con datos de una BD

Cita:
Iniciado por zalito12 Ver Mensaje
¿Al elegir la provincia se recarga la página o utilizas ajax?
Ajax estoy seguro de que no utilizo.
Supongo que se recargará la página.
Al lado de la lista 1 tengo un botón que envía el valor a la lista 2
  #4 (permalink)  
Antiguo 08/04/2013, 06:01
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: Guardar valor de un Select con datos de una BD

A ver si entendí,
tienes un select con las provincias y otro select sin datos. Al elegir provincia se cargan las localidades correspondientes en el segundo select.
Tu problema es que pierdes el valor de la primera lista.
Si es así, ¿como realizas la carga?
  #5 (permalink)  
Antiguo 08/04/2013, 06:07
Avatar de the_sheriff_pino  
Fecha de Ingreso: abril-2013
Ubicación: Córdoba
Mensajes: 118
Antigüedad: 11 años
Puntos: 0
Respuesta: Guardar valor de un Select con datos de una BD

Cita:
Iniciado por zalito12 Ver Mensaje
A ver si entendí,
tienes un select con las provincias y otro select sin datos. Al elegir provincia se cargan las localidades correspondientes en el segundo select.
Tu problema es que pierdes el valor de la primera lista.
Si es así, ¿como realizas la carga?
Con un botón envío el valor al segundo Select.
La idea el almacenar los valores en una tabla de datos de cliente por ejemplo, pero al clicar el botón para enviar los datos del select 1 (provincias) al select 2 (poblaciones) el valor del select 1 vuelve al primero, no se conserva tras pulsar el botón.

Si lo ves necesario posteo el código
  #6 (permalink)  
Antiguo 08/04/2013, 06:14
Avatar de the_sheriff_pino  
Fecha de Ingreso: abril-2013
Ubicación: Córdoba
Mensajes: 118
Antigüedad: 11 años
Puntos: 0
Respuesta: Guardar valor de un Select con datos de una BD

Código PHP:
Ver original
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <?php
  6.     //Conexión al servidor, conexión a la bbdd, consulta, resultado.
  7.    
  8.    
  9.     $conexion_servidor = mysql_connect('localhost', 'root','toor') or die("Error, no se ha conectado B.D.");
  10.     $conexion_bd=mysql_select_db('san lorenzo', $conexion_servidor);
  11.     $query_prov="SELECT cod_prov, provincia FROM provincias";
  12.     $consulta_query_prov=mysql_query($query_prov,$conexion_servidor);
  13.     ?>
  14.    
  15.    
  16.    
  17.     <form action="provincias.php" method="post">
  18.         <select name="provincia" size="15px">
  19.    
  20.    
  21.          <?php
  22.             while($fila=mysql_fetch_assoc($consulta_query_prov))
  23.             {
  24.             ?>
  25.    
  26.         <option value="<?php echo $fila['cod_prov'] ?>"><?php echo $fila['provincia'];?></option>
  27.        
  28.    
  29.     <?php
  30.     }
  31.     ?>
  32.    
  33.     <input type="submit" value="-->>">
  34.     </select>
  35.     <input type="hidden"  name="enviado" value="enviado">
  36.  </form>
  37.  <?php
  38.     $conexion_servidor=mysql_connect('localhost', 'root','toor') or die("Error, no se ha conectado B.D.");
  39.     $conexion_db=mysql_select_db('san lorenzo', $conexion_servidor);
  40. ?>
  41.  
  42.  
  43.  
  44. <form name="form_pobl">
  45.  
  46.     <?php
  47.  
  48.         if(isset($_POST['enviado']))
  49.         {
  50.             $enviado=$_POST['enviado'];
  51.             $codigo_prov=$_POST['provincia'];
  52.  
  53.             $query_pobl="SELECT poblacion, cod_postal FROM poblaciones WHERE cod_prov = $codigo_prov";
  54.             $consulta_query_pobl=mysql_query($query_pobl,$conexion_servidor);
  55.  
  56.  ?>
  57.  
  58.  <select size="20px">
  59.  
  60.  <?php
  61.      while($fila2=mysql_fetch_assoc($consulta_query_pobl))
  62.      {
  63. ?>   
  64.  
  65. <option><?php echo $fila2['poblacion']."----(".$fila2['cod_postal'].")"; ?></option>
  66.  
  67. <?php
  68.      }
  69. }
  70.  ?>
  71.  
  72.  </select>
  73.  
  74. </form>
  75.  
  76. </body>
  77. </html>
  #7 (permalink)  
Antiguo 08/04/2013, 06:28
 
Fecha de Ingreso: septiembre-2012
Ubicación: La Habana
Mensajes: 32
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: Guardar valor de un Select con datos de una BD

Amigo,

Te recomiendo que utilices AJAX en su totalidad para tal problema.

Te expolico un poco, la primera lista (provicnias), no creo que sea necesario ( Con un botón envío el valor al segundo Select. ), simplemente aprobechate el 'onchange' de la lista que te ayuda una vez que seleccionas la provincia, enviara utilziando AJAX el valor hacia la otra lista y asi se muestran las localidades que corresponden a la provincia seleccionada.

Ventajas: No recargas la pagina y el valor qde la provincia no se te pierde de vista.
Cualquier cosa sube tu codigo y te ayudamos a mejorarlo...

Saludos,
  #8 (permalink)  
Antiguo 08/04/2013, 06:31
Avatar de the_sheriff_pino  
Fecha de Ingreso: abril-2013
Ubicación: Córdoba
Mensajes: 118
Antigüedad: 11 años
Puntos: 0
Respuesta: Guardar valor de un Select con datos de una BD

Cita:
Iniciado por emilkavg Ver Mensaje
Amigo,

Te recomiendo que utilices AJAX en su totalidad para tal problema.

Te expolico un poco, la primera lista (provicnias), no creo que sea necesario ( Con un botón envío el valor al segundo Select. ), simplemente aprobechate el 'onchange' de la lista que te ayuda una vez que seleccionas la provincia, enviara utilziando AJAX el valor hacia la otra lista y asi se muestran las localidades que corresponden a la provincia seleccionada.

Ventajas: No recargas la pagina y el valor qde la provincia no se te pierde de vista.
Cualquier cosa sube tu codigo y te ayudamos a mejorarlo...

Saludos,
Lo tienes justo en el post anterior!
Soy una hoja en blanco con AJAX. Ilústrame
  #9 (permalink)  
Antiguo 08/04/2013, 08:19
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: Guardar valor de un Select con datos de una BD

Ok, puedes hacer dos cosas, o modifcar tu código con algo así:

Código PHP:
Ver original
  1. <form action="provincias.php" method="post">
  2.         <select name="provincia" size="15px">
  3.    
  4.    
  5.          <?php
  6.             while($fila=mysql_fetch_assoc($consulta_query_prov))
  7.             {
  8.                  if(isset($_POST['provincia']) &&  $_POST['provincia'] == $fila['cod_prov']){
  9.                            echo '<option value="'.$fila['cod_prov'].'" selected>'.$fila['provincia'].'</option>';
  10.                  }else{
  11.             ?>
  12.        
  13.         <option value="<?php echo $fila['cod_prov'] ?>"><?php echo $fila['provincia'];?></option>
  14.        
  15.    
  16.     <?php
  17.           }
  18.     }
  19.     ?>

O usar Ajax, con ajax podrías utilizar tu código, sólo que la petición se realizará sin recargar la página, por decirlo de alguna manera se realiza en segundo plano. Lee sobre el tema, yo te recomendaría que te informases sobre Ajax si vas a hacer cosas así, además aprender nunca está de más y te gustará.
  #10 (permalink)  
Antiguo 08/04/2013, 10:31
 
Fecha de Ingreso: septiembre-2012
Ubicación: La Habana
Mensajes: 32
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: Guardar valor de un Select con datos de una BD

Aqui te envio un codigo completo donde yo utilizo dos listas (Provincias) y (Municipios)
PHP y AJAX

PAGINA DONE SE MUESTRAN LAS DOS LISTAS
Lista provincia -> Llena desde un include

Código HTML:
Ver original
  1. <tr align="left">
  2.                           <td width="25%">Provincia:</td>
  3.                           <td width="30%">Municipio:</td>
  4.                           <td width="45%">Consejo popular:</td>
  5.                           </tr>
  6.                         <tr align="left">
  7.                           <td><?php include('../ubicacion/provincias.php'); ?></td>
  8.                           <td><div id="listamunicipios">
  9.                             <select class="cajatexto" id="obj_municipio" >
  10.                               <option>Seleccionar...</option>
  11.                               </select>
  12.                             </div></td>


Pagina: provincias.php

Código PHP:
Ver original
  1. <select id="obj_provincia" class="cajatexto" onchange="mostrarMunicipios()">
  2. <option value="">Seleccionar...</option>
  3. <?php
  4. require('../../includes/conexion.php');
  5. $rs_prov=mysql_query("SELECT * FROM nm_provincias");
  6. while($row_prov = mysql_fetch_array($rs_prov)){
  7. ?>                        
  8. <option value="<?php echo $row_prov['id']; ?>"><?php echo $row_prov['provincia']; ?></option>
  9. <?php } ?>                          
  10. </select>



Pagina: municipios.php

Código PHP:
Ver original
  1. <select id="obj_municipio" class="cajatexto" onchange="mostrarConsejos()">
  2. <option value="">Seleccionar...</option>
  3. <?php
  4. require('../../includes/conexion.php');
  5.  
  6. $provincia=$_POST['idprov'];
  7.  
  8. $rs_mun=mysql_query("SELECT * FROM nm_municipios WHERE idprovincia='".$provincia."'");
  9. while($row_mun = mysql_fetch_array($rs_mun)){
  10. ?>                        
  11. <option value="<?php echo $row_mun['id']; ?>"><?php echo $row_mun['municipio']; ?></option>
  12. <?php } ?>                          
  13. </select>



La pagina de ajax

Código Javascript:
Ver original
  1. //========================
  2. //CREACION DEL OBJETO AJAX
  3. //========================
  4. function objetoAjax(){
  5.     var xmlhttp=false;
  6.     try {
  7.         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  8.     } catch (e) {
  9.         try {
  10.            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  11.         } catch (E) {
  12.             xmlhttp = false;
  13.         }
  14.     }
  15.  
  16.     if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  17.         xmlhttp = new XMLHttpRequest();
  18.     }
  19.     return xmlhttp;
  20. }
  21.  
  22. //==================
  23. // CARGAR MUNICIPIOS
  24. //==================
  25. function mostrarMunicipios(){
  26.     divResultado = document.getElementById('listamunicipios');
  27.     prov=document.getElementById('obj_provincia').value;
  28.  
  29.     ajax=objetoAjax();
  30.     ajax.open("POST", "../ubicacion/municipios_mostrar.php",true);
  31.     ajax.onreadystatechange=function() {
  32.         if (ajax.readyState==4) {
  33.             divResultado.innerHTML = ajax.responseText
  34.         }
  35.     }
  36.     ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  37.     ajax.send("idprov="+prov)
  38. }



Espero con esto poder ayudarte...
  #11 (permalink)  
Antiguo 09/04/2013, 01:45
Avatar de the_sheriff_pino  
Fecha de Ingreso: abril-2013
Ubicación: Córdoba
Mensajes: 118
Antigüedad: 11 años
Puntos: 0
Respuesta: Guardar valor de un Select con datos de una BD

Cita:
Iniciado por emilkavg Ver Mensaje
Aqui te envio un codigo completo donde yo utilizo dos listas (Provincias) y (Municipios)
Espero con esto poder ayudarte...
  #12 (permalink)  
Antiguo 09/04/2013, 01:47
Avatar de the_sheriff_pino  
Fecha de Ingreso: abril-2013
Ubicación: Córdoba
Mensajes: 118
Antigüedad: 11 años
Puntos: 0
Respuesta: Guardar valor de un Select con datos de una BD

Cita:
Iniciado por zalito12 Ver Mensaje
Ok, puedes hacer dos cosas, o modifcar tu código con algo así:

Código PHP:
Ver original
  1. <form action="provincias.php" method="post">
  2.         <select name="provincia" size="15px">
  3.    
  4.    
  5.          <?php
  6.             while($fila=mysql_fetch_assoc($consulta_query_prov))
  7.             {
  8.                  if(isset($_POST['provincia']) &&  $_POST['provincia'] == $fila['cod_prov']){
  9.                            echo '<option value="'.$fila['cod_prov'].'" selected>'.$fila['provincia'].'</option>';
  10.                  }else{
  11.             ?>
  12.        
  13.         <option value="<?php echo $fila['cod_prov'] ?>"><?php echo $fila['provincia'];?></option>
  14.        
  15.    
  16.     <?php
  17.           }
  18.     }
  19.     ?>

O usar Ajax, con ajax podrías utilizar tu código, sólo que la petición se realizará sin recargar la página, por decirlo de alguna manera se realiza en segundo plano. Lee sobre el tema, yo te recomendaría que te informases sobre Ajax si vas a hacer cosas así, además aprender nunca está de más y te gustará.
Perfecto, funciona! Gracias Zalito es justo lo que andaba buscando.

Etiquetas: bd, select, valor
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 16:28.