Ver Mensaje Individual
  #14 (permalink)  
Antiguo 08/11/2007, 23:54
Avatar de Shiryu_Libra
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