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

duda en select haciendo do while

Estas en el tema de duda en select haciendo do while en el foro de ASP Clásico en Foros del Web. Código: <% call conectarDB sSQL = "Select privilegio_nombre From DS_Privilegios Order by privilegio_nombre" set rs = cnn.execute(sSQL) do while not rs.eof %> <tr><td><% = rs("privilegio_nombre")%></td> ...
  #1 (permalink)  
Antiguo 07/11/2007, 17:14
Avatar de Gaby_Corr  
Fecha de Ingreso: junio-2005
Mensajes: 672
Antigüedad: 19 años, 9 meses
Puntos: 0
duda en select haciendo do while

Código:
<% call conectarDB
  sSQL = "Select privilegio_nombre From DS_Privilegios Order by privilegio_nombre"
  set rs = cnn.execute(sSQL)
  do while not rs.eof
%>
	<tr><td><% = rs("privilegio_nombre")%></td> 
	  <td class="tdselrestnd"><select name="status" id="status" class="selrestnd" onchange="valida()">
	  <option value="R">Restringida</option><option value="A">Autorizada</option>
	  </select></td>											
  </tr>
  <tr>
	<td height="5px"></td><td></td>
  </tr>
<%  rs.movenext
	loop
	rs.close
	Set rs = nothing
	call desconectarDB%>
function valida(){
alert(document.getElementById("status").value);
}


pues tengo una duda en los valores del select con el do while, armo las filas de mi tabla que tiene como columna 1 el nombre y col2, el select.

el detalle es que no se si al hacer el do while este afectandome al momento de que opcion estoy seleccionando., es decir mi tabla tiene un total de 10 registros
en el select#1 le selecciono la segunda opcion y me pone en el alert el valor correspondiente, pero si selecciono el la opcion 1 del select 10, me aparece en el alert el valor que ya esta seleccionado en mi 1er select!! y pues no se como hacerle para que cada select sea independiente ono se.. sino que no me tome el valor de mi primer select =S
__________________
" Recuerda , estas donde debes estar ..."
  #2 (permalink)  
Antiguo 07/11/2007, 17:58
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Re: duda en select haciendo do while

haber intenta realizando lo siguiente, a lo mejor todo esta bien, solo que al utilizar la funcion, le tienes especifico que sea solamente un ID("status")...

primero en la funcion de javascript, la parametrizamos, evitarnos fatiga
Cita:
function valida(vcapa){
alert(document.getElementById(vcapa).value);
}
ahora en tus selects, ya que estas haciendo de forma dinamica, tambien debes agregarle un numerito extra, ya que al utilizar la funcion, si tienes 20 selects y todos se llaman status, pues lo logico es que tome el primero.... no crees ??

agregale un contador
Cita:
do while not rs.eof
i=i+1
%>
<tr>
<td><% = rs("privilegio_nombre")%></td>
<td class="tdselrestnd">
<select name="status<%=i%>" id="status<%=i%>" class="selrestnd" onchange="valida(this)">
<option value="R">Restringida</option><option value="A">Autorizada</option>
</select></td></tr>
<tr><td height="5px"></td><td></td></tr>
<%rs.movenext
loop
asi cuando mandes llamar tu funcion validar, siempre sera el select que tu deseas

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra

Última edición por Shiryu_Libra; 07/11/2007 a las 18:04
  #3 (permalink)  
Antiguo 07/11/2007, 18:50
Avatar de Gaby_Corr  
Fecha de Ingreso: junio-2005
Mensajes: 672
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: duda en select haciendo do while

woooow!!! es cierto, me faltaba nada mas eso
muchas gracias Shiryu_Libra :D
__________________
" Recuerda , estas donde debes estar ..."
  #4 (permalink)  
Antiguo 07/11/2007, 18:56
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Re: duda en select haciendo do while

no hay problema
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #5 (permalink)  
Antiguo 08/11/2007, 11:15
Avatar de Gaby_Corr  
Fecha de Ingreso: junio-2005
Mensajes: 672
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: duda en select haciendo do while

ahora tengo otra duda con respecto al tema...

si bien despliego en un <table> los registros de una tabla y ademas le agrego un <select> con las opciones de Restringido / Autorizado, como le puedo hacer para grabar esos valores a una tabla la cual contendrá el privilegio_id,y el valor del select (R/A)





Código:
sSQL = "Select * From DS_Privilegios Order by privilegio_nombre"
set rs = cnn.execute(sSQL)
do while not rs.eof
i = i+1
PrivNombre = rs("privilegio_nombre")
%>
<tr><td><% = PrivNombre%><input name="idprivilegio" type="hidden" value="<%=rs("privilegio_id")%>" /></td>
<td class="tdselrestnd"><select name="status<%=i%>" id="status<%=i%>" class="selrestnd">
<option value="R">Restringida</option><option value="A">Autorizada</option>
</select></td>											
</tr>
<tr>
<td height="5px"></td><td></td>
</tr>
<%  rs.movenext
loop
rs.close
__________________
" Recuerda , estas donde debes estar ..."
  #6 (permalink)  
