Para hacer lo que tu dices, se suele usar el patron MVC (Model-View-Controller), el cual separa la vista, de la logica, y del acceso a datos, en cada capa.
Aqui tienes para informarte.
Si lo ves demasiado complejo y no quieres usar MVC, la separación de código y HTML no es algo complicado
Tienes que tener tus archivos "plantilla" o "vista" y por otra parte los archivos "php" que serán los que tienen la lógica, y le pasen los datos a la vista mediante arrays.
Un saludo