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

Como rellenar un select en funcion de lo que selecciono en otro select

Estas en el tema de Como rellenar un select en funcion de lo que selecciono en otro select en el foro de ASP Clásico en Foros del Web. Hola, me he encontrado con un problema a la hora de generar los valores de un select. Tengo un formulario donde tengo un par de ...
  #1 (permalink)  
Antiguo 05/10/2006, 02:39
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años, 1 mes
Puntos: 0
Como rellenar un select en funcion de lo que selecciono en otro select

Hola, me he encontrado con un problema a la hora de generar los valores de un select.
Tengo un formulario donde tengo un par de select, el primero me indica el tipo de vehiculo: (coche, moto, bici, camion, ...)
El segundo en funcion del vehiculo seleccionado me muestra un listado de marcas de este tipo de vehiculo.
Tengo todos estos valores almacenados en 2 tablas de mi base de datos, pero no se como hacer para cargar los valores en los select, mejor dicho para cargar el listado del segundo select en funcion del valor elegido en el primero.

Seguramente sera un problema que haya tenido mas gente antes que yo...

Un saludo y espero un poco de ayuda...
__________________
Salut i Força al Canut
  #2 (permalink)  
Antiguo 05/10/2006, 07:55
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Cita:
Seguramente sera un problema que haya tenido mas gente antes que yo...
Es muy cierto, por eso mismo te aconsejo que busques en las respuestas anteriores por palabras como "combos" "ligados" "dependientes" "encadenados", "selects ", etc. Tanto en este foro como en el de javascript hay muchos ejemplos.

Si tienes tudas con alguno de ellos, pues nos dices.

Saludos
  #3 (permalink)  
Antiguo 05/10/2006, 08:42
Avatar de EL_MEX [GL]  
Fecha de Ingreso: septiembre-2006
Ubicación: Mexico
Mensajes: 18
Antigüedad: 17 años, 8 meses
Puntos: 0
Hola!!
Ok conozco 2 formas para resolver esto.
1.- primero debes pedir el vehiculo (primer select) en un asp, lo acumulas en una variable y despues en otro asp (Sigiente pagina) haces el segundo select (mostrando las marcas del vehiculo)

2.- por medio de una subonsulta, la cual es una consulta entro de otra, quedaria mas o menos asi:

Select Nombre_Marca
From Tabla_Marca
Where idVehculo = (select id Vehiculo
From Tabla_Vehiculo where Nombre_Vehiculo = Variable_Que_Pediste);


Te recomiendo echarte una vuelta por:

1.- ww.itver.edu.mx/comunidad/material/tallerbd/apuntes/1.3_Txt.htm

2.- kataix.umag.cl/~mmarin/bdr/sql/cap2.html

Ojala sea de ayuda, Suerte

Bye

°.°
  #4 (permalink)  
Antiguo 05/10/2006, 10:11
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años, 1 mes
Puntos: 0
Lo que necesito es que no cambie de pagina, por eso no me vale la opcion que me comenta "EL_MEX [GL]" pero ahora me pongo a buscar algun otro post en el que se hable sobre esto...
Bueno gracias de nuevo...
__________________
Salut i Força al Canut
  #5 (permalink)  
Antiguo 06/10/2006, 09:48
Avatar de EL_MEX [GL]  
Fecha de Ingreso: septiembre-2006
Ubicación: Mexico
Mensajes: 18
Antigüedad: 17 años, 8 meses
Puntos: 0
Saludos!!

La opcion numero 2 de mi post anterior funciona en una sola pagina, por eso puse que habia 2 formas de hacerlo.

Suerte
=]
  #6 (permalink)  
Antiguo 06/10/2006, 15:29
5v5
 
Fecha de Ingreso: abril-2005
Ubicación: Huehuetoca, Mexico
Mensajes: 138
Antigüedad: 19 años, 2 meses
Puntos: 0
Yo lo hize asi..y me funciono..espero te ayude en algo....

Aqui solo juegan 3 select

S1= Empresa
S2= Sucursal
S3= Departamento

1.-primero al cargar la pagina cargas todoas las empresa(en mi caso..en to caso Autos)
y dejamos por defecto en los tres select "todos"

2.-cuando eliges una empresa(auto para ti)...envias la pagina asi mismo enviando el indice de la empresa(auto)..cuando se carga a si misma recoges el valor con reques.qeurystring("Id")..y al recoger este resultado creas una consulta solo del los departamentos que seasn = a la empresa ejemplo

sql="SELECT * FROM Departamentos WHERE id_Empresa=" & Request.QueryString("Id")

ejecutas tu consulta y rellenbas el S2(select 2) con el resultado de la consulta..

y para que no se te pierda la empresa(auto) seleccionado vuelves a rellenar el select empresa..pero si el seleccionando la empresa consultada....jejeje chapusa pero si me sirvio....


y asi con el tercer o cuarto select......bueno espero te sirva.....bueno se que mi code no esta muy bien estructurado pero me sirvio y estoy en proceso de perfeccionarlo........

aqui te dejo el code....

Código:
'creo un formulario para enviar los datos a la hoja de resultados....
<form action="Resultado.asp" method="post" name="FormularioDatos" id="FormularioDatos">
<table width="217" border="2" align="center" cellpadding="3" cellspacing="0" background="Imagenes/img1.jpg" style="border:1px outset" img="img">
  <tr>
   <td align="right"><div align="left">Empresa :</div></td>
   <td>
     <div align="left">
'cuando seleccionas lanzas el valor a si mismo para despues recoger el resultado
<select name="Empresa" onchange="location.href('Filtro.asp?EmpresaP=' + FormularioDatos.Empresa.options[FormularioDatos.Empresa.selectedIndex].value)">

        <option value="Todas">Todas</option>
         <%