Antiguo 08/11/2007, 13:23
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Re: duda en select haciendo do while

gaby

mira, estaba mirando nuevamente tu codigo, y en el input Hidden que usas tambien hace falta agregarle el <%=i%> al final, para que sean distintos,

ahora bien, esta accion que deseas realizar... la haras con AJAX?? o un procedimiento normal de ASP el cual seria cambiar a todos los usuarios y despues un boton "guardar cambios"??

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #7 (permalink)  
Antiguo 08/11/2007, 13:53
Avatar de Gaby_Corr  
Fecha de Ingreso: junio-2005
Mensajes: 672
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: duda en select haciendo do while

bueno te muestro lo que llevo en codigo:
Código:
<form method="POST" action="asignacionprivilegios.asp" id="form1" name="form1">
	<table cellpadding="0" cellspacing="0" border="1">	
		<tr><td valign="top"><table border="0" cellpadding="0" cellspacing="0">
		<tr><td  style="margin-top: 0; vertical-align: top;">Grupos: <select name="grupo" id="grupo" onchange="Buscar(this.id)">
			<% call conectarDB
			strs = "Select * from DS_Grupos"
			Set rs1 = cnn.execute(strs)
			
			do while not rs1.eof
			%>
			<option value="<% = rs1("grupos_id")%>"><% = rs1("grupos_nombre")%></option>
			<% rs1.movenext
			   loop
			   rs1.close
			   Set rs1 = nothing
			   %>
			  </select></td>
			<td><div id="selusuarios"><select size="3" style=" width: 150px; margin-left: 30px;"><option>Usuarios del grupo</option></select></div>
			</td>
		 </tr></table></td></tr>														
		<tr>
							
			<td>
				<table border="1" > 
				<tr><td class="titprivilegio">Privilegio</td><td class="titprivilegio">Estatus</td></tr>
					<% 'call conectarDB
					  sSQL = "Select * From DS_Privilegios Order by privilegio_nombre"
					  set rs = cnn.execute(sSQL)
					  do while not rs.eof
					  i = i+1
					  PrivNombre = rs("privilegio_nombre")
					%>
						<tr><td><div id="idprivilegio"><% = PrivNombre%></div><input name="idprivilegio" id="idprivilegio<%=i%>" type="hidden" value="<%=rs("privilegio_id")%>" /></td>
						  <td class="tdselrestnd"><select name="status<%=i%>" id="status<%=i%>" class="selrestnd">
						  <option value="R">Restringida</option><option value="A">Autorizada</option>
						  </select></td>											
					  </tr>
					  <tr>
						<td height="5px"></td><td></td>
					  </tr>
					<%  rs.movenext
						loop
						rs.close
						Set rs = nothing
						call desconectarDB%>				
						
					<tr><td><%=i%></td><td><input name="Guardar" type="image" value="submit" id="Guardar" src="images/GUARDAR1.gif" onclick="Metodos(this.id)" />
					  <input type="hidden" id="metodo" name="metodo" />	
					</td></tr>	
			  </table>
			</td>
		</tr>
	</table>
</form>

al darle click en el boton guardar, quiero que vaya y meta para cada usuario, cada uno de los privilegios con su estatus
lo que pensaba hacer es algo como lo que ya habia hecho, y es un procedimiento en asp desde el submit en javascript

con esto:

function Metodos(idMetodo)
{ document.getElementById('metodo').value=idMetodo;
document.form1.submit();
}


y entonces me entro la duda de como voy a mandarle todoo el form y poder grabar todo =S


lo que si no se si se pueda es hacer..bueno mejor no me adelanto.. primero hago que se grabe para cada usuario
y luego para un grupo de usuario especifico :D
__________________
" Recuerda , estas donde debes estar ..."
  #8 (permalink)  
Antiguo 08/11/2007, 16:33
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Re: duda en select haciendo do while

Gaby
veamos, tuve un tiempito libre en la oficina e hice esto... espero te ayude

funcionamiento, una sola pagina, creo que asi es como ultimamente haz estado realizando tus codigos, asi que veamos....

funcion que se encargara de recuperar todos los datos del formulario
NOTA:
Código PHP:
<%
sub ingresardatos()

'declaracion de variables
    l=0
    k=0
    dim privilegio()
    dim estado()

    '
consultamos todos los valores que vienen del formulario
    
'usaremos el for, hasta el final del formulario
    For each elemento in request.form

        '
tomamos el valor
        dato
=request.Form(elemento)

        
'preguntamos si es un ID
        if instr(elemento,"idprivilegio")<>0 then

            '
redimensionamos dinamicamente el arreglo
            
'sin borrar lo capturado una vuelta antes
            redim preserve privilegio(k)

            '
