¡¡¡Gracias Josemi!!!, ya funciona!!!!!, la clave me la diste en el primer mensaje, pq era la primera vez q usaba el ob_start() y yo interpreté q con el include cogía el código generado, no q lo ejecutaba de nuevo, así que claro, la varible $obra la perdía en el último paso, necesitaba propagarla con un hidden como bien has dicho.
Lo dicho, muchísisisiismas gracias, que llevo toda la mañana con esta dichosa historia
Chao!!!!