Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/09/2007, 07:02
tammander
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 4 meses
Puntos: 7
Re: encuesta con lista desplegable

No se si he captado lo que quieres... Supongamos que tenemos una página con todos los campos de la votación.

votar.asp
Código:
.....
<form action="resultados.asp">
<select name="I_CIUDAD" id="I_CIUDAD">
<option selected="selected">----</option>
<% 
strSQLMun = "SELECT I_OPCION, OPCION from OPCION ORDER BY OPCION ASC"

CrearRS dbi,RSMun,strSQLMun,0

While not RSMun.EOF
      ' Supongo que OPCION viene de la parametrizacion de la página
      If request("OPCION") = RSMUN("OPCION") Then 
               OPCION_selected = " selected"
      Else
               OPCION_selected = ""
      End If
%>

<option value="<%=RSMun("I_OPCION")%>"<%=OPCION_selected%>>
<%=Server.HTMLEncode(RSMun("OPCION"))%>
</option>

<% 		
      RSMun.MoveNext												
Wend 
CerrarObj(RSMun)
%>
</select>
<input type="radio" name="VOTO" value="SI" />
<input type="radio" name="VOTO" value="NO" />

<input name="e" type="hidden" value="<%=I_ENCUESTA%>" />

<input class="inputbutton" name="submit" value="Votar" type="submit" /><br />
</form>
Como ves, prescindo de
<input name="voto" type="hidden" value="1" />
y de
<input name="I_CIUDAD" type="hidden" value="<%=I_CIUDAD%>" />

Luego, en la página resultados.asp

resultados.asp
Código:
' Comprobamos el código con una hipotética funcion
' checkData que limpia de datos malignos las variables
Dim ciudad, tipo_encuesta, respuesta
ciudad = checkData(request.form("I_CIUDAD"))
tipo_encuesta = checkData(request.form("e"))
respuesta = checkData(request.form("VOTO"))

' Comprobamos si existe el registro
sSQL = "SELECT * FROM X_ENC_ENC_OP WHERE I_CIUDAD=" & ciudad _
            " AND I_ENCUESTA = " & tipo_encuesta _
            " AND I_ENCUESTA_OPCION = " & respuesta

CrearRS dbi,rs,sSQL,0

if rs.EOF then ' existe
       sSQL = "UPDATE X_ENC_ENC_OP " & _
                   "SET VOTOS = VOTOS+1 " & _
                   " WHERE I_ENCUESTA=" & tipo_encuesta  & _
                   " AND I_ENCUESTA_OPCION=" &  respuesta & _                             
                   " AND I_CIUDAD=" & ciudad
 else
       sSQL = "INSERT INTO X_ENC_ENC_OP " & _
                   "(VOTOS, I_ENCUESTA, I_ENCUESTA_OPCION, I_CIUDAD)" _
                   " VALUES " _
                   "(1, " & tipo_encuesta & ", " & respuesta & ", " & ciudad & ")"

end if
CerrarObj(RS)

CrearRS dbi,rs,sSQL,0
CerrarObj(RS)

Como ves, si el combobox tiene las ciudades (I_CIUDAD) no hace falta ningun campo mas, el I_ENCUESTA supongo que es una codificación para los tipos de encuestas que haces y los radio button traen ya la respuesta ('SI' o 'NO')

No se si es esto lo que necesitas, pero yo lo veo muy claro. Si me he equivocado en algo, siento no haberte entendido bien



Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -