
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
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

-------------------------------------------------------------