Foros del Web » Programando para Internet » PHP »

Guardar valores select php + ajax

Estas en el tema de Guardar valores select php + ajax en el foro de PHP en Foros del Web. Saludos amigos! Tengo dos listas desplegables, la segunda condicionada por la primera realizadas con PHP y Ajax y necesito que los valores seleccionados en ambas ...
  #1 (permalink)  
Antiguo 17/04/2013, 01:39
Avatar de the_sheriff_pino  
Fecha de Ingreso: abril-2013
Ubicación: Córdoba
Mensajes: 118
Antigüedad: 11 años
Puntos: 0
Guardar valores select php + ajax

Saludos amigos!
Tengo dos listas desplegables, la segunda condicionada por la primera realizadas con PHP y Ajax y necesito que los valores seleccionados en ambas listas se guarden en una base de datos.
Forma parte de un formulario y los demás datos que introduzco si que se envían a la base de datos.
Un saludo
  #2 (permalink)  
Antiguo 17/04/2013, 04:03
 
Fecha de Ingreso: octubre-2010
Ubicación: Costa Brava
Mensajes: 58
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Guardar valores select php + ajax

A ver si te sirve: una forma de pasarlos individualmente al php es incluir en el select:

Cita:
onchange="this.form.submit();"
y ya puedes recoger el valor en una variable php

Cita:
if (!empty($_POST))
{$variable = $_POST['id_select'];
}
  #3 (permalink)  
Antiguo 17/04/2013, 04:18
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 valores select php + ajax

Cita:
Iniciado por Tetide Ver Mensaje
A ver si te sirve: una forma de pasarlos individualmente al php es incluir en el select:



y ya puedes recoger el valor en una variable php
Código PHP:
Ver original
  1. <?php
  2. header('Content-Type: text/html; charset=iso-8859-1');
  3. function generaProvincias()
  4. {
  5.     include 'conexion.php';
  6.     conectar();
  7.     $consulta=mysql_query("SELECT id, opcion FROM lista_provincias");
  8.    
  9.  
  10.     // Voy imprimiendo el primer select compuesto por los paises
  11.     echo "<select size='30' name='provincias' id='provincias' onChange='cargaContenido(this.id)'>";
  12.     echo "<option value='0'>Elige</option>";
  13.     while($registro=mysql_fetch_row($consulta))
  14.     {
  15.         echo "<option value='".$registro[0]."'>".$registro[1]."</option>";
  16.             }
  17.     echo "</select>";
  18. }
  19.    
  20.    
  21. ?>
  22.  
  23.  
  24.  
  25. <html>
  26. <head>
  27. <meta http-equiv="conten-type" content="text/html; charset=iso-8859-1" />
  28. <link rel="stylesheet" type="text/css" href="select_dependientes.css">
  29. <script type="text/javascript" src="select_dependientes.js"></script>
  30. </head>
  31.  
  32. <body>
  33.  
  34.             <div id="demo" style="width:600px;">
  35.                 <div id="demoDer">
  36.                     <select disabled="disabled" name="poblaciones" id="poblaciones" >
  37.                         <option value="0">Selecciona opci&oacute;n...</option>
  38.                     </select>
  39.                 </div>
  40.                 <div id="demoIzq"><?php generaProvincias(); ?></div>
  41.             </div>
  42.           <?
  43.           echo $registro[0];
  44.           ?>
  45.            
  46. </body>
  47. </html>
Código PHP:
Ver original
  1. <?php
  2. header('Content-Type: text/html; charset=iso-8859-1');
  3. // Array que vincula los IDs de los selects declarados en el HTML con el nombre de la tabla donde se encuentra su contenido
  4. $listadoSelects=array(
  5. "provincias"=>"lista_provincias",
  6. "poblaciones"=>"lista_poblaciones"
  7. );
  8.  
  9. function validaSelect($selectDestino)
  10. {
  11.     // Se valida que el select enviado via GET exista
  12.     global $listadoSelects;
  13.     if(isset($listadoSelects[$selectDestino])) return true;
  14.     else return false;
  15. }
  16.  
  17. function validaOpcion($opcionSeleccionada)
  18. {
  19.     // Se valida que la opcion seleccionada por el usuario en el select tenga un valor numerico
  20.     if(is_numeric($opcionSeleccionada)) return true;
  21.     else return false;
  22. }
  23.  
  24. $selectDestino=$_GET["select"]; $opcionSeleccionada=$_GET["opcion"];
  25.  
  26. if(validaSelect($selectDestino) && validaOpcion($opcionSeleccionada))
  27. {
  28.     $tabla=$listadoSelects[$selectDestino];
  29.     include 'conexion.php';
  30.     conectar();
  31.     $consulta=mysql_query("SELECT distinct * FROM $tabla WHERE id='$opcionSeleccionada' order by opcion asc") or die(mysql_error());
  32.     desconectar();
  33.    
  34.     // Comienzo a imprimir el select
  35.     echo "<select size='30' name='".$selectDestino."' id='".$selectDestino."' onChange='cargaContenido(this.id)'>";
  36.    
  37.     echo "<option value='0'>Elige</option>";
  38.     while($registro=mysql_fetch_row($consulta))
  39.     {
  40.        
  41.         // Imprimo las opciones del select
  42.         echo "<option value='".$registro[1]."'>".$registro[0]."</option>";
  43.     }          
  44.     echo "</select>";
  45. }
  46. ?>
