Si pero como te dije tienes un error en tu tabla, ya lo suponía al ver el código PHP ¿Donde esta la clave única de la tabla?, ¿Donde esta el id auto increment.?
tu tabla
Curso
Nombre
N1
N2
N3
Prom
esa tabla debería de quedar así
id
curso
nombre
n1
n2
n3
fecha_registro
Código SQL:
Ver originalCREATE TABLE IF NOT EXISTS `curso` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`curso` INT(2) NOT NULL,
`nombre` VARCHAR(30) NOT NULL,
`n1` INT(2) NOT NULL,
`n2` INT(2) NOT NULL,
`n3` INT(2) NOT NULL,
`fecha_registro` DATE NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Tienes problemas con el foreach por que no tienes clave primaria en la tabla, ya te lo había dicho, si no tienes clave primaria no se va a ejecutar bien el foreach.
El foreach va actualizar cada registro donde esta la clave primaria
ejemplo
Por ejemplo si tuviera esto, se va a actualizar todos los campos del id 1 y del id 4 no tienes por que colocar 2 foreach con uno sobra, y si colocas 2 estaría mal. Acuérdate que le estas pasando un array al foreach ese es el id, el foreach va a recorrer todo el array según las diferentes claves que le estés pasando.
id | curso | nombre | n1 | n2 | n3
1 | 4 | hola | 15 | 10 | 12
4 | 6 | bye | 20 | 02 | 14
Código ejemplo
Código PHP:
Ver originalforeach($_POST['id'] as $key =>$value) {
$updateSQL = sprintf("UPDATE edicion SET curso=%s, nombre=%s, n1=%s, n2=%s, n3=%s WHERE id=$value", GetSQLValueString($_POST['curso'][$key], "int"),
GetSQLValueString($_POST['nombre'][$key], "text"),
GetSQLValueString($_POST['n1'][$key], "int"),
GetSQLValueString($_POST['n2'][$key], "int"),
GetSQLValueString($_POST['n3'][$key], "int"),
}
}