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

componer nombre de formulario

Estas en el tema de componer nombre de formulario en el foro de ASP Clásico en Foros del Web. Buenos dias a todos! A ver si soy capaz de explicar lo que me pasa, q me tiene bastante desesperada. Estoy haciendo una pagina donde ...
  #1 (permalink)  
Antiguo 08/02/2007, 06:50
 
Fecha de Ingreso: mayo-2006
Ubicación: Bilbo
Mensajes: 76
Antigüedad: 18 años, 10 meses
Puntos: 0
Pregunta componer nombre de formulario

Buenos dias a todos!

A ver si soy capaz de explicar lo que me pasa, q me tiene bastante desesperada.
Estoy haciendo una pagina donde tengo una encuesta. El nº de preguntas y de posibles respuestas esta en una base de datos y es variable. Lo que hago para pintarlo es obtener por un lado las preguntas y por otro las respuesas.
Luego para pintarlo hago lo siguente
while not rvDatosPreg.EOF
i = i + 1%>
<FORM name="frmVotaciones<%=i%>" method="post">
<td><%=rvDatosPreg(1)%> </td>
<%rvDatosResp.Movefirst
while not rvDatosResp.EOF
if rvDatosResp(1) = rvDatosPreg(0) then%>
<td><%=rvDatosResp(1)%> </td>
<%end if
rvDatosResp.movenext
wend%>
</FORM>
<%rvDatosPreg.movenext
wend
end if

Voy recorriendo el recordsert de las preguntas, pinto una y recorro el recordset de respuestas buscando las respuestas posibles a esas preguntas y las pinto.
Mi problema es q las respuestas son elementos de tipo radio para q me deje seleccionar solo una de cada pregunta. Pero si pongo todas las preguntas con sus respuestas en un unico form solo puedo selecconar uno de los radios, es decir, una respuetas de una unica pregunta, no una respuesta para cada pregunta. Asi q tengo q meter cada pregunta en un form diferente (o hay otra forma de hacerlo????)
Asi q cada vez q pinto una pregunta creo un form con un nombre diferente que es un texto mas un nº de pregunta. Asi obtengo frmVotaciones1, frmVotaciones2, frmVotaciones3....
El problema que tengo es q luego en la funcion jscript q llamo para recoger los valores y guardarlos en base de datos no se como indicarle el nombre del formulario del que tiene q recoger el valor.

hago algo asi:
IdResp = document.frmVotaciones.IdRespuesta[i].value;

Lo que tengo q hacer es que coja estos valor del frmVotaciones1, frmVotacion2, ...
Pero no se como poner en la sentencia para q componga ese nombre.
Mi idea era hacer ago asi:
for (i=0;i<totpreguntas;i++)
IdResp = document.frmVotaciones.IdRespuesta[i].value;
Y ahi de alguna manera concatenar el valor de I con el nombre del formulario, pero no se como.

Alguien podria ayudarme, por favor???????
Seguro q esto se puede hacer y de una forma sencilla pero no tengo ni idea de como...

Muchas gracias a todos de antemano y ya lo siento por el mensaje tan largo pero es q no sabia como explicar lo q me pasa....!
  #2 (permalink)  
Antiguo 08/02/2007, 08:12
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: componer nombre de formulario

1) Solo necesitas UN formulario
2) Necesitas que las respuestas a una pregunta tengan el MISMO nombre
3) listo

Los radio se agrupan por nombre, no por formulario, 10 radios llamados Preg1 se agrupan entre ellos, si dentro del mismo formulario hay otros llamados Preg2, estos no se se "mezclaran" con los primeros

Saludos
  #3 (permalink)  
Antiguo 08/02/2007, 08:27
 
Fecha de Ingreso: mayo-2006
Ubicación: Bilbo
Mensajes: 76
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: componer nombre de formulario

Ese es precisamente mi problema.

Si dentro del mismo formulario lo pinto todo las respuestas siempre van a esatr en un radio que se llama =, con lo cual solo me va a dejar seleccionar una preguntar.
Yo quiero conseguir esto:
1. Es de utilidad esta aplicacion?
a. mucho
b.poco
c.nada

2. te resulta facil utilizar la aplicacion?
a.mucho
b.poco
c.nada

El problema es q todos los radios se llaman = ya que los pinto en un bucle, entonces solo puedo marcar uno de los 6, con lo cual solo puedo responder a una pregunta.
Si meto cada pregunta en un formularios diferente entonces si q puedo responder a las 2 preguntas.
pero entonces no se como recoger luego los datos....
  #4 (permalink)  
