Foros del Web » Programando para Internet » PHP »

PHP y Javascript

Estas en el tema de PHP y Javascript en el foro de PHP en Foros del Web. Hola a todos. Tengo un pequeño problema. Tengo un formulario que tiene una serie de checkbox con los cuales tengo una opción de marcar o ...
  #1 (permalink)  
Antiguo 31/08/2007, 11:39
 
Fecha de Ingreso: agosto-2007
Mensajes: 9
Antigüedad: 16 años, 8 meses
Puntos: 0
PHP y Javascript

Hola a todos.

Tengo un pequeño problema. Tengo un formulario que tiene una serie de checkbox con los cuales tengo una opción de marcar o desmarcar todos.
El problema es que después los proceso en un PHP. Entonces, si a la variable chekbox la llamo "x", no me funciona en php y si la llamo "x[]" no me funciona el javascript. Como podría combinar las dos técnicas???

Os dejo la parte del código relevante:

HTML:

<h4> Aficiones </h4>

<p>
<input type="checkbox" name="marcatodos" onClick="Marcar_Todos(Form_Solicitudes.aficion,For m_Solicitudes.marcatodos,Form_Solicitudes.desmarca todos);"> Marcar todos |
<input type="checkbox" name="desmarcatodos" onClick="Desmarcar_Todos(Form_Solicitudes.aficion, Form_Solicitudes.marcatodos,Form_Solicitudes.desma rcatodos);"> Desmarcar todos
</p>

<p>
<input type="checkbox" name="aficion[1]" value="1"> Videojuegos <br>
<input type="checkbox" name="aficion[2]" value="2"> Cine y TV <br>
<input type="checkbox" name="aficion[3]" value="3"> Lectura <br>
<input type="checkbox" name="aficion[4]" value="4"> Música <br>
<input type="checkbox" name="aficion[5]" value="5"> Deportes <br>
<input type="checkbox" name="aficion[6]" value="6"> Motor <br>
<input type="checkbox" name="aficion[7]" value="7"> Cocina <br>
<input type="checkbox" name="aficion[8]" value="8"> Informática <br>
<input type="checkbox" name="aficion[9]" value="9"> Pintura <br>
<input type="checkbox" name="aficion[10]" value="10"> Arquitectura <br>
</p>


Javascript:

//Para Marcar todas las aficiones
function Marcar_Todos(aficiones,todos,ninguno)
{
if(todos.checked==true)
{
for(i=0;i<aficiones.length;i++)
{
aficiones[i].checked=true;
}
ninguno.checked=false;
}
}



//Para Desmarcar todas las aficiones
function Desmarcar_Todos(aficiones,todos,ninguno)
{
if(ninguno.checked==true)
{
for(i=0;i<aficiones.length;i++)
{
aficiones[i].checked=false;
}
todos.checked=false;
}



PHP:

$j=0;
for($i=0;$i<sizeof($_POST['aficion']);$i++)
{
switch($_POST['aficion'][$i])
{
case 1: $aficiones[$j]='videojuegos';
break;
case 2: $aficiones[$j]='cine y tv';
break;
case 3: $aficiones[$j]='lectura';
break;
case 4: $aficiones[$j]='musica';
break;
case 5: $aficiones[$j]='deportes';
break;
case 6: $aficiones[$j]='motor';
break;
case 7: $aficiones[$j]='cocina';
break;
case 8: $aficiones[$j]='informatica';
break;
case 9: $aficiones[$j]='pintura';
break;
case 10: $aficiones[$j]='arquitectura';
break;
}
$j++;
}

El caso es que por separado funcionan perfectamente, pero conjuntas no quieren estar.

Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 31/08/2007, 12:36
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: PHP y Javascript

Cuando trabajas con php si o si tenes que ponerle un []. Desde javascript no entiendo cual es tu problema, pero podrías hacer una función que haga todo:
Código PHP:
function marcar(nameCheckaction){
// Action: 0=Deseleccionar todos 1=Seleccionar todos -1=Invertir seleccion
    
var document.formulario
    
for (var i=0i<f.lengthi++){
        var 
obj f.elements[i]
        var 
name obj.name
        
if (name==nameCheck){
            
obj.checked = ((action==1)? true : ((action==0)? false : !obj.checked) );
        }
    }

Otra es, que lo que habitualmente haces con f.nombre.value lo hagas con f["nombre[]"].value, donde f es document.nombreFormulario.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
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 03:38.