Código PHP:
Ver original$sql="update cotizaciones set idproducto='".$nopro."', cantidad='.$cantidad.',
observaciones='".$obs."' where noproyecto='".$noproyecto."'";
¿Por qué estás haciendo un UPDATE sobre el campo "idproducto"?
¿Has tenido en cuenta que al poner en el WHERE como única condición que corresponda a un determinado "noproyecto", si en "cotizaciones" hay más de un producto asignado al mismo proyecto, se escribirá ese valor en todos ellos?
Para que un UPDATE afecte un único registro, la condición del WHERE debe poder ser tal que sólo pueda devolver un único registro para la acción, a menos que quieras realziar un up`date masivo de N registros.
Veamos bien: Si esto devuelve más de un registro, todos esos registros serán afectados:
Código PHP:
Ver original$sql="SELECT *FROM cotizaciones WHERE noproyecto='".$noproyecto."'";