Create install/setup script for database
mattbk opened this issue · comments
From @mattbk on October 29, 2015 3:10
Missing from the project from which this was forked. Needs to create a table and some fields to hold results.
- How are individual test-takers identified?
- by IP
Copied from original issue: mattbk/changeblindnesstest#4
Current db results table is named vcd_results
(index.php
line 79).
Based on this section, it looks like each respondent is recorded as a single row (ID by IP address REMOTE_ADDR
), with three columns per phase. These three columns record the xcoordinate, ycoordinate, and response time of the respondent.
Columns referenced now:
result_host
result_date
Option 1:
Continue with this schema, and create a table in the database for each study (group of phases/scenes) with fields based on settings.json
. This format is probably easier for RAs to analyze unless it is rewritten before download. This also means that the number of columns has to be hardcoded into index.php
unless this section is changed.
Option 2:
Rebuild the schema as EVA so that a study can be modified by changing settings.json
and without needing to run a db install script.
Fatal error: Call to a member function bind_param() on a non-object in /home/mattbkco/public_html/_projects/change/index.php on line 80
http://php.net/manual/en/mysqli-stmt.bind-param.php
I think this is because the table and columns don't exist.
That's better, now we get Could not execute query
.
Got it to work in https://github.com/mattbk/changeblindnesstest/commit/839e7fe17f1d6b706a7b8b0015b3e95a55409257 (added the mysql error to die()
), but phase names are still hardcoded.
First column of the database must be a generated UID.
Adding all of this to an install script would probably be easier than going an EVA route right now.
Then if you run another study in the future, you specify a different table name and can use the same database. Would be best to install in a different folder with a different settings.json
, though.
Should work for now, except for all the hardcoded phase names!
Hardcoded phase/scene names are only a problem in the part in index.php where they are written to db.
Since $_SESSION['results'] is a 2d array, can I use a nested foreach to build the insert query?
$_SESSION['results'['scene1'] is not built right. Should be $_SESSION['results'['phase1']. Scene1 is a value, not a key. Hmm.