Foros del Web » Programando para Internet » Javascript »

duda para masters validando checkbox con arrays en php

Estas en el tema de duda para masters validando checkbox con arrays en php en el foro de Javascript en Foros del Web. Hola a todos en verdad espero me contesten y/o me ayuden con mi problema estoy a punto de entregar el sistema y es lo ultimo ...
  #1 (permalink)  
Antiguo 04/11/2011, 19:58
 
Fecha de Ingreso: abril-2008
Ubicación: Chihuahua Mexico
Mensajes: 166
Antigüedad: 16 años
Puntos: 15
duda para masters validando checkbox con arrays en php

Hola a todos en verdad espero me contesten y/o me ayuden con mi problema estoy a punto de entregar el sistema y es lo ultimo que necesito validar y la verdad no enuentro forma ya lie 2 dias en esto....


tengo "N" checkbox que son generados de forma automatica cada columna de checkbox son generados mediante PHP se imprimen en pantalla de esta forma:

todos los sigueintes son checkbox

1 - sucursal (chk) Lunes(chk) Martes(chk) miercoles(chck) n n nl domingo(chk)
2 - sucursal (chk) Lunes(chk) Martes(chk) miercoles(chck) n n nl domingo(chk
3 - sucursal (chk) Lunes(chk) Martes(chk) miercoles(chck) n n nl domingo(chk)


los checkbox traen nombre y id de la siguiente manera

Código PHP:
<td>L<input type="checkbox" name="lunes[<? echo $user->sucursal?>]" class="lun"  id="dia[<? echo $user->sucursal?>]"/></td>
<td>M<input type="checkbox" name="martes[<? echo $user->sucursal?>]" class="mar" id="dia[<? echo $user->sucursal?>]" /></td>
<td>M<input type="checkbox" name="miercoles[<? echo $user->sucursal?>]" class="mie" id="dia[<? echo $user->sucursal?>]" /></td>
<td>J<input type="checkbox" name="jueves[<? echo $user->sucursal?>]" class="jue" id="dia[<? echo $user->sucursal?>]" /></td>
<td>V<input type="checkbox" name="viernes[<? echo $user->sucursal?>]" class="vie" id="dia[<? echo $user->sucursal?>]" /></td>
<td>S<input type="checkbox" name="sabado[<? echo $user->sucursal?>]" class="sab" id="dia[<? echo $user->sucursal?>]" /></td>
<td>D<input type="checkbox" name="domingo[<? echo $user->sucursal?>]" class="dom"  id="dia[<? echo $user->sucursal?>]" /></td>
entonces tengo que validar si se selecciono una sucursal y si es asi que se alla seleccionado al menos un dia de la semana para esta sucursal.

entonces mi JS es de esta manera:

Código Javascript:
Ver original
  1. function contar() {
  2.     var checkboxes = document.getElementById("dia[<? echo $user->sucursal; ?>]");//Array que contiene los checkbox
  3.     var cont = 0; //Variable que lleva la cuenta de los checkbox pulsados
  4.     for (var x=0; x < checkboxes.length; x++) {
  5.         if (checkboxes[x].checked) {
  6.             cont = cont + 1;
  7.         }
  8.     }
  9.     if(cont < 1 ) { alert ("Seleccione al menos un dia por semana seleccionada"); return false }
  10. }

que para empezar no me funciona y para terminar no se como decirle que verifique dias selecionados por sucursal seleccionada

espero averme explicado, desde ya muchas gracias
  #2 (permalink)  
Antiguo 05/11/2011, 14:13
 
Fecha de Ingreso: abril-2008
Ubicación: Chihuahua Mexico
Mensajes: 166
Antigüedad: 16 años
Puntos: 15
Respuesta: duda para masters validando checkbox con arrays en php

alguien por favor?!?!?!?!?!!?
  #3 (permalink)  
Antiguo 05/11/2011, 14:30
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: duda para masters validando checkbox con arrays en php

a vuela pluma, estás cometiendo dos errores
  • las ids han de ser únicas
  • valida por el name no por la id. has de usar document.formulario.elements
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #4 (permalink)  
Antiguo 05/11/2011, 14:39
 
Fecha de Ingreso: junio-2009
Mensajes: 64
Antigüedad: 14 años, 10 meses
Puntos: 6
Respuesta: duda para masters validando checkbox con arrays en php

Dependera de como te forme el documento. Pero definitivamente hay algo mal, porque en primer lugar como regla no se debe utilizar el id mas de una vez. y no se que trae exactamente el $user->sucursal. En todo caso eso debería ir al class, y si lo que tenes en clase deberia ir al id.

Por otro lado, contentando mas a tu problema deberías utilizar el document.querySelector(), busca información seguramente te servirá.

Quiza deberías tomar los valores de las sucursales primero y apartir de ahi desplazarte a todos los checks que le corresponden a esa sucursal, y no buscar directamente los check.

Espero que se entienda, y te sirva saludos.
  #5 (permalink)  
Antiguo 05/11/2011, 16:18
 
Fecha de Ingreso: abril-2008
Ubicación: Chihuahua Mexico
Mensajes: 166
Antigüedad: 16 años
Puntos: 15
Respuesta: duda para masters validando checkbox con arrays en php

primeramente mil gracias por tomarse la molestia en ayudarme :)

