WordPress HTTP POST form with MySQL relational database support.

I'm new to WordPress. I have some PHP and MySQL experience. My client uses 1and1 hosting and running WordPress software on the hosting site. She wants me to develop a form where users can submit images with a large amount of image metadata. So this form would need a relational database (tell me if there is a better way) that contains several tables, because certain fields like "tags" will have multiple entries. So I'm thinking multiple tables for normalization purposes.

Data will be submitted by several hundreds of people with possible large image files. Some other people will have the ability to query the DB via another form I will create and look for images with a specific tag name, location, image subject, etc.

I know how to design this database and write the php code if I created a non-WordPress plain php site talking to a MySQL DB on the hosting site. However, I'm having issues with how to implement such page/db on WordPress. I looked into contactForm7 and Contact DB plugin and set up a small form. This is when I realized that the form is saved on WordPress in one large unmodifiable single table.

1. Can I implement my conceptual db and form using WordPress? Am I using the right plugins?
2. What's the difference between using WordPress DB vs. MySQL DB on the hosting service?

Please tell me how should I proceed.
Who is Participating?
Jason C. LevineConnect With a Mentor No oneCommented:
1. Can I implement my conceptual db and form using WordPress?

Yes.  First off, remember that WordPress is just php and mysql...so if you can solve the issue in php and mysql, you can do whatever needs doing in WordPress.  When people talk about developing a solution "in WordPress" what they typically mean is that they need a solution that takes advantage of the WordPress framework to automate certain tasks...in your case it would be taxonomies (metadata).  But you can also just use custom templates to get your own code and systems to display in a WordPress site so that the look and feel is consistent across the site and the app.

In this specific instance, I could make an argument that you could do what you want either way since you have the requisite PHP skills. But WordPress provides all the systems you need to be successful with just a plugin or two so that' she solution I will detail below.

2. Am I using the right plugins?

No.  Contact Form 7 is a great, free plugin for simple operations but for you want to do with file uploads and taxonomy creation I would urge you to step up to Gravity Forms or Formidable Pro.  These are best-in-class form plugins for WordPress and while not free, provide a ton more functionality plus support for not a lot of money.  

What I would do here is to use a Custom Post Type and Custom Fields to define every type of taxonomy you will need.  WordPress automatically supports two kinds of taxonomies (categories and tags) but you can add more via custom post types and fields.

Either Gravity or Formidable will create a form that will create a new post on submission and populate the various taxonomies with the form contents.  Both plugins will allow image uploads and you can create thumbnails for uploads using some additional code.  By using custom posts, you automatically hook into the WordPress search, browse, navigation and display functions and you can further extend any or all of those with other plugins as needed.

The other way to do it is to write your own thing and just wrap the code in custom page templates.  There's nothing wrong with this solution and it may be easier for you.

3. What's the difference between using WordPress DB vs. MySQL DB on the hosting service?

It's all mysql.  Not sure what you are asking here.
Dave BaldwinFixer of ProblemsCommented:
Some hosts don't give you access to the database (or even the code!) for their Wordpress installs.
alexmac05Author Commented:

Excellent response, thank you! To clarify my second question: Is there a space limitation of using a WordPress DB versus the regular MySQL db on my hosting server? I have unlimited storage on my hosting site. The reason why I'm asking because when I tried add an image upload to my form using Contact form 7, there was a size limitation for the file upload. Also, how is support for relational database if I use the DB on WordPress, or can I get away in my instance with not using one? I haven't seen a single example or demo of a WP relational DB. I heard the use of relational databases are "going out of style".
Cloud Class® Course: SQL Server Core 2016

This course will introduce you to SQL Server Core 2016, as well as teach you about SSMS, data tools, installation, server configuration, using Management Studio, and writing and executing queries.

Dave BaldwinConnect With a Mentor Fixer of ProblemsCommented:
There is no "WordPress DB".  Wordpress uses MySQL.  Wordpress may however use a different copy of MySQL than the one that you have access to.  That depends on the host.

Relational database are Not going out of style.  That rumor goes around every now and then started by people who have nothing better to do.

And limits on file upload size have nothing to do with the database.  That restriction is set by the hosting in 'php.ini'.
Jason C. LevineConnect With a Mentor No oneCommented:
DaveBaldwin is completely correct on all points.  Most shared hosting restricts uploads to a few megabytes as a security measure.  If you allow unlimited uploads it's very easy to bring a server down with a simple automated script to upload massive files.  The result is a DoS attack.

There are ways around the limit.  You can add a "chunking" upload script that uploads huge files a little bit at a time or you can leverage AWS or another cloud storage service with an upload API and send the file there and bypass the site and server altogether.
Jason C. LevineConnect With a Mentor No oneCommented:
I haven't seen a single example or demo of a WP relational DB.

No idea what you are looking at.  WordPress runs on MySQL and is relational. Just look at how the wp_posts and wp_terms tables interact...

If you are talking about a form plugin creating relational records, then yes...those are few and far between.  I think Formidable is the only one that kinda/sorta does it but it's not creating true parent/child relationships...it fakes it a little bit.

If you are looking to build your own tables, it's all in MySQL and thus relational.
alexmac05Author Commented:
Thank you so much for proving these excellent responses! It helped me so much!
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.