grabamos en el arreglo el dato
            privilegio
(k)=dato

            
'aumentamos el contador de este arreglo
            k=k+1

        '
si no era IDentonces Status
        
elseif instr(elemento,"status")<>0 then

            
'tambien lo redimensionamos, al igual que el anterior
            redim preserve estado(l)

            '
guardamos
            estado
(l)=dato

            
'aumentamos contador
            l=l+1
        end if
    next

    '
hacemos el recorrido de todos los datos
    
for a=0 to ubound(privilegio)

    
'Construimos la sentencia con los valores de los arreglos
        sql="UPDATE tabla "&_
            " SET campo = '"&estado(a)&"'"&_
            " WHERE idcampo = "&privilegio(a)

    '
Ejecutamos la sentenciainsertando los datos
        response
.Write "1.- "&SQL &"<br/>"
        
con.execute(sql)
    
next
end sub

if request.QueryString("vuelta")=1 then
    ingresardatos
end 
if
%> 
Ahora bien, aki esta el script que recorrera todo el formulario para verificar que tus selects, lleven algun valor.... en caso de que te falte alguno, no se enviara nada y pondra el foco sobre el que falte

Código PHP:
<script>
function 
verificar(frm){
formulario=document.getElementById(frm)
ret=true;
for ( var 
i=0;i<formulario.elements.length;i++ ){
    if ( 
formulario.elements[i].value=="0" ){
        
alert("Elija un valor para "+formulario.elements[i].name);
        
ret=false;
        
formulario.elements[i].focus();
        break;
        }
    }
return 
ret;
}
//Final de la funcion
</script> 
y ahora, la construccion de los selects por cada usuario, esta seccion es mejor manejarla de forma individual, una parte por el el script de verificacion y otro por la recepcion de datos

Código PHP:
<form id="form" name="form" action="evitar_salir.asp?vuelta=1" method="post" onSubmit="return verificar(this.id);">
<
table>
<%
'sSQL = "Select * From DS_Privilegios Order by privilegio_nombre"
'
set rs cnn.execute(sSQL)
'do while not rs.eof
'
i+1
'PrivNombre = rs("privilegio_nombre")
%>
<tr><td><%'
=PrivNombre%>
    <
input name="idprivilegio<%=i%>" id="idprivilegio<%=i%>" type="hidden" value="<%=rs("privilegio_id")%>" /></td>
<
td class="tdselrestnd">
    <
select name="status<%=i%>" id="status<%=i%>" class="selrestnd" >
        <
option value="0">Opcion</option>
        <
option value="R">Restringida</option>
        <
option value="A">Autorizada</option>
    </
select></td>
</
tr>
<%
rs.movenext
loop
rs
.close%></table>
<
input type="submit" value="Enviar" />
</
form
espero te sirva de guia...
que me habra faltado
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #9 (permalink)  
Antiguo 08/11/2007, 18:05
Avatar de Gaby_Corr  
Fecha de Ingreso: junio-2005
Mensajes: 672
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: duda en select haciendo do while



orales! algo asi habia estado pensando, hacerlo con un for.. pero creo q lo estaba pensando para javascript.. jeje creo que andaba mal ubicada jajaja

pues mira con respecto al codigo tengo un par de dudas que hacen q no entienda a la perfeccion =S

que valor tiene elemento en el For each elemento in request.form

la funcion instr(elemento,"idprivilegio") que es lo que hace, investigue algo pero no entiendo muy bien
__________________
" Recuerda , estas donde debes estar ..."
  #10 (permalink)  
Antiguo 08/11/2007, 18:16
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Re: duda en select haciendo do while

Cita:
que valor tiene elemento en el For each elemento in request.form
elemento es solo una variable, este tomara los nombres de los items que traiga el form en el "post" o incluso en un querystring(cuando pones "GET") de ser necesario
Cita:
instr(elemento,"idprivilegio")
es una simple sentencia, estableces una validacion de los inputs que vienen en la consulta, si son "idprivilegio", o el "status"(tambien puedes añadirle otra condicion si requieres).
ahora respecto a la pregunta
Cita:
if instr(elemento,"idprivilegio")<>0
esto significa que si existe esa palabra dentro del formulario, haga algo, sino es diferente de 0, quiere decir que trae otro nombre, pero tambien puede utilizarse para saber si viene de la misma pagina o proviene de un enlace externo, por ejemplo
Cita:
'tomamos el valor de referencia de las paginas
origen=Request.ServerVariables("HTTP_REFERER")
If InStr(origen,"Default.asp")<> 0 Then
response.write "viene de la misma pagina"
else
response.write "enlace externo, primera ves"
end if
ahora, por que lo hice de esa manera... bueno, utilizas una forma dinamica de creacion de inputs y selects, entonces tambien necesitamos que de forma dinamica los arreglos coincidan al solicitar los valores para guardarlos en la base de datos

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra

