Tercera vez que te lo digo, ponle un naaaame al select y así cada producto tendrá otro valor
Te lo dejo con un ejemplo
Código PHP:
<?php
$ai=0;
foreach ($products as $product){
<div class="product">
<h5>'.$product->name.'</h5>
<p>'.$product->price.'</p>
<select id="quantity[]" name="'.$product->name.'" class="select-product">
for ($i=0; $i < 21; $i++){ //debo mostrar un valor max de 20 en el select
if ($cantidad[$ai] == $i) {
<option value=". $i ." selected="selected">. $i .</option>
}else{
<option value=". $i .">. $i .</option>
}
}
</select>
</div>
$ai++;
}
Yo le he puesto el nombre del producto como nombre del select porque es la variable que veo, si tienes una variable a mano que tenga el id pues es mas "correcto y ordenado"
EDIT: Un momento, no te sirvió el truco del contador? cada producto deberia tener el valor por defecto que es
primer producto == Primer valor
segundo producto == segundo valor
asi succesivamente, por eso se suma 1 en el foreach cada vez