El asunto es que tu quieres insertas muchos registros en una ves.
Antes el error era que tu sobrescribias las variables en continuo, como que utiliabas nombres simples como
name="marca2" etc...
Entonces el primer paso es eso de transformar las variables en array :
name="marca2[]"
Bueno, pues cuando recoges los datos el la action
$_POST['ns2'] es un array que tiene todos los ns2 de los varios registros.
Código PHP:
foreach($_POST['ns2'] as $k=>$v) {
$resul = @mysql_query("UPDATE articulos SET articulo = '".$_POST[articulo2][$k]."', marca = '".$_POST[marca2][$k]."', modelo = '".$_POST[modelo2][$k]."', empresa = '".$_POST[empresa2][$k]."', ubicacion = '".$_POST[ubicacion2][$k]."', sububicacion = '".$_POST[sububicacion2][$k]."', observaciones = '".$_POST[observaciones2][$k]."' WHERE ns = '$v'",$conexion);
}
Asì haces un buque sobre todos los elementos del array. Entonces por cada registro que enviaste coges la clave del array ($k) y el valor corrispondiente de ns2 ($v).
De esta forma haces tantas consultas cuantos son los registros enviados, y todos los datos del mismo registros estan liados gracias a $k, como que yodos apartenecen a la misma clave de su propio array.
Una cosa mas: es buena cosa poner los atributos de los tag html dentro '', por ejemplo:
<form action='file.php' method='post'>
y tambien el index de un array:
$_POST['articulo2'][$k]
porque sin '' son considerados como constantes, luego como que el parser no encuentra una constante asì lo interpreta corectamente como string, pero no es corecto o sea que echa un warning.
Chao!