me habia parecido leer algo similar pero no lo hayo!!!


| ||||
sacado de asptutor http://www.asptutor.com/asp/vart.asp?id=102
Código:
<html> <head> <title>Combos combinados</title> <script language = "JavaScript"> <%'CONSULTA PARA OBTENER LOS DATOS Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\database\hard.mdb")) productos_Sql = "Select distinct familia, codigo, denominacion from articulos " set rs = CreateObject("ADODB.Recordset") rs.Open productos_Sql, Conn x=0 %> // FUNCION DE COMBO BOX COMBINADO function sublist(inform, selecteditem) { inform.subcatagory.length = 0 <% count= 0 y=0 do while not rs.eof %> x = <%= trim(y) %>; subcat = new Array(); subcatagorys = "<%=(rs("codigo"))&" "&(rs("denominacion")) %>"; subcatagoryof = "<%=(rs("familia"))%>"; subcatagoryid = "<%=(rs("codigo"))%>"; subcat[x,0] = subcatagorys; subcat[x,1] = subcatagoryof; subcat[x,2] = subcatagoryid; if (subcat[x,1] == selecteditem) { var option<%= trim(count) %> = new Option(subcat[x,0], subcat[x,2]); inform.subcatagory.options[inform.subcatagory.length]=option<%= trim(count)%>; } <% count = count + 1 y = y + 1 rs.movenext loop rs.close %> } </script> </head> <body bgcolor="#CDB1B7"> <h2 align="center"><b><i><font color="#AE1732"><u>Combo-box enlazados </u></font></i></b></h2> <form name="prueba"> <div align="center"> <center> <table border="0" width="80%"> <tr> <td width="77%"> <select size="1" id="familia" name="familia" onChange = "javascript:sublist(this.form, familia.value);"> <option selected>Selecciona una familia</option> <%familias_Sql = "Select distinct id,familia from familias" rs.Open familias_Sql, Conn do while not rs.eof %> <option value="<%=rs("id")%>"><%=rs("familia")%></option> <%rs.movenext loop set rs=nothing conn.close set conn=nothing%> </select> <SELECT id="subcatagory" name="subcatagory" size="1"> <Option selected value="none"></option> </SELECT></td> <td width="9%"> <p align="left"> </p> </td> </tr> </table> </center> </div> <center> </form> </center> </body> </html>
__________________ Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia http://www.controldevisitantes.com |
| ||||
de nuevo, intenté adaptarlo pero me marca este error: Error Type: Microsoft JET Database Engine (0x80004005) Not a valid file name. verarticulo.asp, line 12 que podra ser ???? no tienen un ejemplo de combos, pais --> estado --> ciudad ??? me estoy matando por hacerlo y no he podido ='( |
| ||||
Cual es la linea 12? de seguro es donde abres tu base de datos, pues tienes que adecuar el script. La verdad es que yo particularmente nunca he hecho 3 combos dependientes, pero me imagino debe ser casi lo mismo. Salu2,
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| ||||
Hola! Si es posible, y es exactamente igual, asi como logras que estado dependa de pais, asi mismo, ciudad depende de estado, sin embargo para algo asi, de forma dinamica necesitas arreglos de JavaScript muy grandes, lo que se vuelve una tarea muy pesada, porque es mucha info. Lo que haces otros es usar tecnicas con iframes, puedes ver un ejemplo en lavalife.com, buca la parte donde manejan localidades, la tecnica que utilizan es muy buena, pero igual, es algo ya mucho mas avanzado. Suerte!! |
| ||||
Cita: Coincido con lo de javascript, particularmente para pais->estado->ciudad, la tarea debe ser inmensa, pero por otro lado, el uso de iframes es compatible con la mayoria de los browsers?Lo que haces otros es usar tecnicas con iframes, puedes ver un ejemplo en lavalife.com, buca la parte donde manejan localidades, la tecnica que utilizan es muy buena, pero igual, es algo ya mucho mas avanzado. Salu2,
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| ||||
Lo que sucede es que tenia entendido que solo se visualizaban bien en IE, pero esta es info bastante vieja, solo una vez tuve que trabajar con iframes, asi que los desconozco por completo, y ahora estoy tratando de estandarizar todo para IE, FireFox, con eso creo es suficiente desde mi punto de vista. Salu2,
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| ||||
Hola No conozco FireFox, pero por ejemplo, esto de los Iframes y otras cosas de javascript y dhtml, siempre lo pruebo con IE y Netscape, porque como son casi totalmente diferentes, y son plataformas bases para otros, bueno, pues me da mas confianza, tendre que descargar el FireFox para tener otro navegador de referencia, pero bueno, en lo ultimo que lei de Iframe, decia lo que puse arriba, es una tecnologia relativamente nueva, y ya las nuevas versiones de los navegadores la estan tomando en cuenta, sin embargo, si miras el codigo de javascript que estan usando en lavalife, notaras que estan tomando en cuenta muchas plataformas, sera cosa de ver si FireFox entra en alguna de ellas... Por cierto, donde me desacargo el FireFox... Gracias. |
| ||||
www.firefox.com , en realidad creo que el estandar ahora sera IE - FireFox, Netscape esta destinado ![]()
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| ||||
Lo probe.. Baje firefox y probe la pagina de lavalife y funciona correctamente, solo un detallito visual cuando intentas elegir una opcion con la letra inicial, pero funciona correcto. Me recuerda a como en Netscape a veces cuando haces un cambio de layers se ve un brinquito. Pero si es compatible. Suerte!! |
| |||
Yo a los combos dependientes los hago distinto, ya que haciendolo con javascript estarías bajando demasiada información (aún con dos select solos) al cliente y que va a usar únicamente el 10% de ella siendo generoso, ya que va a elegir su estado y se va a actualizar con sus respectivas ciudades, por lo tanto, estaríamos demorando en bajar información que en definitiva gran parte de ella no va a ser utilizable por el cliente. Esto es lo que hago, no se que les parecerá, asi que antes de usarlo Gaby Corr, te recomiendo que esperes algún comentario de los que saben. <script> function ir(){ var selected_option = document.categorias.negocios.options[document.categorias.negocios.selectedIndex] url = selected_option.value selected_option.selected = true; window.location = url; } </script> </head> <body> <% Dim IdNegocio if Request.QueryString("id_neg") = "" then IdNegocio = 1 else IdNegocio = Request.QueryString("id_neg") end if set conexion = Server.CreateObject("ADODB.Connection") conexion.Open Application("Conexion") set RS = Server.CReateObject("ADODB.RecordSet") RS.Open "SELECT IdNegocio, Nombre FROM negReg", conexion %> <Form Method="POST" action="somethin.asp" name="categorias"> <Select name="negocios" onchange="ir()"> <option>[Seleccione Un negocio]</option> <% I = 0 do until RS.EOF %> <option value="combos.asp?id_neg=<%=RS("IdNegocio")%>"><%= RS("Nombre")%></option> <% RS.MoveNext loop RS.Close set RS = nothing %> </Select> <% set snd = Server.CreateObject("ADODB.RecordSet") snd.Open "SELECT Nombre FROM Productos WHERE IdNegocio = "&IdNegocio&"", conexion %> <select name="Productos"> <% do until snd.EOf %> <option><%=snd("Nombre")%> <% snd.MoveNext Loop snd.Close set snd = nothing conexion.CLose() set conexion = nothing %> </select> </Form> La estructura que deberías tener en tu base de datos sería la siguiente: dos tablas, una llamada Estado (en tu caso) y otra llamada Ciudades. Estas dos tablas obviamente hay que relacionarlas, lo mejor sería con un Id de Estado. Es decir, digamos que estamos en Argentina, la Provincia de Córdoba tiene el Id 1, y todas las ciudades que integran esta provincia van a tener un campo, por ejemplo, IddeEstado, con el valor de su provincia, en este caso 1. Y así sucesivamente, Buenos Aires Id 2, Santa Fe Id 3, etc y sus correspondientes ciudades los valores que correspondan. Es lo único que necesitas en cuanto a la base de datos. Yo en mi caso tengo una tabla con los negocios registrados en mi futuro sitio, y en otra tabla guardo todos los productos de todos los negocios relacionados con el Id del negocio al que corresponde ese producto. Es perfectamente aplicable a tu caso. Espero que te haya sido de ayuda. Saludos!.
__________________ Add, never Remove |
| |||
Cada value del primer select tiene una direccion URL que apunta hacia la misma página, y a la cual le paso una variable "id_neg", la cual es la que me sirve para filtrar los registros del segundo select. Lo malo de esto es que se realizan hacen muchas conexiones a la base de datos, pero lo bueno es que te muestra y se gastan recursos en obtener pura y exclusivamente la información que pide y que va a utilizar el usuario. Un saludo.
__________________ Add, never Remove |
| ||||
Si.. Ahi radica una diferencia, ademas cabe el caso, casi siempre, que ademas del combo tienes muchos otros campos en un formulario, y resulta pesado estar controlando ese caso, bueno, en mi caso, para Pais-Estado si he preferido dejarlo en javascript, pero es para localidad, por lo que tengo un script donde genero un archivo de JS, el cual es el que agrego en el html que lo necesita, es decir, tengo esa funcionalidad separada, asi, cuando llegas a un lugar que necesita la localidad, usa realmente un JS ya creado, eso evita muchas conexiones de database por usuario, también, al estar en un archivo, solamente la primera vez se toma su tiempo en descargar hacia el cliente, las siguiente ya estan en el cache del cliente, lo cual vuelve todo el proceso mucho mas rapido. Pero para cosas mas grandes, como pais-estado-ciudad, si estoy desarrollando algo con iframe, para no tener que refrescar la pagina, y ademas con el metodo que ya tengo, evitar muchas consultas. Pero bueno, todo es valido segun el caso en el que lo estas aplicando, ahi comolo tienes si es mejor, yo tambien tengo cosas como, Categoria - SubCategoria - Otra SubCategoria, que las tengo hasta en tres paginas, pagina1 pide una parte, pagina 2 la siguiente, etc. Todo depende del caso a veces. ![]() Suerte!! |
| |||
Toda la razón tienes Neuron, no había pensado en el caso esté específico que lo debe tener en un formulario de registro seguramente, lo cual le va a resultar realmente dificultoso mantener el valor de cada uno de los campos del formulario. Quizás con algo de javascript lo pueda solucionar. Por otra parte, me interesó lo que dijiste acerca del archivo que se almacena en el caché, no sabía realmente que era así esto. Se aplica eso también para un archivo XML?. Saludos!.
__________________ Add, never Remove |
| |||
Muchas gracias Neuron por hacermelo saber, ya que cada vez estoy usando más archivos xml para almacenar algunos datos que no quiero guardar en la base de datos, ya uqe no justifican hacer una conexión para rescatarlos de allí. Un saludo y nuevamente gracias!.
__________________ Add, never Remove |
| ||||
Hola chicos!!, muchas gracias por todos sus comentarios, me han pasado un ejemplo que es muy parecido a lo que comenta Mariano, por el momento lo voy a dejar asi, solo para salir de la bronca pero espero que si alguien tiene un ejemplo me lo pueda enviar por mail,jeje. Otra cosa chicos, como puedo mandar el valor de un combo box a un mail ??, ya lo he hecho con elementos de un formularion , puros campos de textos pero conun combo y un check box nooo, como le puedo hacer ?? Saludos y muchas gracias!! =D=D |
| |||
De la misma forma que haces con los campos de texto. Todo elemento de formulario tiene dos atributos importantes (al menos para las páginas del lado servidor), una de ellas es el name y otra el value. El checkbox y los combo no son una excepcion. Si tenés un checkbox, supongamos con nombre "Checkbox1", recogerías el valor en la variable "var_Checkbox" de la forma común: var_Checkbox = Request.Form("Checkbox1"), obviamente asignandole un valor al atributo VALUE del checkbox. Lo mismo ocurre con los combo. Un saludo!.
__________________ Add, never Remove |