Última edición por Shiryu_Libra; 08/11/2007 a las 18:24
  #11 (permalink)  
Antiguo 08/11/2007, 18:22
Avatar de Gaby_Corr  
Fecha de Ingreso: junio-2005
Mensajes: 672
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: duda en select haciendo do while

mira hice una prueba, pero como que falla al momento de indicar que valor selecciono del select status, mira lo que me arroja:(aun no mando a grabar nada en la tabla)



1.- UPDATE tabla SET campo = 'R' WHERE idcampo = 7
1.- UPDATE tabla SET campo = 'R' WHERE idcampo = 4
1.- UPDATE tabla SET campo = 'R' WHERE idcampo = 3
1.- UPDATE tabla SET campo = 'A' WHERE idcampo = 8
1.- UPDATE tabla SET campo = 'R' WHERE idcampo = 10
1.- UPDATE tabla SET campo = 'R' WHERE idcampo = 5
1.- UPDATE tabla SET campo = 'R' WHERE idcampo = 1
1.- UPDATE tabla SET campo = 'R' WHERE idcampo = 12
1.- UPDATE tabla SET campo = 'R' WHERE idcampo = 11
1.- UPDATE tabla SET campo = 'R' WHERE idcampo = 2
1.- UPDATE tabla SET campo = 'R' WHERE idcampo = 9
1.- UPDATE tabla SET campo = 'R' WHERE idcampo = 6
1.- UPDATE tabla SET campo = 'R' WHERE idcampo = 13
1.- UPDATE tabla SET campo = 'R' WHERE idcampo = 15
1.- UPDATE tabla SET campo = 'A' WHERE idcampo = 16
1.- UPDATE tabla SET campo = 'R' WHERE idcampo = 14


los que te señalo con rojo esta mal el campo='A'
ya que los que les pongo ese valor son los ultimos 2 que son el id 16 y 14
y como que al ponerlos se pierde a quien pertenecen...
__________________
" Recuerda , estas donde debes estar ..."
  #12 (permalink)  
Antiguo 08/11/2007, 18:28
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Re: duda en select haciendo do while

es extraño, hice bastantes pruebas conmigo y no me dio error, por eso lo postee, habria que chekarlo, dejame mirar el codigo, para saber que paso, ok??


Edito/Anexo:
mi prueba salio bien
Cita:
0.- UPDATE tabla SET campo = 'R' WHERE idcampo = privilegio_nombre0
1.- UPDATE tabla SET campo = 'A' WHERE idcampo = privilegio_nombre1
2.- UPDATE tabla SET campo = 'R' WHERE idcampo = privilegio_nombre2
3.- UPDATE tabla SET campo = 'R' WHERE idcampo = privilegio_nombre3
4.- UPDATE tabla SET campo = 'A' WHERE idcampo = privilegio_nombre4
5.- UPDATE tabla SET campo = 'A' WHERE idcampo = privilegio_nombre5
6.- UPDATE tabla SET campo = 'R' WHERE idcampo = privilegio_nombre6
7.- UPDATE tabla SET campo = 'A' WHERE idcampo = privilegio_nombre7
8.- UPDATE tabla SET campo = 'A' WHERE idcampo = privilegio_nombre8
9.- UPDATE tabla SET campo = 'R' WHERE idcampo = privilegio_nombre9
10.- UPDATE tabla SET campo = 'A' WHERE idcampo = privilegio_nombre10
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #13 (permalink)  
Antiguo 08/11/2007, 19:00
Avatar de Gaby_Corr  
Fecha de Ingreso: junio-2005
Mensajes: 672
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: duda en select haciendo do while

no tiene que ver el input type=hidden ?????

fijate que estuve mandando a imprimir los valores tanto para privilegio(k) y estado(l)
y ahi si los trae bien , pero trato de imprimir dato y me trae unos 2 numeros que no
se de donde los saca =S, tal vez sea por eso que se confunda.. mas no estoy segura =S
__________________
" Recuerda , estas donde debes estar ..."
  #14 (permalink)  
Antiguo 08/11/2007, 23:54
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Re: duda en select haciendo do while

Gaby

desbaratemos y expliquemos todo lo que pasa....

Primero:-----
expliquemos lo generado en la parte del HTML dinamico
este codigo se forma debido a que se realiza una consulta especifica sobre cierto grupo de usuarios al cual se le asiganara/negaran ciertos privilegios en nuestra pagina...
Cita:
<%
'sSQL = "Select * From DS_Privilegios Order by privilegio_nombre"
'
set rs = cnn.execute(sSQL)
'do while not rs.eof
'
i = i+1
'PrivNombre = rs("privilegio_nombre")
%>
ahora bien, en el procedimiento DO WHILE NOT RS.EOF, se procedera a recorrer la tabla y por cada usuario que coincida con el criterio de busqueda se le pondran los siguientes elementos en pagina:
Código PHP:
<tr><td><%=PrivNombre%>
    <
