Benanamen had good coverage already. I'm repeating a few of his points I'm sure. For a first project, it is not bad. You are doing some good things including the use of prepared statements, although you neglected to use them for your insert. Be consistent! All SQL DML (insert, update, delete) should use prepared statements, and in most cases so should your select. Always treat user input as suspect.
I posted in your other thread, so I'm repeating myself now----
Why are you using ob_start()? That is an advanced feature that is not warranted here, nor appropriate. Remove ob_start().
Use require_once() not include_once(). Look at what the functions do. Ask yourself this question: Does my script REQUIRE connection.php to work, or would it be ok if it wasn't loaded? It's pretty clear here that you need the script to be loaded for anything to work, so you should require it. I never use include_once, nor should you.
Again repeating myself, remove the closing php tag from connection.php.
Standard indentation would be 4 spaces. You are indenting like 8 spaces --- it's crazy ?
The next thing I'd suggest would be to move all the markup into separate files that you include. This would start you towards templates/views. This is essentially the idea behind "separation of logic and presentation".
Again for a first project, you are doing great. I've seen some "professional" projects where the code wasn't as good. Nice work, and continue to ask for clarifications when you aren't clear about the advice being given.