Envío de arrays desde un formulario, por ajax

En muchas ocasiones, necesitamos guardar varios registros a la vez. Para eso es necesario enviar los valores en forma de array y recorrer esos arrays en php.

HTML
Consideramos que queremos editar varios precios de productos a la vez, teniendo los campos con las id del producto y con los precios. 

<input type="text" name="id[]" value="1">
<input type="text" name="id[]" value="2">
<input type="text" name="id[]" value="3">

<input type="text" name="pvp[]" value="12">
<input type="text" name="pvp[]" value="8">
<input type="text" name="pvp[]" value="77">
SCRIPT
Con el siguiente script, enviaremos los campos con sus valores separados por coma:

	$('#guardar').click(function(e){		
		var id = $("input[name='id[]']").map(function(){return $(this).val();}).get();
		var pvp = $("input[name='pvp[]']").map(function(){return $(this).val();}).get();
		$.post("ajax.php", {
			"id":""+id+"",
			"pvp":""+pvp+"",
		}, function(data) {
			if(data.res==1) {

			}
		},'json');
		return false;
	});
AJAX
Recibiremos las cadenas separadas por comas y las convertimos en arrays, para poderlos recorrer con la función foreach:

$pvp=$_POST["pvp"];
$id=$_POST["id"];

$id = explode(',', $id);
$pvp = explode(',', $pvp);

	foreach ($id as $key => $valor) {

		$con->consulta("UPDATE productos SET pvp='".f($pvp[$key])."' WHERE id=".$valor);
	}

Con esto, conseguiremos guardar todos los valores al mismo tiempo.
Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-ley 13/2012. Si continúa navegando consideramos que acepta el uso de cookies.
OK | Más información