Por lo último que dices, la actualización en la base de datos solo debe realizarse en un registro (el de la fila afectada en el formulario), por lo que la labor será más sencilla.
Para hacer las cosas más sencillas, te sugiero tener agrupado a cada bloque de elementos de entrada (los que estén relacionados a un mismo registro en la base de datos). Por ejemplo:
Código PHP:
Ver original<form id="ejemplo">
<?php
?>
<section>
<input type="hidden" name="id[]" value="<?php echo $row['id'] ?>" />
<label>Dato 1:</label>
<input type="number" name="dato1[]" value="<?php echo $row['dato1'] ?>" />
<label>Dato 2:</label>
<input type="text" name="dato2[]" value="<?php echo $row['dato2'] ?>" />
</section>
<?php
}
?>
</form>
El resultado de lo anterior será un conjunto de secciones en donde habrá dos elementos de entrada cada uno con un valor cargado desde la base de datos, además de un elemento oculto con el id de dicho registro.
Teniendo esto, hay que ejecutar las peticiones asíncronas (AJAX) cuando ocurra el evento
change
en el formulario:
Código Javascript
:
Ver original$(document).ready(function(){
$("#ejemplo").on("change", "input", function(){
var seccion = $(this).parent(),
id = seccion.find("[name^=id]").val(),
dato1 = seccion.find("[name^=dato1]").val(),
dato2 = seccion.find("[name^=dato2]").val();
$.ajax({
url: "destino.php",
type: "POST",
data: {
id: id,
dato1: dato1,
dato2: dato2,
}
}).done(function(response){
console.log(response);
}).fail(function(errorMsg){
console.log(errorMsg);
});
});
});
De esta manera, al ocurrir un cambio dentro del formulario (en cualquiera de los elementos que contenga), se delegará el evento al elemento
<input>
en el cual se haya producido. Enseguida, tomamos al elemento padre del
<input>
(la sección) y, dentro de este, buscamos a los elementos cuyos nombres empiecen por, en este caso, "dato1" y "dato2" y tomamos sus valores. Finalmente, ejecutamos la petición asíncrona (AJAX), enviando los respectivos valores.
Ahora, en el archivo PHP, solo tienes que recibirlos y colocarlos en la consulta SQL para ejecutarla:
Código PHP:
Ver original$consulta = "UPDATE tabla SET dato1 = '$dato1', dato2 = '$dato2' WHERE id = $id";