I've looked over the manual, and I'm having some difficulty really getting the "array" and "foreach" stuff - perhaps partly because I'm trying to relate it directly to what I'm doing here, and the interaction with the database (which is my next step - so far I've been just trying to go straight from form to output, so that I could make sure I can get the calculations and chart creation right. The next step will be having the data get put into a database along the way).
I've done a little playing around, so I see that this:
Code: Select all
$_POST['answer_list'] = array();
$_POST['answer_list'][0][0] = 1;
$_POST['answer_list'][0][1] = 2;
$_POST['answer_list'][0][2] = 1;
$_POST['answer_list'][1][0] = 2;
$_POST['answer_list'][1][1] = 2;
$_POST['answer_list'][1][2] = 1;
foreach ($_POST['answer_list'] as $answers) {
foreach ($answers as $answer) {
echo $answer.'<br />';
}
}
Will produce a straight list of the values for answer_list -- looping through all the $_POST['answer_list'][0][] then the $_POST['answer_list'][1][]
What I haven't been able to figure out is how to get it to loop through the the second [] first - i.e., how to get it to loop through to produce a list in this order:
$_POST['answer_list'][0][0]
$_POST['answer_list'][1][0]
$_POST['answer_list'][0][1]
$_POST['answer_list'][1][1]
$_POST['answer_list'][0][2]
$_POST['answer_list'][1][2]
Which would then allow me to compare $_POST['answer_list'][][1] values by putting in a counter like
Code: Select all
if ($_POST['answer_list'][x][1] == $_POST['answer_list'][y][1]) {
$scs = $scs + 1;
}
I do have it working by using the $i=1; $i<=5; $i++ approach, but the sense I get is that using the foreach approach would be "cleaner" code (I don't know whether it would be more efficient).
Then there's the whole database issue (perhaps I should be starting a new topic in that forum??)
I'm sure the fact that my database knowledge is also limited will also be playing into my difficulties with the array concept.
For example, when I think of "array" when dealing with a data from the database, I think of multiple rows of a single field in the database table. The way I had originally conceptualized the database part of this project was a single table for all the response data, with a field for each variable in the form and a row/record representing a respondent's full submission. (Easy to design, and easy to get the data out to put into the existing excel spreadsheet that does more detailed & group level data analysis - all very 1 to 1.)
So, with a form that has fields like this:
Code: Select all
<p>Topic 1:<br /><input type="text" name="topic1" /><br />
L-Mode Rating: <select name="l1">
<option value="0" label="0" />0</option>
<option value="1" label="1" />1</option>
<option value="2" label="2" />2</option>
<option value="3" label="3" />3</option>
<option value="4" label="4" />4</option>
<option value="5" label="5" />5</option>
<option value="na" selected="selected" label="-" />-</option>
<option value="6" label="6" />6</option>
<option value="7" label="7" />7</option>
<option value="8" label="8" />8</option>
<option value="9" label="9" />9</option>
<option value="10" label="10" />10</option>
</select></p>
<p><input type="radio" name="ab1" value="1"/>A - B<input type="radio" name="ab1" value="2"/></p>
<p><input type="radio" name="cd1" value="1"/>C - D<input type="radio" name="cd1" value="2"/></p>
<p><input type="radio" name="ae1" value="1"/>A - E<input type="radio" name="ae1" value="2"/></p>
<p><input type="radio" name="bd1" value="1"/>B - D<input type="radio" name="bd1" value="2"/></p>
<p><input type="radio" name="ec1" value="1"/>E - C<input type="radio" name="ec1" value="2"/></p>
<p><input type="radio" name="da1" value="1"/>D - A<input type="radio" name="da1" value="2"/></p>
<p><input type="radio" name="eb1" value="1"/>E - B<input type="radio" name="eb1" value="2"/></p>
<p><input type="radio" name="ca1" value="1"/>C - A<input type="radio" name="ca1" value="2"/></p>
<p><input type="radio" name="de1" value="1"/>D - E<input type="radio" name="de1" value="2"/></p>
<p><input type="radio" name="bc1" value="1"/>B - C<input type="radio" name="bc1" value="2"/></p>
</td>
<td class="input">
<p>Topic 2:<br /><input type="text" name="topic2" /><br />
L-Mode Rating: <select name="l2">
<option value="0" label="0" />0</option>
<option value="1" label="1" />1</option>
<option value="2" label="2" />2</option>
<option value="3" label="3" />3</option>
<option value="4" label="4" />4</option>
<option value="5" label="5" />5</option>
<option value="na" selected="selected" label="-" />-</option>
<option value="6" label="6" />6</option>
<option value="7" label="7" />7</option>
<option value="8" label="8" />8</option>
<option value="9" label="9" />9</option>
<option value="10" label="10" />10</option>
</select></p>
<p><input type="radio" name="ab2" value="1"/>A - B<input type="radio" name="ab2" value="2"/></p>
<p><input type="radio" name="cd2" value="1"/>C - D<input type="radio" name="cd2" value="2"/></p>
<p><input type="radio" name="ae2" value="1"/>A - E<input type="radio" name="ae2" value="2"/></p>
<p><input type="radio" name="bd2" value="1"/>B - D<input type="radio" name="bd2" value="2"/></p>
<p><input type="radio" name="ec2" value="1"/>E - C<input type="radio" name="ec2" value="2"/></p>
<p><input type="radio" name="da2" value="1"/>D - A<input type="radio" name="da2" value="2"/></p>
<p><input type="radio" name="eb2" value="1"/>E - B<input type="radio" name="eb2" value="2"/></p>
<p><input type="radio" name="ca2" value="1"/>C - A<input type="radio" name="ca2" value="2"/></p>
<p><input type="radio" name="de2" value="1"/>D - E<input type="radio" name="de2" value="2"/></p>
<p><input type="radio" name="bc2" value="1"/>B - C<input type="radio" name="bc2" value="2"/></p>
</td>
...
I have a single database table with about 73 variables - one per input field in the table (that's 13 fields per topic, 5 topics, plus a few extras for name, userid, etc.).
Now, when I think of "array" in that context, I think of getting all values for $ae2 for example... which would actually be values of $ae2 for different form submission instances.
This leads me to think that if I want to use the $answer_list[][] approach instead, then I have to rethink my database design too... is that correct?
How would I design the database (and the queries), if I'm using this approach in the form?
Code: Select all
<p>Topic 1:<br /><input type="text" name="topic1" /><br />
L-Mode Rating: <select name="lmode[1]">
<option value="0" label="0" />0</option>
<option value="1" label="1" />1</option>
<option value="2" label="2" />2</option>
<option value="3" label="3" />3</option>
<option value="4" label="4" />4</option>
<option value="5" label="5" />5</option>
<option value="na" selected="selected" label="-" />-</option>
<option value="6" label="6" />6</option>
<option value="7" label="7" />7</option>
<option value="8" label="8" />8</option>
<option value="9" label="9" />9</option>
<option value="10" label="10" />10</option>
</select></p>
<p><input type="radio" name="answer_list[1][1]" value="A"/>A - B<input type="radio" name="answer_list[1][1]" value="B"/></p>
<p><input type="radio" name="answer_list[1][2]" value="C"/>C - D<input type="radio" name="answer_list[1][2]" value="D"/></p>
<p><input type="radio" name="answer_list[1][3]" value="A"/>A - E<input type="radio" name="answer_list[1][3]" value="E"/></p>
<p><input type="radio" name="answer_list[1][4]" value="B"/>B - D<input type="radio" name="answer_list[1][4]" value="D"/></p>
<p><input type="radio" name="answer_list[1][5]" value="E"/>E - C<input type="radio" name="answer_list[1][5]" value="C"/></p>
<p><input type="radio" name="answer_list[1][6]" value="D"/>D - A<input type="radio" name="answer_list[1][6]" value="A"/></p>
<p><input type="radio" name="answer_list[1][7]" value="E"/>E - B<input type="radio" name="answer_list[1][7]" value="B"/></p>
<p><input type="radio" name="answer_list[1][8]" value="C"/>C - A<input type="radio" name="answer_list[1][8]" value="A"/></p>
<p><input type="radio" name="answer_list[1][9]" value="D"/>D - E<input type="radio" name="answer_list[1][9]" value="E"/></p>
<p><input type="radio" name="answer_list[1][10]" value="B"/>B - C<input type="radio" name="answer_list[1][10]" value="C"/></p>
</td>
<td class="input">
<p>Topic 2:<br /><input type="text" name="topic2" /><br />
L-Mode Rating: <select name="lmode[2]">
<option value="0" label="0" />0</option>
<option value="1" label="1" />1</option>
<option value="2" label="2" />2</option>
<option value="3" label="3" />3</option>
<option value="4" label="4" />4</option>
<option value="5" label="5" />5</option>
<option value="na" selected="selected" label="-" />-</option>
<option value="6" label="6" />6</option>
<option value="7" label="7" />7</option>
<option value="8" label="8" />8</option>
<option value="9" label="9" />9</option>
<option value="10" label="10" />10</option>
</select></p>
<p><input type="radio" name="answer_list[2][1]" value="A"/>A - B<input type="radio" name="answer_list[2][1]" value="B"/></p>
<p><input type="radio" name="answer_list[2][2]" value="C"/>C - D<input type="radio" name="answer_list[2][2]" value="D"/></p>
<p><input type="radio" name="answer_list[2][3]" value="A"/>A - E<input type="radio" name="answer_list[2][3]" value="E"/></p>
<p><input type="radio" name="answer_list[2][4]" value="B"/>B - D<input type="radio" name="answer_list[2][4]" value="D"/></p>
<p><input type="radio" name="answer_list[2][5]" value="E"/>E - C<input type="radio" name="answer_list[2][5]" value="C"/></p>
<p><input type="radio" name="answer_list[2][6]" value="D"/>D - A<input type="radio" name="answer_list[2][6]" value="A"/></p>
<p><input type="radio" name="answer_list[2][7]" value="E"/>E - B<input type="radio" name="answer_list[2][7]" value="B"/></p>
<p><input type="radio" name="answer_list[2][8]" value="C"/>C - A<input type="radio" name="answer_list[2][8]" value="A"/></p>
<p><input type="radio" name="answer_list[2][9]" value="D"/>D - E<input type="radio" name="answer_list[2][9]" value="E"/></p>
<p><input type="radio" name="answer_list[2][10]" value="B"/>B - C<input type="radio" name="answer_list[2][10]" value="C"/></p>
</td>
I've certainly begun to see how this approach makes the scripting of the processing easier and cleaner, but I'm having difficulty following the implications for my database design.
My immediate thought was to just replace the $ab1 with $answer_list[1][1] in the same database structure, but something doesn't feel right about that.
I'm going to do some more manual reading, and some thinking, and playing... but I'll gladly consider any input/advice/suggestions too!