Antiguo 08/02/2007, 08:36
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: componer nombre de formulario

No, mi chava, no se hace así. Las respuestas DEBES de ponerles nombres que hagan referencia a la Pregunta. Supongo que deberias tener un bucle para las respuetas por cada pregunta, algo como <input type=radio name="Resp<%=rs("IdPregunta")%>" ...

No se como lo estes haciendo (tu código de arriba no me es muy claro), pero definitivamente no debes de usar formularios para agrupar las preguntas. SI necesitas modificar tu código o volverlo a hacer, pues ni modo, es lo correcto.
  #5 (permalink)  
Antiguo 08/02/2007, 08:53
 
Fecha de Ingreso: mayo-2006
Ubicación: Bilbo
Mensajes: 76
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: componer nombre de formulario

Vale, asi soliciono el problema de tener solo un formulario.
Pero sigo con el mismo problema al reocger los valores.
A ver, ahora lo que tendria seria algo asi:
Pregunta1
respuesta1
respuesta1
respuesta1

Pregunta2
respuesta2
respuesta2
respuesta2

Todos los radios con el mismo nombre.
Pero cuando en la funcion jscript voy a recoger el valor tengo q componer de igual manera el nombre de la respuesta.
Es decir:
IdResp = document.frmVotaciones.Respuesta[i].value;
El campo a recoger unas veces seria Respuesta1, otras Respuesta2, ...Asi con todas las q tenga.
Como hago para compener ese nombre???
Yo de antemano no se el nº de preguntas q tengo por lo que no se cuantas respuesas habra ni q nombres van a tener esos radios. De alguna forma tengo q componerlos......
  #6 (permalink)  
Antiguo 08/02/2007, 09:03
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: componer nombre de formulario

A ver, ¿las vas a procesar con javascript o las vas a mandar a otra página y las trataras con ASP?

Y si sabes el número de Preguntas que tienes, por que las pintas con ASP, y ese número que puedes llevar con un contador se lo pasas al javascript.

Dime que quieres hacer exactamente con ese cuestionario y quizá pueda yo hacer algo aqui que pueda servirte, pero necesito información más precisa y clara.

Saludos
  #7 (permalink)  
Antiguo 08/02/2007, 09:25
 
Fecha de Ingreso: mayo-2006
Ubicación: Bilbo
Mensajes: 76
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: componer nombre de formulario

A ver si consigo explicar lo que quiero.

Lo que quiero hacer es una aplicacion que muestra una serie de preguntas con sus opciones de respuesta. Es una encuesta.
Los datos de las preguntas y posibles respuestas los saca de una base de datos.
Tanto las preguntas como las respuestas tienen su Id unico.
El numero de preguntas asi como el numero de opciones de respuesta es variable, es decir, la tabla que contiene esos datos cambia constantemente.
Yo quiero mostrar las preguntas por pantalla y q la gente responda.
Luego hay un boton de "Votar" que es una llamada a una funcion jscript que esta en la misma asp.
En esta funcion lo que hago es mirar cual es la respuesta que ha marcado el usuario y guardo el id de esa respuesta. Asi:

IdPreguna1/IdRespues1|IdPregunta2\IdRespuesta2.....

Yo de momento tengo pintada la pagina con las preguntas y respuestas con un unico formulario y nombrandolas como tu me decias antes.

pregunta1
respuesta1
respuesta1
respuesta1

pregunta2
respuesta2
respuesa2

etc, etc....

Ahora el problema es q en la funcion jscript no se como recogerlas...

Si puedieses ayudarme te lo agradeceria muchisimo....

Te pego aqui el codigo completo por si te sirve de algo. Como veras la que me da problemas es la funcion Votar, q estoy haciendo pruebas asi q no hagas caso de lo q pone.

Mil gracias de nuevo.

<!-- ASP INICIO -->

<%@ Language=VBScript %>
<% Response.Buffer = true

'on error resume next

Dim rvDatosPreg
const IdPregunta = 0
const Pregunta = 1

Dim rvDatosResp
const IdRespuesta = 0
const IdPreguntaR = 1
const Respuesta = 2

Dim i
i = 0
Dim Codigos
Codigos = ""
Dim lRet
Dim TotRecsPreg
Dim TotRecsResp

