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

problema con if dentro de un select (option)

Estas en el tema de problema con if dentro de un select (option) en el foro de ASP Clásico en Foros del Web. Hola amigos... tengo este formulario y al pasarlo en la otra pagina recogo la categoria con un request.querystring... despues le pongo un response.write para ver ...
  #1 (permalink)  
Antiguo 13/05/2005, 23:34
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
problema con if dentro de un select (option)

Hola amigos... tengo este formulario y al pasarlo en la otra pagina recogo la categoria con un request.querystring... despues le pongo un response.write para ver que tiene y me da un valor numerico tal y como yo quiero.... ahora mi duda es porque en este formulaio no queda selecionada en la lista la categoría que estoy viendo, segun yo el if esta bien.... osea de hehco me funciona solo con todas... no se porque es raro..
Código:
 
<form method="get" action="form_editar.asp">
   <p align="center"><select name="categoria">
	<% Do While Not rs.Eof %>
	<option value="<% = rs("id_categoria") %>" <% if categoria = rs("id_categoria") Then %>selected<% end if %>><% = rs("nombre_categoria") %></option>
	<%
	rs.MoveNext
	Loop
	%>
 <option value="" <% if categoria = "" Then %>selected<% end if %>>Todas</option>
 </select>&nbsp;&nbsp;<input type="submit" name="b2" value="Mostrar"></p>
Bueno espero su ayuda... gracias de antemano y saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #2 (permalink)  
Antiguo 14/05/2005, 06:24
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
de dónde sacas la variable categoría?
  #3 (permalink)  
Antiguo 14/05/2005, 10:24
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Suponiendo que la variable "categoria" realmente existe, prueba con algo como esto:

do while not RS.EOF

if categoria = rs("id_categoria") then
estado = "selected"
else
estado = ""
end if

<option value="<%=rs("id_categoria")%>" <%=estado%>><%=rs("Nombre_categoria")%></option>

RS.MoveNext
Loop

No es muy profesional, pero hasta que alguien te conteste algo mas profundizado te puede servir. Saludos.
  #4 (permalink)  
Antiguo 14/05/2005, 15:49
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
Hola... bueno la verdad es que tampoco me funciono lo tuyo amigo gracias de todas formas... en cuanto a de donde sale la variable... les dejo el codigo completo
Código:
<% Option Explicit %>
<html>
<head>
<title>Borrar Producto</title>
<link rel="stylesheet" type="text/css" href="../estilo.css">
</head>
<body>
<%
'Declaración de variables
Dim conn
Dim rs
Dim productos_sql
Dim categorias_sql
Dim categoria
Dim estado
'Rescate de la información pasada por URL
categoria = Request.Querystring("categoria")
'Conección a la Base de Datos
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../catalogo.mdb"))
'Condición de validez de la variable categoria
if categoria = "" Then
'Creación de la sentencia SQL correspondiente (cambiar el valor de tabla por el nombre de la tabla que queremos seleccionar)
productos_sql="Select * From productos"
else
'Creación de la sentencia SQL correspondiente (cambiar el valor de tabla por el nombre de la tabla que queremos seleccionar)
productos_sql="Select * From productos Where categoria = " & categoria & ""
end if
'Ejecución de la orden
Set rs = Conn.Execute(productos_sql)
%>
<table border="0" width="100%" cellspacing="0" cellpadding="0" align="center">
 <tr>
  <td width="20%" valign="top">
   <!--#include file="inc/menu.inc" -->
  </td>
  <td width="80%" valign="top">
  <form method="post" action="borrar.asp" target="_blank">
   <table border="1" bordercolor="#DFE8FF" width="70%" cellspacing="0" cellpadding="0" align="center">
	<tr>
  <td>
   <table border="0"  width="100%" cellspacing="0" cellpadding="2">
	<tr>
	 <td width="2%" bgcolor="#DFE8FF" class="text">ID</td>
		<td width="22%" bgcolor="#DFE8FF" class="text">IMAGEN</td>
		<td width="22%" bgcolor="#DFE8FF" class="text">MARCA</td>
		<td width="22%" bgcolor="#DFE8FF" class="text">MODELO</td>
		<td width="22%" bgcolor="#DFE8FF" class="text">DESCRIPCION</td>
		<td width="10%" bgcolor="#DFE8FF" class="text">PRECIO</td>
	   </tr>
	
	   <% 
	If Not rs.Eof Then
	Do While Not rs.Eof 
	%>
	   <tr>
		<td width="2%" bgcolor="#EFEFEF"><input type="checkbox" name="id" value="<% = rs("id_producto") %>"></td>
		<td width="22%" bgcolor="#EFEFEF"><% = rs("imagen") %></td>
		<td width="22%" bgcolor="#EFEFEF"><% = rs("marca") %></td>
		<td width="22%" bgcolor="#EFEFEF"><% = rs("modelo") %></td>
		<td width="22%" bgcolor="#EFEFEF"><% = rs("descripcion") %></td>
		<td width="10%" bgcolor="#EFEFEF"><% = rs("precio") %></td>
	   </tr>
	   <% 
	   rs.MoveNext 
	   Loop
	else
	   %>
	<tr>
		<td width="100%" bgcolor="#EFEFEF" colspan="6" class="text" align="center">No hay productos en esta categoría</td>
	   </tr>
	<% end if %>
   </table>
  </td>
 </tr>
   </table>
   <p align="center"><input type="submit" name="b1" value="Borrar"></p>
  </form>
  <%
  rs.close
  
  'Creación de la sentencia SQL correspondiente (cambiar el valor de tabla por el nombre de la tabla que queremos seleccionar)
  categorias_sql="Select * From categorias"
  'Ejecución de la orden
  Set rs = Conn.Execute(categorias_sql)
  %>
  <form method="get" action="form_borrar.asp">
   <p align="center"><select name="categoria">
	<% Do While Not rs.Eof
 
 'Condición para estar seleccionado en el select
 if categoria = rs("id_categoria") then
	estado = "selected"
	else
	estado = ""
	end if
	%>
	<option value="<% = rs("id_categoria") %>" <% = estado %>><% = rs("nombre_categoria") %></option>
	<%
	rs.MoveNext
	Loop
	%>
 <option value="" <% if categoria = "" Then %>selected<% end if %>>Todas</option>
 </select>&nbsp;&nbsp;<input type="submit" name="b2" value="Mostrar"></p>
  </form>
  </td>
 </tr>
</table>
</body>
</html>
Bueno gracias de antemano y saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #5 (permalink)  
Antiguo 14/05/2005, 17:25
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Hola Metallick, probé la porción de código de la parte del select, y lo modifique para seleccionar las cosas de acuerdo a unas tablas que yo tengo, y el codigo funciona correctamente. Y te digo mas, la parte que tu tienes esto:

<option value="" <% if categoria = "" Then %>selected<% end if %>>Todas</option>

también funciona, por lo no te haría falta modificar el código que habias puesto en el post al principio. Quizás no le estes enviando bien la variable por el querystring, para mi que es eso. AHora te mando la porcion del código que copie yo, modificalo para adaptarlo a tus tablas y dime si te funciona.

categoria =""
categorias_sql="Select * From Productos WHERE IdNegocio = 3"
'Ejecución de la orden
Set rs = session("conn").Execute(categorias_sql)
%>
<form method="get" action="form_borrar.asp">
<p align="center"><select name="categoria">
<% Do While Not rs.Eof

'Condición para estar seleccionado en el select
if categoria = rs("Id") then
estado = "selected"
else
estado = ""
end if
%>
<option value="<% = rs("Id") %>" <% = estado %>><% = rs("Nombre") %></option>
<%
rs.MoveNext
Loop
%>
<option value="" <% if categoria = "" Then %>selected<% end if %>>Todas</option>
</select>
</form>

Bueno ese es el codigo que modifique yo para adaptarlo a mis tablas y probarlo. Fijate que yo uso el string de conexion con session("conn"). ESo también deberías modificarlo. Y otra cosa, no le pases por el querystring la variable para hacer esta comprobacion, sino asignale un valor arbitrario a la variable categoria que esta en la primer linea y que compruebe la condición con ese valor que le pasaste arbitrariamente.
Despues avisame si te funciona. Saludos Metallick.
  #6 (permalink)  
Antiguo 14/05/2005, 17:39
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
tampoco me funciona.... ya no se que mas hacer.... bueno gracias de todos modos... saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #7 (permalink)  
Antiguo 14/05/2005, 17:47
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Probaste solamente esa parte del codigo no?, yo lo acabo de probar nuevamente y a mi me funciona correctamente. Me parece que encontrar el error ya va a ser mas complicado. Voy a ver si puedo leer un poco mas tranquilo el codigo haber si encuentro algo y te comento.
  #8 (permalink)  
Antiguo 14/05/2005, 18:18
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Metallick me fije en tu código y también lo probe. Al principio no me funcionaba la parte del select como bien tu decias, y finalmente pude encontrar el error y lograr uqe me funcionara. El error esta en el tipo de datos, por eso hay que convertir tanto el rs("id_categoria") como la variable categoria al mismo tipo de datos, yo lo converti al tipo long, haciendo esto:

categoria = CLng(request.querystring("id_categoria"))

Y luego, a medida que vas sacando el RS para hacer el select te quedaria algo asi:

Set rs = Conn.Execute(categorias_sql)
%>
<form method="get" action="form_borrar.asp">
<p align="center"><select name="categoria">
<% Do While Not rs.Eof

Id_Cat = CLng(rs("id_categoria"))

'Condición para estar seleccionado en el select
if categoria = rs("id_categoria") then
estado = "selected"
else
estado = ""
end if
%>
<option value="<% = Id_Cat %>" <% = estado %>><% = rs("nombre_categoria") %></option>
<%
rs.MoveNext
Loop

Con eso logre que me funcionara. Espero que te funcione a ti también y cualquier cosas me dices.
  #9 (permalink)  
