elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Guardar valores select php + ajax
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Guardar valores select php + ajax  (Leído 7,387 veces)
the_sheriff_pino

Desconectado Desconectado

Mensajes: 42



Ver Perfil
Guardar valores select php + ajax
« en: 17 Abril 2013, 09:38 am »

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


En línea

Rebélate
дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.110


Ver Perfil WWW
Re: Guardar valores select php + ajax
« Respuesta #1 en: 17 Abril 2013, 16:51 pm »

Y luego?, viejo aquí no hacemos tareas... pero te ayudamos. Ya leíste algo sobre Ajax y peticiones get?

Saludos


En línea

the_sheriff_pino

Desconectado Desconectado

Mensajes: 42



Ver Perfil
Re: Guardar valores select php + ajax
« Respuesta #2 en: 17 Abril 2013, 16:58 pm »

Y luego?, viejo aquí no hacemos tareas... pero te ayudamos. Ya leíste algo sobre Ajax y peticiones get?

Saludos
Si, está todo hecho, y funciona, lo único que me falta es que se recojan los valores seleccionados y se manden a la base de datos por ejemplo con un botón.
En línea

Rebélate
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Guardar valores select php + ajax
« Respuesta #3 en: 17 Abril 2013, 17:26 pm »

Desde php recoges los datos con $_POST si los enviaste via POST y $_GET si los enviaste via GET.

Dale un <?php print_r($_POST); ?> para saber que datos está recogiendo.

Sabes SQL? has utilizado bases de datos alguna ves en php?
http://php.net/manual/es/book.mysql.php

Saludos.
En línea

the_sheriff_pino

Desconectado Desconectado

Mensajes: 42



Ver Perfil
Re: Guardar valores select php + ajax
« Respuesta #4 en: 17 Abril 2013, 17:53 pm »

Desde php recoges los datos con $_POST si los enviaste via POST y $_GET si los enviaste via GET.

Dale un <?php print_r($_POST); ?> para saber que datos está recogiendo.

Sabes SQL? has utilizado bases de datos alguna ves en php?
http://php.net/manual/es/book.mysql.php

Saludos.
Si manejo SQL, la cuestión es que no me devuelve nada, utilizo echo en vez de print pero... Os muestro el código porque de todas maneras... no soy capaz de averiguarlo.

Código
  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
  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. }

Código
  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. echo $opcionSeleccionada;
  47. ?>
En línea

Rebélate
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Guardar valores select php + ajax
« Respuesta #5 en: 18 Abril 2013, 14:23 pm »

Intenta dos cosas:

1. Habilita el reporte de errores de php, recuerda que estás desarrollando asi que php ebe estar configurado en modo developer, busca el php.ini y busca estos valores:

Citar
display_errors = On
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED

Esos dos valores deben estar tal cual se muestra. Ahora vuelve a ejecutar tu programa y vee si php te da algún mensaje de error.

Después de hacer este cambio debes reiniciar el servidor WEB, si no estas usando uno local intenta hacerlo desde php:

Código
  1. <?php
  2. ini_set('display_errors', 'On');
  3.  
  4. if(defined('E_DEPRECATED'))
  5. error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
  6. else
  7. error_reporting(E_ALL & ~E_NOTICE);

2. Agrega un control de mensajes de error de mysql con la función mysql_error(), dale un echo a esa función después de mysql_query() para ver si fue la petición la que falló o no.

3. Copia la query completa y pegala en el phpmyadmin y vee que filas te devuelve, si no te devuelve nada entonces la base de datos está mal hecha.

4. Dale un vistazo a la consola de errores de firefox, dale click en la pestaña para mostrar unicamente los mensajes de error, esto te mostrará si hay algún problema con javascript, te recomiendo usar jquery por temas de compatibilidad ya que tu código no funciona en todos los exploradores.

5. Usa firebug para ir viendo en tiempo real que está sucediendo con tu sitio WEB, usa el inspeccionador de código y la consola para ver si aparece algún error de carga o algo por el estilo.

Dale un vistazo a estas opciones y nos cuentas como te fue, no puedo probar tu código en mi servidor porque no tengo la base de datos ni el archivo de conexión asi que no se que pueda estar fallando.

Saludos.
« Última modificación: 18 Abril 2013, 14:26 pm por WHK » En línea

the_sheriff_pino

Desconectado Desconectado

Mensajes: 42



Ver Perfil
Re: Guardar valores select php + ajax
« Respuesta #6 en: 18 Abril 2013, 14:34 pm »

Empecé con el código de 0 y lo he ido simplificando y haciéndolo más sencillo hasta llegar al punto de guardar los valores del select, que me guarda el id de la provincia, cuando quiero que me guarde el nombre, usease, el nombre asociado al id que se obtiene al seleccionar una opción del select.

https://foro.elhacker.net/desarrollo_web/consulta_para_insertar_en_vez_de_id_su_nombre_asociado-t388338.0.html
En línea

Rebélate
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Guardar valores select php + ajax
« Respuesta #7 en: 18 Abril 2013, 14:51 pm »

Entonces el problema está expuesto en el otro post.

Post duplicado.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Guardar valores en variables
Scripting
kraszic 4 3,012 Último mensaje 19 Enero 2008, 03:14 am
por warlock45
Hacer valores aleatorios sin Select Case
Programación Visual Basic
oskoa 7 3,757 Último mensaje 14 Noviembre 2011, 19:28 pm
por BlackZeroX
Ayuda: Autocomplete que inserte tres valores AJAX, JAVA y PHP.
PHP
astaklat 0 1,968 Último mensaje 13 Mayo 2015, 15:35 pm
por astaklat
MOSTRAR valores de dos select
Bases de Datos
bgnumis 2 2,539 Último mensaje 21 Junio 2015, 23:16 pm
por fran800m
Pasar valor de select HTML a PHP con ajax
Desarrollo Web
reenurya 2 4,184 Último mensaje 23 Febrero 2017, 01:24 am
por Razzari
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines