I also have an earlier version that puts all the data into a single database table, one record per submission. The process of reworking my report script (the above referenced thread documents some of that process), has led me to the conclusion that I should rethink the database side of it too.
Here's the old form:
Code: Select all
<form name="cmcscorer" action="cmcscorer.php" method="post" target="blank">
<div style="text-align: center; font-weight: bold;">Your Name: <input type="text" name="name"></div>
<table cellpadding="10px">
<tr><td class="input">
<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>
<td class="input">
<p>Topic 3:<br /><input type="text" name="topic3" /><br />
L-Mode Rating: <select name="l3">
<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="ab3" value="1"/>A - B<input type="radio" name="ab3" value="2"/></p>
<p><input type="radio" name="cd3" value="1"/>C - D<input type="radio" name="cd3" value="2"/></p>
<p><input type="radio" name="ae3" value="1"/>A - E<input type="radio" name="ae3" value="2"/></p>
<p><input type="radio" name="bd3" value="1"/>B - D<input type="radio" name="bd3" value="2"/></p>
<p><input type="radio" name="ec3" value="1"/>E - C<input type="radio" name="ec3" value="2"/></p>
<p><input type="radio" name="da3" value="1"/>D - A<input type="radio" name="da3" value="2"/></p>
<p><input type="radio" name="eb3" value="1"/>E - B<input type="radio" name="eb3" value="2"/></p>
<p><input type="radio" name="ca3" value="1"/>C - A<input type="radio" name="ca3" value="2"/></p>
<p><input type="radio" name="de3" value="1"/>D - E<input type="radio" name="de3" value="2"/></p>
<p><input type="radio" name="bc3" value="1"/>B - C<input type="radio" name="bc3" value="2"/></p>
</td>
<td class="input">
<p>Topic 4:<br /><input type="text" name="topic4" /><br />
L-Mode Rating: <select name="l4">
<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="ab4" value="1"/>A - B<input type="radio" name="ab4" value="2"/></p>
<p><input type="radio" name="cd4" value="1"/>C - D<input type="radio" name="cd4" value="2"/></p>
<p><input type="radio" name="ae4" value="1"/>A - E<input type="radio" name="ae4" value="2"/></p>
<p><input type="radio" name="bd4" value="1"/>B - D<input type="radio" name="bd4" value="2"/></p>
<p><input type="radio" name="ec4" value="1"/>E - C<input type="radio" name="ec4" value="2"/></p>
<p><input type="radio" name="da4" value="1"/>D - A<input type="radio" name="da4" value="2"/></p>
<p><input type="radio" name="eb4" value="1"/>E - B<input type="radio" name="eb4" value="2"/></p>
<p><input type="radio" name="ca4" value="1"/>C - A<input type="radio" name="ca4" value="2"/></p>
<p><input type="radio" name="de4" value="1"/>D - E<input type="radio" name="de4" value="2"/></p>
<p><input type="radio" name="bc4" value="1"/>B - C<input type="radio" name="bc4" value="2"/></p>
</td>
<td class="input">
<p>Topic 5:<br /><input type="hidden" name="topic5" value="Prefer"><strong>"PREFER"</strong><br /><br />
<br /></p>
<p><input type="radio" name="ab5" value="1"/>A - B<input type="radio" name="ab5" value="2"/></p>
<p><input type="radio" name="cd5" value="1"/>C - D<input type="radio" name="cd5" value="2"/></p>
<p><input type="radio" name="ae5" value="1"/>A - E<input type="radio" name="ae5" value="2"/></p>
<p><input type="radio" name="bd5" value="1"/>B - D<input type="radio" name="bd5" value="2"/></p>
<p><input type="radio" name="ec5" value="1"/>E - C<input type="radio" name="ec5" value="2"/></p>
<p><input type="radio" name="da5" value="1"/>D - A<input type="radio" name="da5" value="2"/></p>
<p><input type="radio" name="eb5" value="1"/>E - B<input type="radio" name="eb5" value="2"/></p>
<p><input type="radio" name="ca5" value="1"/>C - A<input type="radio" name="ca5" value="2"/></p>
<p><input type="radio" name="de5" value="1"/>D - E<input type="radio" name="de5" value="2"/></p>
<p><input type="radio" name="bc5" value="1"/>B - C<input type="radio" name="bc5" value="2"/></p>
</td></tr>
</table>
<table cellpadding="5px" cellspacing="5px">
<tr>
<td class="images"><img src="./images/PDImages/image_a.png" width="150px"><br />A</td>
<td><textarea cols="50" rows="3" name="desc_a">Please replace this text with your name or description for Image A</textarea></td>
</tr><tr>
<td class="images"><img src="./images/PDImages/image_b.png" width="150px"><br />B</td>
<td><textarea cols="50" rows="3" name="desc_b">Please replace this text with your name or description for Image B</textarea></td>
</tr><tr>
<td class="images"><img src="./images/PDImages/image_c.png" width="150px"><br />C</td>
<td><textarea cols="50" rows="3" name="desc_c">Please replace this text with your name or description for Image C</textarea></td>
</tr><tr>
<td class="images"><img src="./images/PDImages/image_d.png" width="150px"><br />D</td>
<td><textarea cols="50" rows="3" name="desc_d">Please replace this text with your name or description for Image D</textarea></td>
</tr><tr>
<td class="images"><img src="./images/PDImages/image_e.png" width="150px"><br />E</td>
<td><textarea cols="50" rows="3" name="desc_e">Please replace this text with your name or description for Image E</textarea></td>
</tr>
</table>
<center><input type="submit" /></center>
</form></div>In order to make the report script more efficient, I've been led to the concept of arrays - so my new form looks like this:
Code: Select all
<form name="cmcscorer3" action="cmcscorer3.php" method="post" target="blank">
<div style="text-align: center; font-weight: bold;">Your Name: <input type="text" name="name"></div>
<table cellpadding="10px">
<tr><td class="input">
<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>
<td class="input">
<p>Topic 3:<br /><input type="text" name="topic3" /><br />
L-Mode Rating: <select name="lmode[3]">
<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[3][1]" value="A"/>A - B<input type="radio" name="answer_list[3][1]" value="B"/></p>
<p><input type="radio" name="answer_list[3][2]" value="C"/>C - D<input type="radio" name="answer_list[3][2]" value="D"/></p>
<p><input type="radio" name="answer_list[3][3]" value="A"/>A - E<input type="radio" name="answer_list[3][3]" value="E"/></p>
<p><input type="radio" name="answer_list[3][4]" value="B"/>B - D<input type="radio" name="answer_list[3][4]" value="D"/></p>
<p><input type="radio" name="answer_list[3][5]" value="E"/>E - C<input type="radio" name="answer_list[3][5]" value="C"/></p>
<p><input type="radio" name="answer_list[3][6]" value="D"/>D - A<input type="radio" name="answer_list[3][6]" value="A"/></p>
<p><input type="radio" name="answer_list[3][7]" value="E"/>E - B<input type="radio" name="answer_list[3][7]" value="B"/></p>
<p><input type="radio" name="answer_list[3][8]" value="C"/>C - A<input type="radio" name="answer_list[3][8]" value="A"/></p>
<p><input type="radio" name="answer_list[3][8]" value="D"/>D - E<input type="radio" name="answer_list[3][9]" value="E"/></p>
<p><input type="radio" name="answer_list[3][10]" value="B"/>B - C<input type="radio" name="answer_list[3][10]" value="C"/></p>
</td>
<td class="input">
<p>Topic 4:<br /><input type="hidden" name="topic4" value="Yourself" /><strong>"YOURSELF"</strong><br />
L-Mode Rating: <select name="lmode[4]">
<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[4][1]" value="A"/>A - B<input type="radio" name="answer_list[4][1]" value="B"/></p>
<p><input type="radio" name="answer_list[4][2]" value="C"/>C - D<input type="radio" name="answer_list[4][2]" value="D"/></p>
<p><input type="radio" name="answer_list[4][3]" value="A"/>A - E<input type="radio" name="answer_list[4][3]" value="E"/></p>
<p><input type="radio" name="answer_list[4][4]" value="B"/>B - D<input type="radio" name="answer_list[4][4]" value="D"/></p>
<p><input type="radio" name="answer_list[4][5]" value="E"/>E - C<input type="radio" name="answer_list[4][5]" value="C"/></p>
<p><input type="radio" name="answer_list[4][6]" value="D"/>D - A<input type="radio" name="answer_list[4][6]" value="A"/></p>
<p><input type="radio" name="answer_list[4][7]" value="E"/>E - B<input type="radio" name="answer_list[4][7]" value="B"/></p>
<p><input type="radio" name="answer_list[4][8]" value="C"/>C - A<input type="radio" name="answer_list[4][8]" value="A"/></p>
<p><input type="radio" name="answer_list[4][9]" value="D"/>D - E<input type="radio" name="answer_list[4][9]" value="E"/></p>
<p><input type="radio" name="answer_list[4][10]" value="B"/>B - C<input type="radio" name="answer_list[4][10]" value="C"/></p>
</td>
<td class="input">
<p>Topic 5:<br /><input type="hidden" name="topic5" value="Prefer"><strong>"PREFER"</strong><br /><br />
<br /></p>
<p><input type="radio" name="answer_list[5][1]" value="A"/>A - B<input type="radio" name="answer_list[5][1]" value="B"/></p>
<p><input type="radio" name="answer_list[5][2]" value="C"/>C - D<input type="radio" name="answer_list[5][2]" value="D"/></p>
<p><input type="radio" name="answer_list[5][3]" value="A"/>A - E<input type="radio" name="answer_list[5][3]" value="E"/></p>
<p><input type="radio" name="answer_list[5][4]" value="B"/>B - D<input type="radio" name="answer_list[5][4]" value="D"/></p>
<p><input type="radio" name="answer_list[5][5]" value="E"/>E - C<input type="radio" name="answer_list[5][5]" value="C"/></p>
<p><input type="radio" name="answer_list[5][6]" value="D"/>D - A<input type="radio" name="answer_list[5][6]" value="A"/></p>
<p><input type="radio" name="answer_list[5][7]" value="E"/>E - B<input type="radio" name="answer_list[5][7]" value="B"/></p>
<p><input type="radio" name="answer_list[5][8]" value="C"/>C - A<input type="radio" name="answer_list[5][8]" value="A"/></p>
<p><input type="radio" name="answer_list[5][9]" value="D"/>D - E<input type="radio" name="answer_list[5][9]" value="E"/></p>
<p><input type="radio" name="answer_list[5][10]" value="B"/>B - C<input type="radio" name="answer_list[5][10]" value="C"/></p>
</td></tr>
</table>
<table cellpadding="5px" cellspacing="5px">
<tr>
<td class="images"><img src="./images/PDImages/image_a.png" width="150px"><br />A</td>
<td><textarea cols="50" rows="3" name="desc_a">Please replace this text with your name or description for Image A</textarea></td>
</tr><tr>
<td class="images"><img src="./images/PDImages/image_b.png" width="150px"><br />B</td>
<td><textarea cols="50" rows="3" name="desc_b">Please replace this text with your name or description for Image B</textarea></td>
</tr><tr>
<td class="images"><img src="./images/PDImages/image_c.png" width="150px"><br />C</td>
<td><textarea cols="50" rows="3" name="desc_c">Please replace this text with your name or description for Image C</textarea></td>
</tr><tr>
<td class="images"><img src="./images/PDImages/image_d.png" width="150px"><br />D</td>
<td><textarea cols="50" rows="3" name="desc_d">Please replace this text with your name or description for Image D</textarea></td>
</tr><tr>
<td class="images"><img src="./images/PDImages/image_e.png" width="150px"><br />E</td>
<td><textarea cols="50" rows="3" name="desc_e">Please replace this text with your name or description for Image E</textarea></td>
</tr>
</table>
<center><input type="submit" /></center>
</form>So, here's what I'm thinking in terms of database redesign:
tbl_submission
sub_id
user_id
timestamp
tbl_topics
topic_id (1-5 -- there are always 5 topics per submission)
sub_id
topic
l_mode
tbl_answers
answer_id (1-10 -- there are always 10 rows per topic, 5 topics per submission)
topic_id
sub_id
answer
tbl_images
image_id (A, B, C, D, or E - so are always 5 rows per submission)
sub_id
description
Does this make sense? Is there a simpler, or better way to do it?
Would it help to know how the data needs to be manipulated/presented/scored -- would that make a difference?