Vous pouvez créer des champs de formulaire avec une notation matricielle, par exemple :
<input type="text" name="quantity[productid]">
Vous pouvez donc générer dynamiquement des champs dans votre formulaire comme ceci :
<input type="text" name="quantity[3]">
<input type="text" name="quantity[4]">
<input type="text" name="quantity[2]">
Et puis en PHP, cela deviendra un tableau sur lequel vous pourrez facilement boucler :
foreach ($_POST['quantity'] as $productId => $quantity) {
echo (int) $productId . ':' . (int) $quantity;
//etc.
}