Ad Hoc Query tool for SQL

With an SQL Query, there are certain elements (such as which tables are joined to which other tables, and on which fields) which are naturally fixed, and other elements (such as which columns are wanted on the output, and which rows are to be chosen) which may vary from one query to another - especially in an application where a database is being used to store large amounts of data gathered for statistical analysis.

This demonstration program, written for training purposed by Graham Ellis of Well House Consultants, allows a standard query to be embedded into a configuration file that can't be altered by the user, and then allows the user to select which rows and columns are required on the report. The configuration file also allows the specification of what inputs the user has in making selections - columns can be turned on or off by default, and the criteria for row selection can also be limited.

If you want to try out this demo, you may do so; we've loaded it onto this website at /adhoc/adhoc_sql_query_engine.php and it's got a login name of "demo" with a password of "xxx111".. If you would like to see the source code of all the files, there are links to them from the module description
System Overview This demonstration is based on a 4 layer model, keeping the main application, web helper routines, business logic and HTML templates each in its own file. The top layer is the file adhoc_sql_query_engine.php and you'll find that it

1. Establishes / picks up the current session
2. Checks inputs made on the form just enters
3. Decides which is the next form
4. Prepares for the next form
5. Completes and sends out the next template

All pages in the system are numbered - and that number is tracked in the variable $current. A simple run of the system would be:
Page 1 - Login
Page 10 - Select a default or tuned query
Page 11 - Select the ROWS you want
Page 12 - Select the COLUMNS you want
Page 20 - Display results
Page 199 - Logout

You'll go straight from page 10 to page 20 if you select the default query, and you're able to jump back from page 20 to page 10 if you want to run a series of queries without logging in many times over.
If this demonstration was extended, logins would be validated against a database (and not just hard coded) and perhaps there would be a "lost password" system too.
Help page 1 - Ad Hoc query system
Well House Consultants, 2019