input name="idprivilegio<%=i%>" id="idprivilegio<%=i%>" type="hidden" value="<%=rs("privilegio_id")%>" /></td>
<
td class="tdselrestnd">
    <
select name="status<%=i%>" id="status<%=i%>" class="selrestnd" >
        <
option value="0">Opcion</option>
        <
option value="R">Restringida</option>
        <
option value="A">Autorizada</option>
    </
select></td>
</
tr
se le agrega un campo tipo HIDDEN, el cual contendra el idprivilegio, que nos servira de vinculo en la pagina para anexarle el dato especifico y no equivocarnos..... NOTA: no afecta o importa que sea un campo oculto, tambien puede ser un TEXTBOX normal y dara el mismo resultado, solo es cuestion de asignar bien los parametros en el resultado de la consulta
a esta seccion tambien se le asigna un select, para delimitarle los privilegios al usuario
una ves concluida la consulta y desplegados todos los parametros, se procede a modificar a discrecion lo necesario para que los usuarios tengan o no y seguido de esto dar click en el boton ENVIAR ("submit") de nuestro formulario

ahora bien, en el TAG onsubmit del Formulario, anexamos una funcion javascript
Cita:
onSubmit="return verificar(this.id);"
la cual se encargara de que no falte ningun dato al enviar nuestro formulario

verificar(frm)
esta funcion esta parametrizada, que significa, que no requerimos mas que anexar en el onsubmit, lo antes expuesto

primero tomamos el nombre del formulario a verificar
Cita:
formulario = document.getElementById(frm);
esto se traduciria a
Cita:
formulario = document.getElementById('form1');
despues inicalizamos la variable que se regresara al final de la funcion
Cita:
ret=TRUE;
le asignamos TRUE, para que si no hubo ningun error, se proceda al envio de los datos.
se realiza el siguiente for, que partira desde 0(i=0) hasta el ultimo elemento de la coleccion de nuestro formulario(formulario.elements.length) autoincrementadose en cada vuelta (i++)
dentro del FOR, se evalua por individual cada elemento(formulario.elements[i].value) realizando la pregunta "es igual a 0", en caso afirmativo, este despliega una alerta ([i]alert("Elija un valor para "+formulario.elements.name);), donde le desplegamos al usuario que select olvido anexarle un valor. Aqui mismo cambiamos el valor de RET (ret=false;); procedemos a asignarle el foco a ese elemento(formulario.elements[i].focus();) y rompemos con el ciclo para correjir el dato.

si todo hubiese marchado bien, ningun dato falto, la variable continuaria con su valor TRUE y se enviaria el formulario

SEGUNDO-----
verifiquemos codigo de funcion ingresardatos()...
las variables l, k son valores que se autoincrementaran cada vuelta en el primer FOR y seran solo para controlar las casillas del los arreglos privilegio(), y estatus()

la variable "elemento", solo tomar el nombre de de cada uno de los inputs dentro del formulario en la vuelta del primer FOR...

la variable "dato", solo se usara unica y exclusivamente para tomar el valor del elemento que en ese momento se esta evaluando y asignarlo a su respectivo Arreglo

la pregunta "instr(elemento,"idprivilegio")" y "instr(elemento,"status")", seran validas solo y solo si, los elementos del formulario, tienen esas palabras dentro del tag NAME de cada uno de los elementos..... debido a que se formulan de manera automatica y autoincrementandolos con un contador y partiendo de una raiz con los nombres dados, es la mejor manera de evitarnos problemas... salvo que mis compañeros opinen diferente.....

el parametro Ubound(privilegios) dentro del segundo FOR, dara vueltas hasta el final del arreglo, y como consecuencia podremos leer tambien el arreglo Estatus, ya que tiene la misma cantidad de elementos

la sentencia SQL, se ejecutara dentro del segundo FOR y anexara los valores a la sentencia, gracias a la explicacion (de CesarBalaguer y Tammander ), en otro post; no es necesario anteponer a la ejecucion de la consulta "SET RS =", ya que no regresa ningun puntero, entonces lo evitamos.

la pregunta que esta fuera del SUB ingresardatos(), es solo para conocer cuando nuestro usuario ha dado submit en nuestro formulario, si es correcto este mandara llamar el SUB anteriormente mencionado.....

Tercero----
DUDAS, ACLARACIONES, RECLAMACIONES....... pues posteelas

P.D:-------------------------------------------------------------
, probablemente no era necesario explicar en detalle el codigo, pero evitemos pensar que todo mundo sabe lo que esta escrito, es mucho mejor
-------------------------------------------------------------
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #15 (permalink)  
Antiguo 09/11/2007, 09:44
Avatar de Gaby_Corr  
Fecha de Ingreso: junio-2005
Mensajes: 672
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: duda en select haciendo do while