Antiguo 14/05/2005, 18:21
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
ufffff. siempre me pasa lo mismo con eso del clng.... bueno pues amigo muchisimas gracias por tu tiempo y ayuda.... saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #10 (permalink)  
Antiguo 14/05/2005, 18:42
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
pero te funciono?, porque acabo de probarlo otra vez porque no habia copiado la linea del option TODAS, esa si que no me funciona. A ti te funciona?. Saludos.
  #11 (permalink)  
Antiguo 14/05/2005, 18:51
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
si es que al final las separe en dos y categorias lo puse dentro de la condicion inicial de categoria:

categoria = Request.Querystring("categoria")
categorias = clng(Request.Querystring("categoria"))

y el select lo deje asi:
Código:
 <p align="center"><select name="categoria">
<% Do While Not rs.Eof %>
<option value="<% = rs("id_categoria") %>" <% if categorias = rs("id_categoria") Then %>selected<% end if %>><% = rs("nombre_categoria") %></option>
<%
rs.MoveNext
Loop
%>
	<option value="" <% if categoria = "" Then %>selected<% end if %>>Todas</option>
	</select>
y me quedo el codigo entero algo asi:
Código:
<%
'Declaración de variables
Dim conn
Dim rs
Dim productos_sql
Dim categorias_sql
Dim categoria
Dim categorias
'Rescate de la información pasada por URL
categoria = Request.Querystring("categoria")
'Conección a la Base de Datos
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../catalogo.mdb"))
'Condición de validez de la variable categoria
if categoria = "" Then
'Creación de la sentencia SQL correspondiente (cambiar el valor de tabla por el nombre de la tabla que queremos seleccionar)
productos_sql="Select * From productos"
else
categorias = clng(Request.Querystring("categoria"))
'Creación de la sentencia SQL correspondiente (cambiar el valor de tabla por el nombre de la tabla que queremos seleccionar)
productos_sql="Select * From productos Where categoria = " & categoria & ""
end if
'Ejecución de la orden
Set rs = Conn.Execute(productos_sql)
%>
<table border="0" width="100%" cellspacing="0" cellpadding="0" align="center">
 <tr>
  <td width="20%" valign="top">
   <!--#include file="inc/menu.inc" -->
  </td>
  <td width="80%" valign="top">
  <form method="post" action="borrar.asp" target="_blank">
   <table border="1" bordercolor="#DFE8FF" width="70%" cellspacing="0" cellpadding="0" align="center">
	<tr>
  <td>
   <table border="0"  width="100%" cellspacing="0" cellpadding="2">
	<tr>
	 <td width="2%" bgcolor="#DFE8FF" class="text">ID</td>
		<td width="22%" bgcolor="#DFE8FF" class="text">IMAGEN</td>
		<td width="22%" bgcolor="#DFE8FF" class="text">MARCA</td>
		<td width="22%" bgcolor="#DFE8FF" class="text">MODELO</td>
		<td width="22%" bgcolor="#DFE8FF" class="text">DESCRIPCION</td>
		<td width="10%" bgcolor="#DFE8FF" class="text">PRECIO</td>
	   </tr>
	
	   <% 
	If Not rs.Eof Then
	Do While Not rs.Eof 
	%>
	   <tr>
		<td width="2%" bgcolor="#EFEFEF"><input type="checkbox" name="id" value="<% = rs("id_producto") %>"></td>
		<td width="22%" bgcolor="#EFEFEF"><% = rs("imagen") %></td>
		<td width="22%" bgcolor="#EFEFEF"><% = rs("marca") %></td>
		<td width="22%" bgcolor="#EFEFEF"><% = rs("modelo") %></td>
		<td width="22%" bgcolor="#EFEFEF"><% = rs("descripcion") %></td>
		<td width="10%" bgcolor="#EFEFEF"><% = rs("precio") %></td>
	   </tr>
	   <% 
	   rs.MoveNext 
	   Loop
	else
	   %>
	<tr>
		<td width="100%" bgcolor="#EFEFEF" colspan="6" class="text" align="center">No hay productos en esta categoría</td>
	   </tr>
	<% end if %>
   </table>
  </td>
 </tr>
   </table>
   <p align="center"><input type="submit" name="b1" value="Borrar"></p>
  </form>
  <%
  rs.close
  
  'Creación de la sentencia SQL correspondiente (cambiar el valor de tabla por el nombre de la tabla que queremos seleccionar)
  categorias_sql="Select * From categorias"
  'Ejecución de la orden
  Set rs = Conn.Execute(categorias_sql)
  %>
  <form method="get" action="form_borrar.asp">
   <p align="center"><select name="categoria">
	<% Do While Not rs.Eof %>
	<option value="<% = rs("id_categoria") %>" <% if categorias = rs("id_categoria") Then %>selected<% end if %>><% = rs("nombre_categoria") %></option>
	<%
	rs.MoveNext
	Loop
	%>
 <option value="" <% if categoria = "" Then %>selected<% end if %>>Todas</option>
 </select>&nbsp;&nbsp;<input type="submit" name="b2" value="Mostrar"></p>
  </form>
  </td>
 </tr>
</table>
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!

Última edición por El_Metallick; 14/05/2005 a las 19:07
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 21:29.