puse las ids iguales para que verifique por grupo de ids... ok esta mal lo cambiare total y definitivamente pero isabel si los agarro por name mis checks son name lunes[<? ?>] como paso ese nombre con arreglo y php a javascript???

por otro lado perceval "$user->sucursal" contiene el nombre de la sucursal y me podrias explicar un poco mas lo que me comentas en tu ultima linea???

(Quiza deberías tomar los valores de las sucursales primero y apartir de ahi desplazarte a todos los checks que le corresponden a esa sucursal, y no buscar directamente los check. )


de antemano muchas gracias chicos que la verdad no veo luz en este tunel ajajjajaj saludos
  #6 (permalink)  
Antiguo 05/11/2011, 17:17
 
Fecha de Ingreso: junio-2009
Mensajes: 64
Antigüedad: 14 años, 10 meses
Puntos: 6
Respuesta: duda para masters validando checkbox con arrays en php

Presupongo que sucursales crea distintos objeto creo dos para este ejemplo solamente $user->sucursal1 y 2 ...
despues genero dos tablas con esos valores en particular...
Posteriormente lo que hago es tomar como si fueran archivos XML, todas las tablas que tengo, posteriormente recorro
de cada tabla los inputs que contiene haciendo la comprobacion, y en el caso de que alguna tabla no tenga esos
valores envio el mensaje.



Algo asi:

Código PHP:
<?php
$user
->sucursal1 "SucursalMX";
$user->sucursal2 "SucursalAR";
?>
<!doctype html>
<html>
    <head>
        <title>pruebas</title>
        <script type="text/javascript">
           function comprobarCheck(){
            
              var tablas = document.querySelectorAll("table");
              for(i=0;i<tablas.length;i++){
              comp = 0;
                var inputs = tablas[i].querySelectorAll("input");
                 for(e=0;e<inputs.length;e++){
                     if(inputs[e].checked){
                     comp++;}
                 }
                 
                 if(comp<1){alert("Error en la tabla de la sucursal: "+tablas[i].id+" no ha seleccionado ningun dia... selecione uno");}
              }


           }


        </script>
    </head>
    <body >
<table id="<? echo $user->sucursal1 ?>">
<tr><td>L<input type="checkbox" name="lunes[<? echo $user->sucursal1?>]" class="lun"  id="dia[<? echo $user->sucursal1?>]"/></td> </tr>
<tr><td>M<input type="checkbox" name="martes[<? echo $user->sucursal1?>]" class="mar" id="dia[<? echo $user->sucursal1?>]" /></td> </tr>
<tr><td>M<input type="checkbox" name="miercoles[<? echo $user->sucursal1?>]" class="mie" id="dia[<? echo $user->sucursal1?>]" /></td> </tr>
<tr><td>J<input type="checkbox" name="jueves[<? echo $user->sucursal1?>]" class="jue" id="dia[<? echo $user->sucursal1?>]" /></td> </tr>
<tr><td>V<input type="checkbox" name="viernes[<? echo $user->sucursal1?>]" class="vie" id="dia[<? echo $user->sucursal1?>]" /></td> </tr>
<tr><td>S<input type="checkbox" name="sabado[<? echo $user->sucursal1?>]" class="sab" id="dia[<? echo $user->sucursal1?>]" /></td> </tr>
<tr><td>D<input type="checkbox" name="domingo[<? echo $user->sucursal1?>]" class="dom"  id="dia[<? echo $user->sucursal1?>]" /></td></tr>
</table>
        
    <br />
    <br />
    <br />