Buen día Shiryu, muchas gracias por la explicación, has hecho que le entienda mucho mejor
al codigo,.. pero pues bueno con respecto a dudas.. ya la postee, aclaraciones y reclamaciones
pues la verdad no tengo ninguna =).

Solo sigo con la duda de por que no me funciona al igual que a ti =(
algo he de tener mal entonces ..

Código:
<!-- #include file="../conexion.asp"-->
<%
sub ingresardatos()
    l=0
    k=0
    dim privilegio()
    dim estado()

    For each elemento in request.form
        dato=request.Form(elemento)
        if instr(elemento,"idprivilegio")<>0 then          
            redim preserve privilegio(k)           
            privilegio(k)=dato		
			k=k+1
        elseif instr(elemento,"status")<>0 then           
            redim preserve estado(l)           
            estado(l)=dato 			
            l=l+1
        end if
    next

    for a=0 to ubound(privilegio)
        sql="UPDATE tabla SET status = '"&estado(a)&"' WHERE idprivilegio = "&privilegio(a)
        response.Write a & ".- "&SQL &"<br/>"
    next
end sub

if request.QueryString("vuelta")=1 then
    ingresardatos
end if
%>
<form method="POST" action="asignacionprivilegios.asp?vuelta=1" id="form1" name="form1" onSubmit="return verificar(this.id);">
<table>
<tr><td>
Grupos: <select name="grupo" id="grupo" onchange="Buscar(this.id)">
		<% call conectarDB
		strs = "Select * from DS_Grupos"
		Set rs1 = cnn.execute(strs)
		
		do while not rs1.eof
		%>
		<option value="<% = rs1("grupos_id")%>"><% = rs1("grupos_nombre")%></option>
		<% rs1.movenext
		   loop
		   rs1.close
		   Set rs1 = nothing
		   %>
		  </select>
</td>	
<td> 
	<div id="selusuarios">
		<select size="3" style=" width: 150px; margin-left: 30px;">
		<option>Usuarios del grupo</option></select>
	</div>
</td> </tr>	

<tr><td>Privilegio</td><td class="titprivilegio">Estatus</td></tr>
<% 
  sSQL = "Select * From DS_Privilegios Order by privilegio_id"
  set rs = cnn.execute(sSQL)
  do while not rs.eof
  i = i+1  
%>
<tr>
	<td><% = rs("privilegio_nombre")%><input name="idprivilegio<%=i%>" id="idprivilegio<%=i%>" type="hidden" value="<%=rs("privilegio_id")%>" /></td>
  	<td class="tdselrestnd">
	  <select name="status<%=i%>" id="status<%=i%>" class="selrestnd">
		  <option value="R">Restringida</option>
		  <option value="A">Autorizada</option>
	  </select></td>											
</tr>
<%  rs.movenext
	loop
	rs.close
	Set rs = nothing
	call desconectarDB%>				
	
<tr><td><input name="Guardar" type="image" value="submit" id="Guardar" src="images/GUARDAR1.gif"  /></td></tr>	
<input name="metodo" id="metodo" type="hidden"  /></table>
</form>
__________________
" Recuerda , estas donde debes estar ..."
  #16 (permalink)  
Antiguo 09/11/2007, 14:08
Avatar de Gaby_Corr  
Fecha de Ingreso: junio-2005
Mensajes: 672
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: duda en select haciendo do while

bueno pues verifique que mandara bien los elementos del formulario, y si los manda bien, pero a la hora de desplegarlos con este for.. es cuando no corresponden los valores con el id

for a=0 to ubound(privilegio)
sql=" status = '"&estado(a)&"' donde idprivilegio = "&privilegio(a)
response.Write a & ".- "&SQL &"<br/>"
__________________
" Recuerda , estas donde debes estar ..."
  #17 (permalink)  
Antiguo 09/11/2007, 14:16
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Re: duda en select haciendo do while

gaby, que es lo que paso entonces.....??
en que parte no coinciden los datos???

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #18 (permalink)  
Antiguo 09/11/2007, 16:08
Avatar de Gaby_Corr  
Fecha de Ingreso: junio-2005
Mensajes: 672
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: duda en select haciendo do while

burno, mira hice que me desplegara que es loque trae tanto en privilegio(k) como estado(l), mira aqui una prueba,


estatus: R
estatus: R
estatus: R
estatus: R
estatus: R
privilegio: 1
estatus: A
privilegio: 2
privilegio: 3
privilegio: 4
privilegio: 5
privilegio: 6
privilegio: 7
privilegio: 8
privilegio: 9
privilegio: 10
privilegio: 11
privilegio: 12
privilegio: 13
estatus: R
privilegio: 14
privilegio: 15
privilegio: 16
estatus: R
estatus: R
estatus: R
estatus: R
estatus: R
estatus: R
estatus: R
estatus: R
estatus: R
0.- status = 'R' donde idprivilegio = 1
1.- status = 'R' donde idprivilegio = 2
2.- status = 'R' donde idprivilegio = 3
3.- status = 'R' donde idprivilegio = 4
4.- status = 'R' donde idprivilegio = 5
5.- status = 'A' donde idprivilegio = 6
6.- status = 'R' donde idprivilegio = 7
7.- status = 'R' donde idprivilegio = 8
8.- status = 'R' donde idprivilegio = 9
9.- status = 'R' donde idprivilegio = 10
10.- status = 'R' donde idprivilegio = 11
11.- status = 'R' donde idprivilegio = 12
12.- status = 'R' donde idprivilegio = 13
13.- status = 'R' donde idprivilegio = 14
14.- status = 'R' donde idprivilegio = 15
15.- status = 'R' donde idprivilegio = 16


si te fijas en el privilegio 6 le pone un status de A, cosa q no debe ser por que el select que seleccioné fue el primero, osea, el idprivilegio=1 y me pone q es una R

y si tu cuentas desde el estatus que esta en negritas, si cuentas las posiciones son 6 y por eso el status A me lo pone en el idprivilegio=6


es por eso que digo que se hace bolas:

solo puse el response.write para ver lo q traia cada uno:
Código:
    For each elemento in request.form
    
	    dato=request.Form(elemento)
		
		if instr(elemento,"idprivilegio")<>0 then          
            redim preserve privilegio(k)           
            privilegio(k)=dato
			response.Write "<br>privilegio: " & privilegio(k)
			k=k+1
		
        elseif instr(elemento,"status")<>0 then           
            redim preserve estado(l)           
            estado(l)=dato            
			response.write "<br>estatus: " & estado(l)
            l=l+1		
        end if
		
		if instr(elemento,"grupo")<>0 then
		 idgrup = dato
		end if
		if instr(elemento,"usuarios")<>0 then
		 iduser = dato
		end if
	
    next
__________________
" Recuerda , estas donde debes estar ..."
  #19 (permalink)  
Antiguo 09/11/2007, 18:15
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Re: duda en select haciendo do while

Haber Gaby, ordenemos tu respuesta.... y verifiquemos

tu prueba:......
Cita:
Iniciado por Gaby_Corr Ver Mensaje
.......

estatus: R
estatus: R
estatus: R
estatus: R
estatus: R
privilegio: 1
estatus: A
privilegio: 2
privilegio: 3
privilegio: 4
privilegio: 5
privilegio: 6
privilegio: 7
privilegio: 8
privilegio: 9
privilegio: 10
privilegio: 11
privilegio: 12
privilegio: 13
estatus: R
privilegio: 14
privilegio: 15
privilegio: 16
estatus: R
estatus: R
estatus: R
estatus: R
estatus: R
estatus: R
estatus: R
estatus: R
estatus: R
0.- status = 'R' donde idprivilegio = 1
1.- status = 'R' donde idprivilegio = 2
2.- status = 'R' donde idprivilegio = 3
3.- status = 'R' donde idprivilegio = 4
4.- status = 'R' donde idprivilegio = 5
5.- status = 'A' donde idprivilegio = 6
6.- status = 'R' donde idprivilegio = 7
7.- status = 'R' donde idprivilegio = 8
8.- status = 'R' donde idprivilegio = 9
9.- status = 'R' donde idprivilegio = 10
10.- status = 'R' donde idprivilegio = 11
11.- status = 'R' donde idprivilegio = 12
12.- status = 'R' donde idprivilegio = 13
13.- status = 'R' donde idprivilegio = 14
14.- status = 'R' donde idprivilegio = 15
15.- status = 'R' donde idprivilegio = 16
........
Ordenacion
Código PHP:
0    estatusR    privilegio1    0.status 'R' donde idprivilegio 1
1    estatus
R    privilegio2    1.status 'R' donde idprivilegio 2
2    estatus
R    privilegio3    2.status 'R' donde idprivilegio 3
3    estatus
R    privilegio4    3.status 'R' donde idprivilegio 4
4    estatus
R    privilegio5    4.status 'R' donde idprivilegio 5

5    estatus
A    privilegio6    5.status 'A' donde idprivilegio 6

6    estatus
R    privilegio7    6.status 'R' donde idprivilegio 7
7    estatus
R    privilegio8    7.status 'R' donde idprivilegio 8
8    estatus
R    privilegio9    8.status 'R' donde idprivilegio 9
9    estatus
R    privilegio10    9.status 'R' donde idprivilegio 10
10    estatus
R    privilegio11    10.status 'R' donde idprivilegio 11
11    estatus
R    privilegio12    11.status 'R' donde idprivilegio 12
12    estatus
R    privilegio13    12.status 'R' donde idprivilegio 13
13    estatus
R    privilegio14    13.status 'R' donde idprivilegio 14
14    estatus
R    privilegio15    14.status 'R' donde idprivilegio 15
15    estatus
R    privilegio16    15.status 'R' donde idprivilegio 16 
al parecer si esta en forma correcta.... no crees?
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #20 (permalink)  
Antiguo 09/11/2007, 18:18
Avatar de Gaby_Corr  
Fecha de Ingreso: junio-2005
Mensajes: 672
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: duda en select haciendo do while

puedo decirte que sii, pero la verdad no, por que yo en mi formulario no seleccione la opcion 'A' del idprivilegio 6 sino la opcion 'A' del idprivilegio= 1

es por eso q no me cuadra
__________________
" Recuerda , estas donde debes estar ..."
  #21 (permalink)  
Antiguo 09/11/2007, 18:22
Avatar de Gaby_Corr  
Fecha de Ingreso: junio-2005
Mensajes: 672
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: duda en select haciendo do while

mira si doy un response.write antes de entrar al 1er for trae los datos del formulario tal como yo los dí y los quiero asi:
Código:
idprivilegio1=1     status1=A
idprivilegio2=2     status2=R
idprivilegio3=3     status3=R
idprivilegio4=4     status4=R
idprivilegio5=5     status5=R
idprivilegio6=6     status6=R
idprivilegio7=7     status7=R
idprivilegio8=8     status8=R
idprivilegio9=9     status9=R
idprivilegio10=10  status10=R
idprivilegio11=11  status11=R
idprivilegio12=12  status12=R
idprivilegio13=13  status13=R
idprivilegio14=14  status14=R
idprivilegio15=15  status15=R
idprivilegio16=16  status16=R
pero ya despues no , no se por qlo recorre ...

response.Write(request.form)
For each elemento in request.form
...
__________________
" Recuerda , estas donde debes estar ..."
  #22 (permalink)  
Antiguo 09/11/2007, 18:49
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Re: duda en select haciendo do while

que raro esta esto

haber... vamos a ver si aparecen los Magos.....

Sensei Myakire no anda por estos lares????,
Master U_G podria hecharle poderes,
A_Z Mighty ta por ahi???



Tamm??? Cesar???

esperemos que los magos del foro pueda dar con esto, ya que de verdad no se que pasa.... honestamente

lo ironico es que si funciona el codigo conmigo
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #23 (permalink)  
Antiguo 09/11/2007, 18:56
Avatar de Gaby_Corr  
Fecha de Ingreso: junio-2005
Mensajes: 672
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: duda en select haciendo do while

pues de funcionar funciona pero pues no se q es lo que pasee =S
habra otra forma de hacer lo que quiero ???

gracias Shiryu :D
__________________
" Recuerda , estas donde debes estar ..."
  #24 (permalink)  
Antiguo 09/11/2007, 19:09
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Re: duda en select haciendo do while

pues si existe, realizar todo el procedimiento a pie

a1=request.form("idprivilegio1")
a2=request.form("idprivilegio2")
a3=request.form("idprivilegio3")
a4=request.form("idprivilegio4")

b1=request.form("status1")
b2=request.form("status2")
b3=request.form("status3")
b4=request.form("status4")

SQL= "UPDATE tabla SET status = '"& b1 &"' WHERE idprivilegio = "&a1 &"; "&_
"UPDATE tabla SET status = '"& b2 &"' WHERE idprivilegio = "&a2 &"; "&_
"UPDATE tabla SET status = '"& b3 &"' WHERE idprivilegio = "&a3 &"; "&_
"UPDATE tabla SET status = '"& b4 &"' WHERE idprivilegio = "&a4 &"; "

cn.execute (SQL)

etcetera..... pero seria escribir mucho codigo ....
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #25 (permalink)  
Antiguo 12/11/2007, 10:19
Avatar de Gaby_Corr  
Fecha de Ingreso: junio-2005
Mensajes: 672
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: duda en select haciendo do while

mm pues si pero pues no se cuantos idprivilegios son como para ponerlos en una secuencia, es decir, ahorita se q son 16 pero si se agregan mas a la tabla, como puedo hacerle para que incremente automaticamente dentro del codigo =S

o como puedo indicarle que me ponga en una variable el idprivilegio[i], por decir algo
__________________
" Recuerda , estas donde debes estar ..."
  #26 (permalink)  
Antiguo 12/11/2007, 14:17
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Re: duda en select haciendo do while

gaby, aki nuevamente

jajjajajaja no quiero que me gane el problema,

ahora hice la version en AJAX, haber que opinas....

3 archivos
Default.asp
Default2.asp
database.mdb

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #27 (permalink)  
Antiguo 14/11/2007, 12:53
Avatar de Gaby_Corr  
Fecha de Ingreso: junio-2005
Mensajes: 672
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: duda en select haciendo do while

deja lo reviso y te escribo de nuevo

gracias!!! Shiryu =)
__________________
" Recuerda , estas donde debes estar ..."
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 18:37.