Cita: quiero evitar eso debido a que son 2500 checkboxes.
¿De verdad son tantos o sólo estás exagerando?
¿Quién en el mundo sería capaz de usar un formulario así?
Pues veamos, tampoco es que tengas que verificar uno a uno, si usas un array todo será simple aún así tengas millones de registros.
Una técnica para entender que valores han sido modificados es usar arrays:
Código HTML:
Ver original<input type="hidden" name="foo[bar]" value="original"> <input type="checkbox" name="foo[bar]">
La clave está en el name, que debe ser idéntico para ambos casos, y no puedes usar "foo[]" sin índices pues no existiría relación entre ambos campos.
Ahora, los checkboxes funcionan del siguiente modo: sólo si están marcados se envían, caso contrario se ignoran.
Y todo los input sobreescriben a los input previos con el mismo name.
Dado eso, entonces:
- El campo hidden almacena el valor previo u original
- Si no se activa el checkbox entonces se envía dicho valor previo
- Si se activa el checkbox sobreescribe el campo y enviará el valor modificado (el previo se pierde)