Error en evento modificacion de multilínea

Hola, detecté un comportamiento extraño en el evento modificación de un formulario multilínea. Tengo un multilínea con los elementos de la figura 1 y en ejecución la pantalla que veo es la de la figura 2.
El código que extiende al CI es el siguiente:


class ci_cargar_asistencia extends toba_ci
{
	function evt__asistencias__modificacion($datos)
	{
		var_dump($datos);
	}
}

Tildando toda la primer columna (clase 1) y apretando modificación, este es resultado de var_dump($datos):


array (
  0 => 
  array (
    0 => 
    array (
      'id_persona' => 2,
      'persona' => 'Alfonso',
      'clase_1' => '1',
      'clase_2' => '0',
      'clase_3' => '0',
      'clase_4' => '0',
      'clase_5' => '0',
      'clase_6' => '0',
      'clase_7' => '0',
      'clase_8' => '0',
      'clase_9' => '0',
      'clase_10' => '0',
      'clase_11' => '1',
      'x_dbr_clave' => 0,
    ),
    1 => 
    array (
      'id_persona' => 5,
      'persona' => 'Edgardo',
      'clase_1' => '1',
      'clase_2' => '0',
      'clase_3' => '0',
      'clase_4' => '0',
      'clase_5' => '0',
      'clase_6' => '0',
      'clase_7' => '0',
      'clase_8' => '0',
      'clase_9' => '0',
      'clase_10' => '0',
      'clase_11' => '1',
      'x_dbr_clave' => 1,
    ),
    2 => 
    array (
      'id_persona' => 12,
      'persona' => 'Fidel',
      'clase_1' => '1',
      'clase_2' => '0',
      'clase_3' => '0',
      'clase_4' => '0',
      'clase_5' => '0',
      'clase_6' => '0',
      'clase_7' => '0',
      'clase_8' => '0',
      'clase_9' => '0',
      'clase_10' => '0',
      'clase_11' => '1',
      'x_dbr_clave' => 2,
    ),
    3 => 
    array (
      'id_persona' => 8,
      'persona' => 'Héctor',
      'clase_1' => '1',
      'clase_2' => '0',
      'clase_3' => '0',
      'clase_4' => '0',
      'clase_5' => '0',
      'clase_6' => '0',
      'clase_7' => '0',
      'clase_8' => '0',
      'clase_9' => '0',
      'clase_10' => '0',
      'clase_11' => '0',
      'x_dbr_clave' => 3,
    ),
    4 => 
    array (
      'id_persona' => 9,
      'persona' => 'Hugo',
      'clase_1' => '1',
      'clase_2' => '0',
      'clase_3' => '0',
      'clase_4' => '0',
      'clase_5' => '0',
      'clase_6' => '0',
      'clase_7' => '0',
      'clase_8' => '0',
      'clase_9' => '0',
      'clase_10' => '0',
      'clase_11' => '0',
      'x_dbr_clave' => 4,
    ),
    5 => 
    array (
      'id_persona' => 6,
      'persona' => 'Jorge',
      'clase_1' => '1',
      'clase_2' => '0',
      'clase_3' => '0',
      'clase_4' => '0',
      'clase_5' => '0',
      'clase_6' => '0',
      'clase_7' => '0',
      'clase_8' => '0',
      'clase_9' => '0',
      'clase_10' => '0',
      'clase_11' => '0',
      'x_dbr_clave' => 5,
    ),
    6 => 
    array (
      'id_persona' => 10,
      'persona' => 'José',
      'clase_1' => '1',
      'clase_2' => '0',
      'clase_3' => '0',
      'clase_4' => '0',
      'clase_5' => '0',
      'clase_6' => '0',
      'clase_7' => '0',
      'clase_8' => '0',
      'clase_9' => '0',
      'clase_10' => '0',
      'clase_11' => '0',
      'x_dbr_clave' => 6,
    ),
    7 => 
    array (
      'id_persona' => 4,
      'persona' => 'Leandro',
      'clase_1' => '1',
      'clase_2' => '0',
      'clase_3' => '0',
      'clase_4' => '0',
      'clase_5' => '0',
      'clase_6' => '0',
      'clase_7' => '0',
      'clase_8' => '0',
      'clase_9' => '0',
      'clase_10' => '0',
      'clase_11' => '0',
      'x_dbr_clave' => 7,
    ),
    8 => 
    array (
      'id_persona' => 13,
      'persona' => 'Magdalena',
      'clase_1' => '1',
      'clase_2' => '0',
      'clase_3' => '0',
      'clase_4' => '0',
      'clase_5' => '0',
      'clase_6' => '0',
      'clase_7' => '0',
      'clase_8' => '0',
      'clase_9' => '0',
      'clase_10' => '0',
      'clase_11' => '0',
      'x_dbr_clave' => 8,
    ),
    9 => 
    array (
      'id_persona' => 1,
      'persona' => 'Mariano',
      'clase_1' => '1',
      'clase_2' => '0',
      'clase_3' => '0',
      'clase_4' => '0',
      'clase_5' => '0',
      'clase_6' => '0',
      'clase_7' => '0',
      'clase_8' => '0',
      'clase_9' => '0',
      'clase_10' => '0',
      'clase_11' => '0',
      'x_dbr_clave' => 9,
    ),
    10 => 
    array (
      'id_persona' => 11,
      'persona' => 'Martín',
      'clase_1' => '1',
      'clase_2' => '0',
      'clase_3' => '0',
      'clase_4' => '0',
      'clase_5' => '0',
      'clase_6' => '0',
      'clase_7' => '0',
      'clase_8' => '0',
      'clase_9' => '0',
      'clase_10' => '0',
      'clase_11' => '0',
      'x_dbr_clave' => 10,
    ),
    11 => 
    array (
      'id_persona' => 7,
      'persona' => 'Sandra',
      'clase_1' => '1',
      'clase_2' => '0',
      'clase_3' => '0',
      'clase_4' => '0',
      'clase_5' => '0',
      'clase_6' => '0',
      'clase_7' => '0',
      'clase_8' => '0',
      'clase_9' => '0',
      'clase_10' => '0',
      'clase_11' => '0',
      'x_dbr_clave' => 11,
    ),
    12 => 
    array (
      'id_persona' => 3,
      'persona' => 'Santiago',
      'clase_1' => '1',
      'clase_2' => '0',
      'clase_3' => '0',
      'clase_4' => '0',
      'clase_5' => '0',
      'clase_6' => '0',
      'clase_7' => '0',
      'clase_8' => '0',
      'clase_9' => '0',
      'clase_10' => '0',
      'clase_11' => '0',
      'x_dbr_clave' => 12,
    ),
  ),
)