Código Javascript:
Ver original
  1. function nuevoAjax()
  2. {
  3.     /* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
  4.     lo que se puede copiar tal como esta aqui */
  5.     var xmlhttp=false;
  6.     try
  7.     {
  8.         // Creacion del objeto AJAX para navegadores no IE
  9.         xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  10.     }
  11.     catch(e)
  12.     {
  13.         try
  14.         {
  15.             // Creacion del objet AJAX para IE
  16.             xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  17.         }
  18.         catch(E)
  19.         {
  20.             if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest();
  21.         }
  22.     }
  23.     return xmlhttp;
  24. }
  25.  
  26. // Declaro los selects que componen el documento HTML. Su atributo ID debe figurar aqui.
  27. var listadoSelects=new Array();
  28. listadoSelects[0]="provincias";
  29. listadoSelects[1]="poblaciones";
  30.  
  31. function buscarEnArray(array, dato)
  32. {
  33.     // Retorna el indice de la posicion donde se encuentra el elemento en el array o null si no se encuentra
  34.     var x=0;
  35.     while(array[x])
  36.     {
  37.         if(array[x]==dato) return x;
  38.         x++;
  39.     }
  40.     return null;
  41. }
  42.  
  43. function cargaContenido(idSelectOrigen)
  44. {
  45.     // Obtengo la posicion que ocupa el select que debe ser cargado en el array declarado mas arriba
  46.     var posicionSelectDestino=buscarEnArray(listadoSelects, idSelectOrigen)+1;
  47.     // Obtengo el select que el usuario modifico
  48.     var selectOrigen=document.getElementById(idSelectOrigen);
  49.     // Obtengo la opcion que el usuario selecciono
  50.     var opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;
  51.     // Si el usuario eligio la opcion "Elige", no voy al servidor y pongo los selects siguientes en estado "Selecciona opcion..."
  52.     if(opcionSeleccionada==0)
  53.     {
  54.         var x=posicionSelectDestino, selectActual=null;
  55.         // Busco todos los selects siguientes al que inicio el evento onChange y les cambio el estado y deshabilito
  56.         while(listadoSelects[x])
  57.         {
  58.             selectActual=document.getElementById(listadoSelects[x]);
  59.             selectActual.length=0;
  60.            
  61.             var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Selecciona Opci&oacute;n...";
  62.             selectActual.appendChild(nuevaOpcion);  selectActual.disabled=true;
  63.             x++;
  64.         }
  65.     }
  66.     // Compruebo que el select modificado no sea el ultimo de la cadena
  67.     else if(idSelectOrigen!=listadoSelects[listadoSelects.length-1])
  68.     {
  69.         // Obtengo el elemento del select que debo cargar
  70.         var idSelectDestino=listadoSelects[posicionSelectDestino];
  71.         var selectDestino=document.getElementById(idSelectDestino);
  72.         // Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origen
  73.         var ajax=nuevoAjax();
  74.         ajax.open("GET", "select_dependientes_proceso.php?select="+idSelectDestino+"&opcion="+opcionSeleccionada, true);
  75.         ajax.onreadystatechange=function()
  76.         {
  77.             if (ajax.readyState==1)
  78.             {
  79.                 // Mientras carga elimino la opcion "Selecciona Opcion..." y pongo una que dice "Cargando..."
  80.                 selectDestino.length=0;
  81.                 var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
  82.                 selectDestino.appendChild(nuevaOpcion); selectDestino.disabled=true;   
  83.             }
  84.             if (ajax.readyState==4)
  85.             {
  86.                 selectDestino.parentNode.innerHTML=ajax.responseText;
  87.             }
  88.         }
  89.         ajax.send(null);
  90.     }
  91. }

Etiquetas: ajax, formulario, select
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 17:05.