'************************************************* *****************
' Listar las tareas
'************************************************* *****************
function ListarPreguntas()
dim objIncidencias
dim lRet
set objIncidencias = server.CreateObject("Intranet.clsIntranet")
if objIncidencias is nothing then
ListarPreguntas=1
else
lRet=objIncidencias.ListarPreguntas(rvDatosPreg, rvDatosResp, TotRecsPreg, TotRecsResp)
if lRet=0 then
ListarPreguntas=0
else
ListarPreguntas=1
end if
end if
set objIncidencias = nothing
end function

%>

<!-- ASP FIN -->
<!-- Javascript INICIO -->

<script language="JavaScript">

function Votar(TotRecsPreg, TotRecsResp)
{ alert(TotRecsResp);
var Datos = "";
var i;
//for (j=1;j<=TotRecsPreg;j++)
//{alert("AQui");
for (i=0;i<TotRecsResp-1;i++)
{
/*var valor = eval('document.frmVotaciones.IdRespuesta' + j + '[i].value');
alert(valor);*/

if (eval('document.frmVotaciones.IdRespuesta' + i + '[i].checked') == true)
{alert("si");
IdResp = eval('document.frmVotaciones.IdRespuesta' + i + '[i].value');
/*alert(IdResp);*/
Datos = Datos + IdResp + "|";
}
}
}
alert(Datos);
}


</script>

<!-- Javascript FIN -->
<%
lRet = ListarPreguntas()
%>
<html>
<head>
<title>Encuestas Vía Vedior</title>
<link href="assets/DUpoll.css" rel="stylesheet" type="text/css">
</head>
<body>
<FORM name="frmVotaciones" method="post">
<table width="100%" border="0" cellspacing="2" cellpadding="0">
<tr>
<td>
</td>
</tr>
<tr>
<td>
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#003399">
<tr>
<td bgcolor="#FFFFFF"> <table width="100%" border="0" cellspacing="4" cellpadding="4">
<tr>
<td>
<link href="assets/DUpoll.css" rel="stylesheet" type="text/css">
<div class="links">
<%If not rvDatosPreg.EOF then
while not rvDatosPreg.EOF
i = i + 1%>
<TABLE width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#666666">
<TR>
<TD align="left" valign="top" bgcolor="#FFFFFF">
<TABLE width="100%" border="0" cellpadding="2" cellspacing="2">
<TR>
<TD colspan="2" align="left" valign="middle" class="textBold">
<%=rvDatosPreg(1)%>
<INPUT type="hidden" name="IdPregunta" value="<%=rvDatosPreg(0)%>">
</TD>
</TR>
<%rvDatosResp.Movefirst
while not rvDatosResp.EOF
if rvDatosResp(1) = rvDatosPreg(0) then%>
<TR align="left">
<TD colspan="2" >
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr align="left">
<td width="5" rowspan="2">
<INPUT name="IdRespuesta<%=i%>" type="radio" class="form" value="<%=rvDatosPreg(0)%>/<%=rvDatosResp(0)%>">
</td>
<td class="text">
<%=rvDatosResp(2)%>
</td>
</tr>
</table>
</TD>
</TR>
<%end if
rvDatosResp.movenext
wend%>
</TABLE>
</TD>
</TR>
<TR>
<TD align="center" valign="middle" bgcolor="#F2F2F2" class="text"></TD>
</TR>
</TABLE>
<%rvDatosPreg.movenext
wend
end if
%>
</div>
</td>
</tr>
<TR align="right">
<TD align="left" valign="middle"><br>
<INPUT name="VOTE" type="button" class="form" value="Votar" onClick="javascript:Votar('<%=TotRecsPreg%>','<%=T otRecsResp%>');">
</TD>
<TD align="right" valign="middle" class="text">&nbsp;
</TD>
</TR>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
</FORM>
</body>
</html>
  #8 (permalink)  
Antiguo 08/02/2007, 11:55
 
Fecha de Ingreso: mayo-2006
Ubicación: Bilbo
Mensajes: 76
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: componer nombre de formulario

Bueno, me ha costado pero he logrado resolverlo.

por si a alguien le sirve de ayuda en algun momento lo que he hehco ha sido devolver de la base da datos una cadena donde tenia el nº de respuestas que tiene cada preguntas.
Asi en la funcion jscript hago dos bluces anidades, uno desde 0 hasta el nº de preguntas que hay, y el segundo obtengo el nº de respuestas para la pregunta actual y hago desde 0 hasta ese nº de respuestas.

Muchas gracias por vuestro interes!
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 15:14.