Foros del Web » Programando para Internet » Javascript »

checkboxes + php + javascript

Estas en el tema de checkboxes + php + javascript en el foro de Javascript en Foros del Web. Veamos tengo el sigiente codigo en javascript : Código HTML: <script language= "javascript" > function todos(form) { for (i = 0; i < form.check.length; i++) ...
  #1 (permalink)  
Antiguo 09/08/2005, 17:00
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 18 años, 10 meses
Puntos: 7
checkboxes + php + javascript

Veamos tengo el sigiente codigo en javascript:
Código HTML:
<script language="javascript">
	function todos(form)
	{
		for (i = 0; i < form.check.length; i++)
		form.check[i].checked = true;
		form.desmarcatodos.checked = false;
	}
	
	function ninguno(form)
	{
		for (i = 0; i < form.check.length; i++)
		form.check[i].checked = false;
		form.marcatodos.checked = false;
	}
</script> 
en la misma pagina un poco mas abajo se abre un textbox para poner el tema y un textarea para poner el mail

abajo aparece una lista de todos los usuarios, con el siguiente codigo:
Código PHP:
<?
//Sentencia SQL
    
$ssql "SELECT * FROM clientes order by Apellido1";

//Ejecuto la sentencia
    
$result mysql_query($ssql,$conn);

//Mostramos los registros
    
while ($row=mysql_fetch_array($result))
    {
      if (
$row!=0){
?>
            <tr class="plaindesc" style="width:20">
            <tr class="Tfilas2" style="width:20">
              <?
                
if($row['Mail']=="" ){
            
?>
              <td height="20" align="center" bgcolor="#FFFFFF" class="Tfilas2"> - </td>
              <?
                
}else{
            
?>
              <td height="20" align="center" bgcolor="#FFFFFF" class="Tfilas2"><input type="checkbox" name="check" value="<? echo $row ['Mail'];?>">
              </td>
              <?
                
};
            
?>
              <td align="center" class="Tfilas2"><? echo $row['Nombre'];?> </td>
              <td align="center" class="Tfilas2" ><? echo $row['Mail'];?></td>
              <td align="center" class="Tfilas2">&nbsp;</td>
            </tr>
            <?
            
};
        };
Algunos Usuarios tienen Mail y otros no. Despues coloco los checkboxes siguientes:
Código HTML:
<td width="45%"><div align="left"><input type="checkbox" name="marcatodos" onClick="todos(this.form)">Marcar todos </div></td>
              <td width="55%"><div align="left"><input type="checkbox" name="desmarcatodos" onClick="ninguno(this.form)">Desmarcar todos</div></td> 
Y en la pagina que recoge los datos pongo:
Código PHP:
foreach($check as $dirEmail

    
$destinatario.= $dirEmail.", ";
 
}; 

Pues bien el problema es el siguiente, tal como estan los chekboxes, me los selecciona y deselecciona todos, pero al llegar a la pagina que recoge los datos me da el error siguiente:
Código:
Warning: Invalid argument supplied for foreach() in c:\Inetpub\wwwroot\extranet\admin\enviarMail.php on line 12
que corresponde con el inicio del foreach.
Si a los checkboxes los llamo "check[]" en lugar de "check" entonces en la pagina receptora me los recoge, pero los checkboxes de marcar y desmarcar todos no van.


¿alguien podria ayudarme? lo agradeceria un monton este dichoso codigo me esta volviendo looooooooooooooooocooooooooooooooo de atar


Gracias.
  #2 (permalink)  
Antiguo 10/08/2005, 01:40
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por Bytevamp
Si a los checkboxes los llamo "check[]" en lugar de "check" entonces en la pagina receptora me los recoge, pero los checkboxes de marcar y desmarcar todos no van.
Para aplicar foreach() necesitas enviar una matriz, esto es, llamar a tus checkboxes como "check[]", entonces lo que hay que modificar es la función JavaScript...

Esperemos en aquel foro te puedan ayudar a ello... un saludo!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 10/08/2005, 01:59
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61

Podrías cambiar esto:
Código PHP:
<script language="javascript">
    function 
todos(form)
    {
        for (
0form.check.lengthi++)
        
form.check[i].checked true;
        
form.desmarcatodos.checked false;
    }
    
    function 
ninguno(form)
    {
        for (
0form.check.lengthi++)
        
form.check[i].checked false;
        
form.marcatodos.checked false;
    }
</script> 
Por:
Código PHP:
<script language="javascript">
    function 
todos(form,marcar)
    {
        for (
0form.elements.lengthi++)
        
        if(
form.elements[i].type="checkbox"){
            
form.elements[i].checked marcar;
    }
    
</script> 
Y para marcar y desmarcar todos pones:
<input type="checkbox" onclick="todos(this.form,this.checked)" name="pepe"> Marcar Todos

de forma que si está marcado se marcan todos y si está desmarcado se desmarcan todos.
Espero que te sirva.
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #4 (permalink)  
Antiguo 10/08/2005, 02:46
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 18 años, 10 meses
Puntos: 7
Cita:
Iniciado por KarlanKas

Podrías cambiar esto:
Código PHP:
<script language="javascript">
    function 
todos(form)
    {
        for (
0form.check.lengthi++)
        
form.check[i].checked true;
        
form.desmarcatodos.checked false;
    }
    
    function 
ninguno(form)
    {
        for (
0form.check.lengthi++)
        
form.check[i].checked false;
        
form.marcatodos.checked false;
    }
</script> 
Por:
Código PHP:
<script language="javascript">
    function 
todos(form,marcar)
    {
        for (
0form.elements.lengthi++)
        
        if(
form.elements[i].type="checkbox"){
            
form.elements[i].checked marcar;
    }
    
</script> 
Y para marcar y desmarcar todos pones:
<input type="checkbox" onclick="todos(this.form,this.checked)" name="pepe"> Marcar Todos

de forma que si está marcado se marcan todos y si está desmarcado se desmarcan todos.
Espero que te sirva.

Eso lo habia probado, pero el problema es que necesito que se envie a la otra pagina una matriz con los Mails de los marcados, y de esta forma no los envia por no ser matriz.
A no ser que se puedan recoger de otra forma, estoy abierto a todo tipo de ayudas.

No se si me explique bien. Si alguien puede echarme un cabo, de todos modos gracias a todos.
  #5 (permalink)  
Antiguo 10/08/2005, 02:49
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Te ruego que lo pruebes. Mantén el nombre que quieras en los checkbox. No va a afectar en absoluto al resultado.
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #6 (permalink)  
Antiguo 10/08/2005, 03:25
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 18 años, 10 meses
Puntos: 7
Cita:
Iniciado por KarlanKas
Te ruego que lo pruebes. Mantén el nombre que quieras en los checkbox. No va a afectar en absoluto al resultado.
O yo soy nulo o no entiendo que pasa, cambie el JavaScript, asi como los checkboxes de seleccionar y deseleccionar por el que me dijiste, y no marca los checkboxes.
  #7 (permalink)  
Antiguo 10/08/2005, 05:07
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 18 años, 10 meses
Puntos: 7
KarlanKas, garcias por tu ayuda, le hice unas pequeñas modificaciones y me va perfectamente, te debo la vida, y a jam1138 tambien, ya que me has explicado lo de las matrices.
Me encanta que haya gente como vosotros, que ayudan a los demas sin pedir nada a cambio, en todo lo que pueda tambien echare una mano.


Gracias a todos.
  #8 (permalink)  
Antiguo 10/08/2005, 05:20
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
De nada hombre! Perdona que no te contestara antes, estoy un poco liadillo en el trabajo.

Me alegra mucho de que seas de los que estudian las soluciones propuestas y no de los que sólo copian y pegan. Satisface mucho, creeme, el ver que lo que hago ayuda para saber y no solo para que funcione algo.

Por cierto... son diez mil...

Un saludo!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #9 (permalink)  
Antiguo 06/04/2008, 03:42
cao
 
Fecha de Ingreso: septiembre-2003
Ubicación: Monterrey
Mensajes: 36
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: checkboxes + php + javascript

Hay un leve error que se visualiza en Firefox ya que convierte todos los inputs del formulario en checkboxs ignorando sus propiedades (ej: los submits).

Solo habia que corregir el type="checkbox" por type=="checkbox":

Código:
<script language="javascript">
    function todos(form,marcar)
    {
        for (i = 0; i < form.elements.length; i++)
        
        if(form.elements[i].type=="checkbox"){
            form.elements[i].checked = marcar;
    }
    
</script>
Saludos a todos!! y Gracias por tu aporte, me ayudo el codigo.
__________________
C A O

Última edición por cao; 06/04/2008 a las 03:48 Razón: Mal formateo de codigo
  #10 (permalink)  
Antiguo 06/04/2008, 05:20
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: checkboxes + php + javascript

Hola:

No revivas temas tan antiguos aunque se trate de algo que te interese saber... los atributos de formularios puedes crearlos o modificarlos con setAttribute o con el atributo como cadena entre corchetes.

Por cierto, voy a cerrar el tema.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 04:17.