Como se ve, aparece un “1” en clase_11 que no debería aparecer para id_persona=2,5 y 12. Es decir para los primeros tres.
Pareciera haber algún problema con los índices a la hora de pasar los valores de los efs a la variable $datos del evento modificación, pero no encuentro dónde se hace esto como para revisar el tema… Aguna idea? Estoy usando Toba 1.4.8

Gracias!


Hola Mariano,

voy a mirar esto ya que parece bastante sospechoso… si tenes algun dato mas que me puedas aportar… bienvenido es.

Saludos

Hola Richard, gracias por revisar el tema. Te puedo agregar que estuve haciendo unas pruebas y llegué a la conclusión que la cantidad de “1” erroneos es igual a la cantidad de items del multilínea que sobrepasan los 10. Para el caso de las figuras que adjunté antes son 3 porque son 13 items, si hacés un multilínea de 14 items obtenés 4 “1” erroneos, etc.
Por esto preguntaba dónde está la función que pasa los parámetros al evento modificación porque posiblemente ahí esté pasando algo con los índices…

Hola Mariano,

efectivamente se trataba de un bug, la conjuncion se daba al terminar los ids de los efs en numero y tener suficientes filas el formulario_ml como para poder chocar en los datos enviados por el POST… lo que pasaba por ej:

id_ef: fila: se recupera:
clase_1 10 clase_110
clase_11 0 clase_110
clase_12 0 clase_120
clase_1 20 clase_120

Entonces al tildar varios checkbox existia la posibilidad de que al leer de manera sistematica los efs se produjera el entrecruzamiento de los valores.
Hasta ahora no habia pasado por 2 motivos… los ids no terminaban en numeros y cuando asi era no hubo suficiente cantidad de filas para que se mezclaran los datos… por suerte a vos si te paso :D.
Subi el fix a la rama 1.5 por si queres actualizarte.

Saludos