id - должен быть уникальным. Нельзя давать нескольким элементам одинаковый id. Отсюда и возникают такие проблемы.
Либо назначайте элементам разные id, либо используйте делегирование - обработчик click вешайте на таблицу, затем через target берете элемент на котором нажали, если это кнопка, определяете родительскую строку, и берете input из этой строки
<table>
...
<tr>
<td><input type='text' value=$row[ZN1] name='ZN1'></td>
<td><input type=button value='Изменить'></td>
</tr>
...
</table>
document.querySelector('table').addEventListener('click', (ev) =>{
const et = ev.target;
if (el.type === 'button') {
const rw = el.closest('tr');
const inp = rw.querySelector ('[type="text"]') // элемент input type=text
const val = inp.value
// далее ajax с этим значением
}
})