Jump to content

Simple event database; what to use?

divito

I'm looking to make what amounts to an "event database" for a hobby I participate in. This hobby has many different organizations and governing bodies covering various regions around the world and different skill tiers within those, which makes tracking events tedious. Effectively, I'd like to make my own site that acts as a "hub" for these events that I can populate myself, while allowing others to submit new ones or ones that I've missed (the form for the public would probably just send to me in an email, unless I want to go through the effort of adding a "publish" type flag so I have to manually allow it). I'd like to have a calendar view that is populated with these events, and a table view.

The structure would be something like the following:

Date (Start and End) | Organization Name | Event Name | Divisions | Location(s) (Some events use multiple sites) | Description | Event URLs | Contact Information

I'm an older tech enthusiast that used to make a bunch of websites in my youth, starting with Geocities, into using Frontpage, and then coding with Dreamweaver, etc... Most of my experience ended with CSS, PHP, MySQL, and some minor Javascript, and I've used Wordpress many times for certain things more recently as I didn't need anything too custom.

I'm rather picky on how I'd like the output to look once it's on the website, and the Wordpress plugins for such things like events are not exactly to my liking, or cost money (I already pay for web hosting).

So my question to those more experienced, what makes the most sense to develop something simple in terms of a form and database for myself/the public to submit and view? I have been exploring learning some new things to re-integrate myself into web development/applications so I'm perfectly fine if some more modern combination other than PHP/MySQL makes sense to learn and utilize.

Link to comment
Share on other sites

Link to post
Share on other sites

If you want simple you can use SQLLite for the database. It's 1 single file database, it use most modern T-SQL statement and you need 1 single dll for the connection and query. It does have dll for Android, Linux, Windows, MacOS but running the code on a server you are most likely to run it on Windows or Linux. Note that there is some UI manager softwares for SQLLite databases but you can manage everything from the dll too.

 

For the web pages i would stay with PHP. You already know it and just need to get up to date with the new version. Apache server is pretty much install, next. next, next on either Windows or Linux.

 

The other option is ASP.NET (which has many flavor like Razor, Blazor, MVC, WebAPI) but you would need to learn C# which yes it is a good thing but add an extra step/complexity.

Link to comment
Share on other sites

Link to post
Share on other sites

On 8/7/2023 at 5:02 PM, divito said:

The structure would be something like the following:

Date (Start and End) | Organization Name | Event Name | Divisions | Location(s) (Some events use multiple sites) | Description | Event URLs | Contact Information

I'd probably just suggest using MySQL here. It looks like you'll potentially have a lot of related data, or some data where it would make sense to have relationships between sets. I'm also most familiar with MySQL and if you're using Wordpress already it makes sense.

 

By the looks of your structure you have a couple of properties that might break out into multiples:

  • Divisions
  • Locations
  • URLs
  • Organisations

So I'd propose tables like the following:

event
--------------
id              VARCHAR         Generate automatically with a ULID/UUID, prevent enumeration
name            VARCHAR         Event name
date_start      DATETIME
date_end        DATETIME
org_id          VARCHAR         UUID/ULID
description     TEXT


organization
--------------
id              VARCHAR         ULID/UUID
name            VARCHAR


division
--------------
id              VARCHAR
event_id        VARCHAR
name            VARCHAR


location
--------------
id              VARCHAR
event_id        VARCHAR
name            VARCHAR


url
--------------
id              VARCHAR
event_id        VARCHAR
url             VARCHAR

Now you could probably substitute all the IDs for INT AUTO INCREMENT, if you don't care about API enumeration, but this is usually how I go about table design these days. Better to have IDs you can't guess. As for the tables I just extrapolated from your contrived example to what I would think would be 1:many relationships.

 

That leaves a few tables for you to create but managing this in MySQL with queries to fetch the linked data would be quite straightforward. It'd also be very future proof if you expand.

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×