The DinoBase serves two audiences — visitors who browse and search the collection, and the administrators who keep it accurate. Built by a team of four for a PHP/MySQL course, it runs as a complete Docker stack. I worked across the database and the PHP behind it: the schema, the search and pagination the gallery depends on, and the forms that write records back.
The DinoBase
Tylon SohnleA four-person PHP/MySQL project: a searchable catalogue of dinosaur records, with a public gallery and a protected administration area.
Signing in opens the maintenance side of the catalogue. Administrators manage the same records the public gallery reads, behind hashed passwords and a session, with no public registration path.
A structured form collects the fields the catalogue searches on, plus the image. PHP validates the submission and stores the record before it appears in the gallery.
The schema is normalized around what the catalogue actually contains — dinosaurs, administrators, favourites and profile images — so each record is stored once and read wherever it is needed. Search and filtering run across genus, species, era, size, weight and location, and the gallery paginates the results. Every query that takes user input goes through prepared statements, and the admin forms validate their fields before a record is written.
The public gallery and the administration area read the same data through different paths: one is open, the other sits behind a session and hashed passwords. Docker packages MySQL, PHP and Apache, so the whole application starts locally with a single command.