Foros del Web » Programando para Internet » ASP Clásico »

Menu Desplegable: carga(dinamica) desde una BD

Estas en el tema de Menu Desplegable: carga(dinamica) desde una BD en el foro de ASP Clásico en Foros del Web. Como dice el titulo necesito cargar datos a un Menu Desplegable (name= "datos") desde una BD, cuando se selecciona una opcion de otro Menu Desplegable(name= ...
  #1 (permalink)  
Antiguo 09/11/2005, 00:36
Avatar de horizonte  
Fecha de Ingreso: octubre-2005
Ubicación: A 50cm del Monitor(el angulo depende del estado de animo)
Mensajes: 148
Antigüedad: 19 años, 6 meses
Puntos: 1
Pregunta Menu Desplegable: carga(dinamica) desde una BD

Como dice el titulo necesito cargar datos a un Menu Desplegable(name= "datos") desde una BD, cuando se selecciona una opcion de otro Menu Desplegable(name= "opciones" , los datos varian segun la opcion seleccionada).

Lo que se me ocurrio hacer es una llamada a una funcion(JavaScript) del tipo onclick, q'lo unico q'hace es validar si la opcion elegida no sea vacia y redirecciona a una pagina(procesaOpcion.asp) donde hago la consulta(SQL), cargo los datos al Menu Desplegable en cuestion, y vuelvo a la pagina(paginaDatos.asp).

Este es el codigo:
Código:
<SELECT size="1" name="opciones" class="fuente" onclick="cargarDatos()">
        <option value=" "> </option>
		 
	<option value="A">Datos.A</option>
	<option value="B">Datos.B</option>
	<option value="C">Datos.C</option>

<!-- ----------------------FUNCIONES-------------------------------------------------->

function cargarDatos() {

  if(document.form.datos.value !=" ") {
    window.location.href="procesaOpcion.asp";
  }
}
Luego en la pagina procesaOpcion.asp:
Código:
<%
 'Hago la cx a la BD y cargo el RSet

  'Este While es un injerto q'quise adaptar a ASP(estaba en JavaScript y   
   obviamente no Funciona)
  'Perdon por la burrada es solo para mostrar lo q'quiero hacer !
  x=0
  while (not objRS.Eof)
    Request.Form("datos").value= new Option(x)
    Request.Form("datos").value= "H"&obsRS("Dato")
    objRS.MoveNext
    'x= x+1
  wend
  
  oConn.Close
  set objRS = nothing
  set oConn = nothing
  Server.Transfer("paginaDatos.asp")
%>
El tema es q'para cargar opciones al Menu, debo crearlas primero y luego asignarle el valor (eso es lo q'vi q'funcionaba OK, desde una funcion(javaScript), pero los datos(son pocos) los carga desde un array definido en la misma pagina). Pienso q'es factible hacerlo ya q'recuerdo varias paginas q'hacen esto.

Desde ya agradesco a quien pueda aportar algo,
Saludos.
__________________
Mientras tanto aqui, en la Gran Ciudad...
Una nueva hora,...Comienza
:Zzz:
  #2 (permalink)  
Antiguo 09/11/2005, 00:38
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Muchos temas al respecto, usa el buscador, investiga sobre listas dependientes.

__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 11/11/2005, 00:31
Avatar de horizonte  
Fecha de Ingreso: octubre-2005
Ubicación: A 50cm del Monitor(el angulo depende del estado de animo)
Mensajes: 148
Antigüedad: 19 años, 6 meses
Puntos: 1
Pregunta Sera Factible?

Encontre varias paginas de referencia sobre listas dependientes, combinadas, condicionadas, etc.
Paso a detallar todas las opciones q'encontre:

a-Cargar el SELECT desde una BD(no usa onchange)

b-Al elegir una opcion de un SELECT1, llama a una fucion q'selecciona el item de otro SELECT2 (este ultimo ya estaba cargado).

c-Otras variantes del a y b con redireccion a otra pagina, cambio de formato de la pagina,etc.

Pero lo q'no encontre(q'es lo q'quiero hacer) es:
Al elegir una opcion de un SELECT1, carga(desde una BD) otro SELECT2(q'esta vacio debido a que todas las opciones son muchas)segun el valor seleccionado del SELECT1.

El Talon de Aquiles es q'si uso onchange, entonces tengo q'usar una Funcion(q'no puede traer los valores de la BD), entonces esa funcion redirecciona a una pagina2.asp q'hace la cx y trae los datos,...barbaro, pero desde la pagina2.asp como cargo los valores a un SELECT2 q'esta en otra pagina1.asp ?.

Nuevamente agradesco a quien pueda aportar algo,
Saludos.
__________________
Mientras tanto aqui, en la Gran Ciudad...
Una nueva hora,...Comienza
:Zzz:
  #4 (permalink)  
Antiguo 11/11/2005, 01:09
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Pero lo que quieres son listas dependientes no?
Es decir, quieres cargar un select de la DB, dependiendo de lo que selecciones, cargar otro select sin recargar la pagina?
Eso se llama listas dependientes y se utiliza ASP + Javascript y se ha tocado miles de veces el tema, es mas creo que en las FAQs hay algunos ejemplos.


Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 16/11/2005, 23:24
Avatar de horizonte  
Fecha de Ingreso: octubre-2005
Ubicación: A 50cm del Monitor(el angulo depende del estado de animo)
Mensajes: 148
Antigüedad: 19 años, 6 meses
Puntos: 1
Pregunta Vamos que falta poco !

Finalmente llegue a algo que se adapta totalmente,...pero no me funciona , paso a explicar:

Tengo una lista(combo1) que ya tiene las opciones cargadas(html), al seleccionar una opcion llamo a una funcion(JavaScript que redirecciona a otra pagina2.asp) que carga otra lista(combo2), desde una BD(Sql), UNICAMENTE con los valores asociados a la opcion seleccionada(es decir que se restrinje(where) el query).
No lo hago con Submit porque eso lo uso para pasar TODOS los datos a la BD.

El codigo es:
-------------
pagina1.asp
-------------
Código:
<SELECT size="1" name="combo1" class="fuente" onchange="cargarOpciones()">
		       <option value="Seleccione una Opcion">Seleccione una Opcion</option>
		 
				<option value="Opcion1">Opcion1</option>
				<option value="Opcion2">Opcion2</option>
				<option value="Opcion3">Opcion3</option>
		

<!-- ----------------------- FUNCIONES ----------------------------------------------- -->
<script language="Javascript">
function cargarOpciones() {

  if(document.form.combo1.value !='Seleccione una Opcion') {
    window.location.href="pagina2.asp";
  }
------------------
pagina2.asp
------------------
Código:
<html>

<head>
<title>Pagina Carga Combo2</title>
</head>

<script language = "JavaScript">
  var listaModeloMarca= new Array(100)
</script>

<body>
<%
  '--------------Creo la conexion y cargo el RecordSet-------------
  
  Dim oConn, strSQL, objRS
  Dim x
  
  Set oConn = Server.CreateObject("ADODB.Connection")   <-- Linea 3
  Set objRS = Server.CreateObject("ADODB.Recordset")
  oConn.Open "Driver={SQL Server};Server=ServerName;Database=DBName;Trusted_Connection=yes;"
  
  strSQL= "select marca, modelo from Tabla "& _
          "where marca like '" &Request.Form("marca")& "'" <--Leo el item seleccionado
  Set objRS = oConn.Execute(strSQL)
  
  '------------Ahora paso los datos a un array y luego al Combo2)---
  x=0
  do while (not objRS.Eof)
%>
<script language = "JavaScript">
	listaModeloMarca[x]= objRS(modelo)&"-"&objRS(marca)
</script>
<%
    x = x + 1
    objRS.MoveNext
  loop
    
  oConn.Close
  set objRS = nothing
  set oConn = nothing
%>
<script language = "JavaScript">
  for (x=0; x<listaModeloMarca.length; x++) {
	document.form.Combo2.options[x] =  new Option(listaModeloMarca[x]); <--Aca da el Error
	document.form.Combo2.options[x].value = listaModeloMarca[x];
  }
</script>
<%
  Server.Transfer("Pagina1.asp")
%>
</body>

</html>
La pagina carga OK, pero al Seleccionar una opcion, da ERROR(del q'aparece en la ventana de Errores al cargar la pagina [Aceptar] [Ocultar Detalles]) y vuelvo a la pagina1.asp sin poder cargar el combo2.
-------------------------------------------------------
Linea 18
Car: 2
Error: 'document.form.Combo2' es nulo o no es un objeto.
Codigo 0
http://webdir/CGI-BIN/pagina2.asp
-------------------------------------------------------


Desde ya agradesco a quien pueda aportar algo,
Saludos.
__________________
Mientras tanto aqui, en la Gran Ciudad...
Una nueva hora,...Comienza
:Zzz:
  #6 (permalink)  
Antiguo 17/11/2005, 10:11
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
lee este post

http://www.forosdelweb.com/f15/doble-combo-box-dinamico-350031/


quiza te sirva
__________________
JuanRa Pérez
San Salvador, El Salvador
  #7 (permalink)  
Antiguo 17/11/2005, 10:48
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
y descarga este demo

http://www.ashleyit.com/rs/jsrs/select/php/select.php
__________________
JuanRa Pérez
San Salvador, El Salvador
  #8 (permalink)  
Antiguo 17/05/2006, 23:09
Avatar de horizonte  
Fecha de Ingreso: octubre-2005
Ubicación: A 50cm del Monitor(el angulo depende del estado de animo)
Mensajes: 148
Antigüedad: 19 años, 6 meses
Puntos: 1
Información Documentar

Ante todo una aclaracion: me puse a ver todos mis post y me encontre con que habia varios que quedaron inconclusos(aunque ya fueron solucionados en su tiempo de publicacion), entonces decidi cerrar todos mis post, es decir a lo largo de todo este tiempo fui aprendiendo con ustedes(entre otras fuentes), y me parecio etico aportarles un poco de orden para que estos post sirvan a otra gente.

Esto lo solucione asi: ver rta de otro post mio (Multiples Listas Dependientes ...)
http://www.forosdelweb.com/f15/multiples-listas-dependientes-no-anda-378361/

Espero les haya sido util,
Saludos
__________________
Mientras tanto aqui, en la Gran Ciudad...
Una nueva hora,...Comienza
:Zzz:
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:10.