Sorry about that - I've only just got in from work!!
I would probably go with your first option - "choosing from each drop-down box".
You could put them on the same page, and each time a selection is made it queries your database and reveals the next drop-down box for your selection until the final choice has been made.
For example:
<form name="frmPump" action="thispage.php">
<select name="Chemical1" size=1 onChange="javascript:frmPump.submit()">
<?php
$qry1 = "SQL QUERY TO POPULATE FIRST DROPDOWN BOX";
$res1 = mysql_query($qry1, $db);
for ($i=0; $i < mysql_num_rows($res1); $i++) {
$row = mysql_fetch_array($res1);
printf("<option value=\"%s\">%s</option>", $res1["Value"], $res1["Option"]);
}
mysql_free_result($res1);
if ($Chemical1!="") { // If not blank, then selection has been made
printf("<select name="Chemical2" size=1 onChange=\"javascript:frmPump.submit()\">\n");
$qry2 = "SQL QUERY TO POPULATE SECOND DROPDOWN BOX, WHERE Chemical1='$Chemical1'";
$res2 = mysql_query($qry2, $db);
---
---
... and so on, for all the drop-down boxes, until the final choice has been made. The next drop-down box will not appear until the previous drop-down box has made a selection.
I'm unsure about the cross-over tables, and many-to-many relationships. I was always lead to believe that if you have a many-to-many relationship, you're database is wrong.
You should be able to fit all your information in one table. Each drop-down box would relate to one field/attribute in your table. so, each time your form runs, it reveals fewer and fewer records until it reaches it's final record.
If you give me the table definition, I could probably write the code for you (just to start you off in the right direction!)