1) No veo que uses a esto:
MAX(cotizaciones.nocotizacion), quizas podrias eliminarlo de la consulta.
2) txtnopedido es un campo unico, es decir, es un valor escalar no un array, por eso no puedes recorrerlo y se ejecuta una sola vez, lo que debes hacer es recorrer uno de los campos que sea array, es decir:
Código PHP:
Ver original$nopedido = $_POST['txtnopedido'];
foreach($_POST['txtnopro'] as $key => $nopro)
{
$cantidad = $_POST['txtcantidad'][$key];
$obs = $_POST['txtobs'][$key];
//...