obtenemos el valor del query y comprobamos si no esta vacio
EmpreQuery = trim(request.querystring("EmpresaP"))
if EmpreQuery <> "" then

'rellenamos el select con la opcion de selected
Do while not FilEmpresas.Eof

Empresas=FilEmpresas("Empresa")
    
	if Empresas = EmpreQuery then 
	
		Response.write "<option selected value=""" & Empresas & """>" & Empresas & "</option> " 
	
	else
	
    	Response.write "<option value=""" & Empresas & """>" & Empresas & "</option>" 
	
	end if
	
FilEmpresas.movenext
loop

else

'rellenamos sin selection
Do while not FilEmpresas.Eof
Empresas=FilEmpresas("Empresa")
Response.write "<option value=""" & Empresas & """>" & Empresas & "</option>" 
FilEmpresas.movenext
loop
end if

%>
       </select>
       </div></td>
   </tr>
      
   <tr>
     <td align="center" with="30"><div align="left">Sucursal::</div></td>
     <td align="center" with="30"><div align="left">

<select name="Sucursal" id="Sucursal" onchange="location.href('Filtro.asp?EmpresaP=<%=EmpreQuery%>&amp;SucursalP=' + FormularioDatos.Sucursal.options[FormularioDatos.Sucursal.selectedIndex].value)">
         <option value="Todas">Todas</option>
         <% 

if Trim(request.querystring("EmpresaP"))<>"" then


SQL4="SELECT Empresa,Sucursal FROM BASE WHERE Empresa=" & "'" & request.querystring("EmpresaP") & "'"
	set FilSucursal=createobject("ADODB.Recordset")
        FilSucursal.open SQL4,ConexionBD

SQL5="SELECT count(*) as Total FROM BASE WHERE Empresa=" & "'" & request.querystring("EmpresaP") & "'"
set FilSucuCont=createobject("ADODB.Recordset")
    FilSucuCont.open SQL5,ConexionBD

	redim Sucu(FilSucuCont("Total"))
        ContSucu=0
			Sucu(0)=""
     Do while not FilSucursal.Eof
		Sucursales=FilSucursal("Sucursal")
		

			 for i=0 to ContSucu
		 		 
			
		         if Sucu(i)=Sucursales then
'			 Response.write "<option value=""" & Departamento & """>" & Departamento & "</option>" 
	                  FocoS="Si"
					Exit for
		    	    else
			' Response.write "<option value=""" & Departamento & """>" & departamento & "</option>" 
				  
                      FocoS="No"
				  
			      end if
			
        		next

		if FocoS="No" then 
		Sucu(ContSucu)=Sucursales

		if Trim(request.querystring("SucursalP"))<>"" and Trim(request.querystring("SucursalP"))=Sucursales then
		
				Response.write "<option selected value=""" & Sucursales & """>" & Sucursales & "</option>" 
		
		else
		
				Response.write "<option value=""" & Sucursales & """>" & Sucursales & "</option>" 
		
		end if
		end if
	ContSucu=ContSucu+1
    FilSucursal.movenext
	loop

     FilSucursal.Close
	 filSucuCont.close
 	 set FilSucursal= Nothing
     set filSucuCont=Nothing
	
end if


 %>
       </select>
     </div></td>
   </tr>
   <tr>
     <td align="center" with="30"><div align="left">Departamento:</div></td>
     <td align="center" with="30"><div align="left">
       <select name="Departamento">
         <option value="Todos">Todos</option>


<%

if Trim(request.querystring("EmpresaP"))<>"" and  Trim(request.querystring("SucursalP"))<>"" then

SQL2="SELECT Empresa,Sucursal,Departamento FROM BASE WHERE Empresa=" & "'" & request.querystring("EmpresaP") & "'"  & " and Sucursal= " & "'" & Trim(request.querystring("SucursalP")) & "'"

	set FilDepartamento=createobject("ADODB.Recordset")
	FilDepartamento.open SQL2,ConexionBD

SQL3="SELECT count(*) as Total FROM BASE WHERE Empresa=" & "'" & request.querystring("EmpresaP") & "'" 
set FilDepCont=createobject("ADODB.Recordset")
filDepCont.open SQL3,ConexionBD

	redim Depa(FilDepCont("Total"))
        ContDep=0
			Depa(0)=""
     Do while not FilDepartamento.Eof
		Departamento=FilDepartamento("Departamento")
		

			 for i=0 to ContDep
		 		 
			
		         if Depa(i)=Departamento then
'			 Response.write "<option value=""" & Departamento & """>" & Departamento & "</option>" 
	                  Foco="Si"
					Exit for
		    	    else
			' Response.write "<option value=""" & Departamento & """>" & departamento & "</option>" 
				  
                      Foco="No"
				  
			      end if
			
        		next

		if Foco="No" then 
		Depa(ContDep)=Departamento
		Response.write "<option value=""" & Departamento & """>" & Departamento & "</option>" 
		end if
	ContDep=ContDep+1
    FilDepartamento.movenext
	loop

     FilDepartamento.Close
	 filDepCont.close
 	 set FilDepartamento= Nothing
     set filDepCont=Nothing
	
end if


 %>
       </select>
     </div></td>
   </tr>
   <tr><td align="center" with="30" colspan="2"><input name="Filtro" type="submit" id="Filtro" style="width:135px;height:30px" value="Filtrar" /></td></tr>


<%

     FilEmpresas.close
     set FilEmpresas= Nothing

    
      ConexionBD.Close

      Set ConexionBD = Nothing
end if
%>
esta un poco enredado....jejeje no lo se....soy novato..pero sirve

Bueno...intentare explicarte
  #7 (permalink)  
Antiguo 06/10/2006, 15:39
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
buscalo por combos dependientes


hay un monton de codigo y de post

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
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 22:05.