<table id="<?echo $user->sucursal2 ?>">
<tr><td>L<input type="checkbox" name="lunes[<? echo $user->sucursal2?>]" class="lun"  id="dia[<? echo $user->sucursal2?>]"/></td> </tr>
<tr><td>M<input type="checkbox" name="martes[<? echo $user->sucursal2?>]" class="mar" id="dia[<? echo $user->sucursal2?>]" /></td> </tr>
<tr><td>M<input type="checkbox" name="miercoles[<? echo $user->sucursal2?>]" class="mie" id="dia[<? echo $user->sucursal2?>]" /></td> </tr>
<tr><td>J<input type="checkbox" name="jueves[<? echo $user->sucursal2?>]" class="jue" id="dia[<? echo $user->sucursal2?>]" /></td> </tr>
<tr><td>V<input type="checkbox" name="viernes[<? echo $user->sucursal2?>]" class="vie" id="dia[<? echo $user->sucursal2?>]" /></td> </tr>
<tr><td>S<input type="checkbox" name="sabado[<? echo $user->sucursal2?>]" class="sab" id="dia[<? echo $user->sucursal2?>]" /></td> </tr>
<tr><td>D<input type="checkbox" name="domingo[<? echo $user->sucursal2?>]" class="dom"  id="dia[<? echo $user->sucursal2?>]" /></td></tr>
</table>
    <p onclick="comprobarCheck()"> reconocer</p>
    </body>
    </html>
Eso a mi me funciono. Adaptalo.. cualquier cosa avisame.

Última edición por PercevalCiro; 05/11/2011 a las 17:22
  #7 (permalink)  
Antiguo 06/11/2011, 09:19
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: duda para masters validando checkbox con arrays en php

justamente puede usar tu primer código pero en lugar de document.getElementById("dia[<? echo $user->sucursal; ?>]") , que no te retorna la colección de elementos del formulario, usa document.formulario.elements que te retorna la colección con todos los controles del form
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #8 (permalink)  
Antiguo 06/11/2011, 16:08
 
Fecha de Ingreso: junio-2009
Mensajes: 64
Antigüedad: 14 años, 10 meses
Puntos: 6
Respuesta: duda para masters validando checkbox con arrays en php

Cita:
Iniciado por IsaBelM Ver Mensaje
justamente puede usar tu primer código pero en lugar de document.getElementById("dia[<? echo $user->sucursal; ?>]") , que no te retorna la colección de elementos del formulario, usa document.formulario.elements que te retorna la colección con todos los controles del form
Si, justamente, dependera de que estructura halla utilizado. ciertamente es mas prolijo la forma de acceder que indicas.
  #9 (permalink)  
Antiguo 06/11/2011, 23:29
 
Fecha de Ingreso: abril-2008
Ubicación: Chihuahua Mexico
Mensajes: 166
Antigüedad: 16 años
Puntos: 15
Respuesta: duda para masters validando checkbox con arrays en php

mil gracias chicos.

la verdad es que no e podido checar si funciona o no pero mil gracias tengo otras dudas, pero como le digo a JS que cada que seleccionan una sucursal debe el usuario seleccionar obligatoriamente un dia (L-M-M-J-V-S-D) ....

es que la verdad no logro entenderlo ya que como son checks dinamicos, PercevalCiro la idea que me diste es muy buena solo que veo algunos problemas, el foreach a la consulta se hace antes del codigo HTML antes de las etiquetas head, title etc. etc. y la complicacion aqui es los estandares de programacion de esta compañia son extraños y rigidos y tengo que hacer el la sentencia SQL y while de esta misma justo arriba de donde se va a imprimir en pantalla...


alguna otra idae que me pueda funcionar o de como hacerle??? muchas gracias chicos!
  #10 (permalink)  
Antiguo 07/11/2011, 00:33
 
Fecha de Ingreso: abril-2008
Ubicación: Chihuahua Mexico
Mensajes: 166
Antigüedad: 16 años
Puntos: 15
Respuesta: duda para masters validando checkbox con arrays en php

se me vino a la cabeza una idea

no se podra hacer un condicional algo como esto

if(por cada sucursal seleccionada al menos un dia seleccionado)
return true

nose si se pueda algo asi... que dicen?? :)
  #11 (permalink)  
Antiguo 07/11/2011, 09:53
 
Fecha de Ingreso: junio-2009
Mensajes: 64
Antigüedad: 14 años, 10 meses
Puntos: 6
Respuesta: duda para masters validando checkbox con arrays en php

Cita:
Iniciado por espher Ver Mensaje
se me vino a la cabeza una idea

no se podra hacer un condicional algo como esto

if(por cada sucursal seleccionada al menos un dia seleccionado)
return true

nose si se pueda algo asi... que dicen?? :)
Perdon, honestamente no entendi. Dos cosas en particular:

Cita:
Iniciado por espher Ver Mensaje
...rigidos y tengo que hacer el la sentencia SQL y while de esta misma justo arriba de donde se va a imprimir en pantalla...
Si entiendo bien, cuando retornas el resultado de la consulta, convertido en tabla, tenes que cargar el script de JS, justo arriba de estos?... pues bien, no debería haber problemas. Eso si, deberías agregar dinamicamente el evento al objeto que sea el disparador de la comprobacion.

