| |||
Botón submit para selects anidados He creado unos selects anidados con javascript y mysql y quiero que al momento de por ejemplo seleccionar Estado: Distrito Capital - Municipio: Chacao - Localidad: Chacao, darle click a un boton submit y que me lleve que si a localhost/estado/distritocapital/chacao/chacao.php y así sea con cualquiera de cada uno de los estados y municipios. |
| |||
Respuesta: Botón submit para selects anidados Hola, la verdad no encuentro como borrar el tema, pero no se si era preferible seguir escribiendo preguntas en el otro o crear uno nuevo.. Pues ya con lo que me ayudaste ya pude hacer todo, pero ahora no encuentro al momento de dar click al botón submit me redirija como ya lo explique... |
| |||
Respuesta: Botón submit para selects anidados <option value="5000" rel="chacao">chacao</option> saca el valor del atributo rel o data como dice el compañero arriba con javascript. bye. |
| |||
Respuesta: Botón submit para selects anidados Cita: Gracias por responder, pero los datos, los estados y municipios vienen desde mysql así que como haría? se que en tucarro.com hacen algo y estuve revisando y es con javascript pero la verdad no hallo la forma de hacerlo...Gracias. |
| |||
Respuesta: Botón submit para selects anidados desde el otro tema que creaste que leei que pones que vienen de mysql, ¿tu pregunta es como saco los datos de mysql y hago eso? |
| |||
Respuesta: Botón submit para selects anidados Cita: Te adjunto imagen:Lo que quiero es por ejemplo al darle al botón enviar y tramitar me dirija a lo que seleccione, por ejemplo mipagina.com/estados/trujillo/valera/lapuerta.php e igualmente si selecciono o no la localidad me dirija a mipagina.com/estados/trujillo/valera.php Todos los datos que ves ahí los traigo desde el mysql, lo que quiero es que al seleccionar el botón me redirija como te explique |
| |||
Respuesta: Botón submit para selects anidados
Código HTML:
Ver original |
| |||
Respuesta: Botón submit para selects anidados sorry, ahora si este codigo funciona
Código HTML:
Ver original |
| |||
Respuesta: Botón submit para selects anidados No sé cómo no has encontrado info en google Solo busca cómo imprimir datos de mysql en pagina php y listo, en el rel, data o id colocas el valor recibido por mysql. Y lo mandas por javascript, del otro lado recibes y generas la url con los datos obtenidos. |
| |||
Respuesta: Botón submit para selects anidados Cita: No encuentro manera de hacerlo como ya explique.Intente de otro modo y el submit me da en la url es esto "localhost/?estado=20&municipio=&localidad=" Necesito que me redirija a localhost/estado/20 por ejemplo... la verdad ya no encuentro manera ya que hice como dijiste con lo de imprimir datos y no hallo la forma de hacerlo. |
| |||
Respuesta: Botón submit para selects anidados Si estás enviandolo por GET obviamente la url te aparecerá así como te aparece. Suponiendo que te llega "?estado=20" en ese mismo archivo pones: header("Location:" /estado/$_GET['estado']/$_GET['municipio'/); Por ejemplo. Si lo haces por POST, solo cambiarías la sintaxis por POST |
| ||||
Respuesta: Botón submit para selects anidados Si los <select> cargarán la información de manera dinámica, es decir, elegirás una opción del primer <select> y luego tendrán que cargar opciones relacionadas a dicha opción pero en el segundo <select> y la misma situación será con el segundo y tercer <select> , puedes hacer lo que explicaré a continuación.1. Dentro del formulario, añade tres secciones:
Código HTML:
Ver original 2. Crea una función que realizará las respectivas peticiones asíncronas (AJAX) para obtener los datos de la base de datos con los cuales armarás los <select> :
Código Javascript:
Ver original 3. Crea el script en el archivo PHP que procesará esta petición, realizará la búsqueda en la base de datos y creará el respectivo <select> :
Código PHP:
Ver original 4. Para que el primer <select> aparezca luego de haber cargado la página, necesitas hacer la llamada a la función ajax() pasándole los respectivos valores. Esto se ejecutará luego de ocurrido el evento DOMContentLoaded el cual se dispara cuando han terminado de cargar los elementos del documento:
Código Javascript:
Ver original 5. Para realizar las llamadas por cada vez que se elija un valor en cualquiera de los <select> y ya que estos cargarán de manera dinámica, debes asociar el evento change al documento, de tal forma que al ocurrir, tomas al elemento en el cual se produjo el evento y podrás enviar los datos que le correspondan:
Código Javascript:
Ver original 6. Cuando ya tengas a los tres <select> y hayas seleccionado las respectivas opciones, puedes proceder a realizar el redireccionamiento, para lo cual tendrás que cancelar el evento submit el cual ocurre cuando se inicia el envío de los datos del formulario. Para esto, deberás utilizar el método .preventDefault() :
Código Javascript:
Ver original Todo el código JavaScript debe quedar junto y en el orden descrito, es decir:
Código Javascript:
Ver original En resumen, tenemos tres secciones dentro del formulario en las que cargarán los tres <select> . Al terminar de cargar la página, se llamará a la función ajax() a la cual se le pasarán los valores del nivel (número de <select> ) y la sección en la cual aparecerá. Dichos datos se pasan a la función a través de un objeto literal. En la función, se crea una instancia del objeto XMLHttpRequest para realizar la petición asíncrona (AJAX), se reciben los valores y si se ha recibido el valor a tratar en la condición de la consulta a la base de datos, se lo adhiere a cadena de consulta y la ruta del archivo PHP. Se realiza el envío y cuando se reciba la respuesta, se la mostrará en la sección que se haya designado.En el archivo PHP, se realiza la conexión a la base de datos, se verifica si no se realizó para terminar la ejecución del script y se reciben y limpian los datos recibidos. Así como en la función ajax() , se verifica si se recibió el valor para la condición de la consulta SQL. Enseguida, se procede a elaborar la consulta, se la ejecuta y si se obtienen resultados, se procede a crear al respectivo <select> , el cual tendrá por clase el valor "combo" y se le asignarán las opciones según los registros obtenidos de la consulta a la base de datos. Finalmente, dicho <select> será la respuesta que recibirá la función ajax() y que mostrará en la sección respectiva.Para este ejemplo, he supuesto que los nombres de las tablas de la base de datos tienen la forma "tabla", seguido del número de tabla según corresponde a cada <select> , esto con el fin de reutilizar el mismo script para realizar distintas consultas a la base de datos, por lo que si los nombres de tus tablas no tienen una forma similar, te sugiero hacerlo de un modo parecido o quizá de otra forma que creas conveniente pero que se adapte al algoritmo propuesto. También puedes tener distintos archivos PHP para elaborar cada <select> , pero sería algo poco eficiente y elegante. Si deseas, puedes utilizar una clase para el tratamiento de los datos en el lado del servidor; por ejemplo, una clase con un método para realizar la conexión, otro para limpiar a los datos recibidos, otra para armar la consulta SQL, otra para ejecutarla, y así.La delegación del evento change al documento se debe a que no puedes registrar un evento a un elemento que ha cargado después de que haya cargado el documento, como ocurre en los casos de los <select> y otros elementos cargados dinámicamente, por lo que utilizar una clase en común, puede ser de mucha ayuda, como en este caso.Para obtener al elemento en el que ocurrió el evento, debes acceder a él mediante la propiedad target del objeto del evento. Para obtener a la sección que contiene al <select> en el cual se ha cambiado el valor, debes acceder a ella mediante la propiedad parentNode . Para obtener al nivel, es decir, el número de <select> en el cual ha ocurrido el cambio de valor, debes utilizar una instancia del método .indexOf() , el cual devuelve la posición del elemento en cuestión dentro de —en este caso— la lista de nodos cuya clase es "combo", empezando desde la posición cero, razón por la cual le sumo 1. La lista de nodos es devuelta por el método .querySelectorAll() .Como se trata de un ejemplo, tienes que adaptarlo a lo que necesitas. Si tienes alguna duda, coméntala por aquí. TIP DE AYUDA: Si quieres utilizar otro valor para los <select> que no sea el valor que estos toman de la opción seleccionada, puedes utilizar atributos personalizados.Un saludo
__________________ «Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío». ― Ayn Rand Última edición por Alexis88; 18/01/2016 a las 10:17 Razón: Mensaje de error de conexión |
| |||
Respuesta: Botón submit para selects anidados Cita: Primero que nada gracias.
Iniciado por Alexis88 Si los <select> cargarán la información de manera dinámica, es decir, elegirás una opción del primer <select> y luego tendrán que cargar opciones relacionadas a dicha opción pero en el segundo <select> y la misma situación será con el segundo y tercer <select> , puedes hacer lo que explicaré a continuación.Un saludo Amigo los selects me funcionan de manera perfecta como mostré en la imagen que comente en este post, use este código javascript(esto se encuentra dentro del index.php entre [inline]<script></script>
Código Javascript:
Ver original en otro archivo llamado buscar.php tengo esto: Código PHP: funciones.php tengo esto:Código PHP: http://localhost/estados/trujillo/valera (tomo como ejemplo tomo esa url), se podría hacer o crees que es mejor hacerlo como tu dijiste?Mil gracias por responder y por explicarme eso. Última edición por byrong; 18/01/2016 a las 12:35 Razón: Error en la url de trujillo |
| ||||
Respuesta: Botón submit para selects anidados Estimado, el método $.ajax() de jQuery que usas, realiza una petición asíncrona, o sea, hace uso de AJAX. Lo único que tienes que revisar es la lógica del algoritmo, entenderla (aunque ya te la expliqué, pero igual) y adaptarla a lo que tienes.Un saludo
__________________ «Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío». ― Ayn Rand |
| |||
Respuesta: Botón submit para selects anidados Cita: ¿Es decir que si podría adaptar lo que me diste para redireccionar con lo que te mostré?Saludos |
| ||||
Respuesta: Botón submit para selects anidados Solo tienes que tomar a los tres valores, armar la URL y hacer la redirección. Fíjate en cómo lo hice y adáptalo. PISTA: Analiza el punto 6.
__________________ «Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío». ― Ayn Rand |
| |||
Respuesta: Botón submit para selects anidados Vale, muchisimas gracias. |
Etiquetas: |