mattbk / changeblindness

Cloned from https://github.com/rjelierse/changeblindnesstest.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

First column of the database must be a generated UID.

That's exactly what it is (or, it works when you make it as such).

image

I know more. The way it is set up, the phase name needs to be in the field name as well.

  • _host
  • _date
  • _xcoordinate
  • _ycoordinate
  • _responsetime

are used in the code to pass to Twig.

screen shot 2015-10-29 at 6 00 21 pm

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.

I had result_host and result_date swapped in table. Fixed now.
image

Still needs to be done; does NOT need settings.json to be completed first.

Still need to do this first: #2