Y esto...

Cita:
Iniciado por espher Ver Mensaje
if(por cada sucursal seleccionada al menos un dia seleccionado)
return true
Esto no deja de ser igual que lo anteriormente expuesto, la diferencia es que podes romper el bucle antes.

es exactamente como habias indicado vos antes:

Código Javascript:
Ver original
  1. if(comp<1)

Eso si, me parece mas prolijo retornar un true o false y después realizar la acción.

No se me ocurre otra cosa.
  #12 (permalink)  
Antiguo 07/11/2011, 11:11
 
Fecha de Ingreso: abril-2008
Ubicación: Chihuahua Mexico
Mensajes: 166
Antigüedad: 16 años
Puntos: 15
Respuesta: duda para masters validando checkbox con arrays en php

Hola Perce te aclaro un poquito mas

Cita:
Cita:
Iniciado por espher Ver Mensaje
...rigidos y tengo que hacer el la sentencia SQL y while de esta misma justo arriba de donde se va a imprimir en pantalla...


Si entiendo bien, cuando retornas el resultado de la consulta, convertido en tabla, tenes que cargar el script de JS, justo arriba de estos?... pues bien, no debería haber problemas. Eso si, deberías agregar dinamicamente el evento al objeto que sea el disparador de la comprobacion.
como tu dices pero en vez de cargar el script JS justo arriba de donde se imprimira en pantalla se tiene que realizar el scriot PHP para posterior imprimir y todos los JS dentro de <head></head> por eso se me hace dificil.....

los pasos son asi:

1 - js
2 - bucle php y sentencia mysql
3 - impresion en pantalla

volviendo un poco al tema como podre anidar de esta forma una "sucursal" seleccionada con los dias de la semana, obviamente si no se selecciono la sucursal que esos dias no cuenten yo creo que por alli es donde se debe de empezar...

anexo un id autoincrementable en el <tr> ???? para posterior mente llamarlo y ver si esta checked??? o agrego un div dentro del tr (<tr><div><td>)??? para posterior mente llamarlo de JS y ver su estado junto con el de sus dias????

o estoy muy liado?????? xDDDD

gracias por el interes sinceramente gracisa por su ayuda :)
  #13 (permalink)  
Antiguo 07/11/2011, 21:05
 
Fecha de Ingreso: junio-2009
Mensajes: 64
Antigüedad: 14 años, 10 meses
Puntos: 6
Respuesta: duda para masters validando checkbox con arrays en php

Creo honestamente que debes usar Forms... para colocar las tablas adentro y como te recomienda Isabel seleccionarlo de forma mucho mas prolija.

SI hago tiempo intento hacerte un ejemplo.
SAludos.
  #14 (permalink)  
Antiguo 08/11/2011, 06:03
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: duda para masters validando checkbox con arrays en php

no sé si estás muy liado o no. pero en este caso la estructura html, entiéndase como name e id) es tanto o mas importante que el javascript

un pequeño ejemplo que creo que funciona. no lo he probado
Cita:
function fnc(){

for (var x=0, checkboxes = document.frm.elements['dia']; x < checkboxes.length; x++) {
if (checkboxes[x].checked) {

var inicia = false;

for (var i=0; chk = document.frm.elements[checkboxes[x].id+'[]'][i]; i++)

if (chk.checked) {
inicia = chk.checked;
}


if(!inicia) {
alert('seleciona al menos uno de sucursal ' + parseInt(x+1));
return false;
}

}

}

alert('lo has hecho bien');
return true;

}



sucursal <input type="checkbox" name="dia" id="dia1" /><input type="checkbox" name="dia" id="dia2" />
<br />
días sucursal 1<input type="checkbox" name="dia1[]" />
<input type="checkbox" name="dia1[]" />
<br />
días sucuarsal 2<input type="checkbox" name="dia2[]" />
<input type="checkbox" name="dia2[]" />
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #15 (permalink)  
Antiguo 09/11/2011, 23:18
 
Fecha de Ingreso: abril-2008
Ubicación: Chihuahua Mexico
Mensajes: 166
Antigüedad: 16 años
Puntos: 15
Respuesta: duda para masters validando checkbox con arrays en php

pues la verdad no e chekado por falta de tiempo ya que me pidieron otros requerimientos pero en cuanto pueda les comento que paso...


muchas gracias chicos enserio se les agradece de todo corazon por su pasiencia y apoyo, saludos.

Etiquetas: arrays, checkbox, funcion, js, masters, php, validador
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 21:07.