El error sí es lógico, si sabes claro está la razón. pero para que entiendas, la razón es que la variable $_POST tiene valor solamente cuando se envía un formulario por POST. Si tu al visitar la página, no haz enviado una petición y tienes declarado al principio (como en el ejemplo que expones) la variable $_POST[...] te va a dar ese error porque todavía no existe valor alguno en esa variable. Lo que puedes hacer es crear un if que ejecute el código siempre y cuando exista un valor, ejemplo
Código PHP:
Ver original<?php
// todo lo que requiera la base de datos
}
?>
<html>
......
</html>
Ahora entiendes que sí tiene lógica el error