In realtà è proprio così che devi fare. Di solito io preferisco mettere tutto il codice php prima e lasciare "in mezzo" all'html solo gli echo e cicli/if
Se invece vuoi separare la logica di busiiness (codice php) dalla presentazione (html) puoi usare uno tra i tanti template engine, come twig o smartyCodice PHP:
<?php
...tutto il codice php, come le query
$titolo = ....;
?>
<html>
<head>
<title><?php echo $titolo ?></title>
</head>
<body>
</body>
</html>