Ok, I am not a Javascript coder nor do I use ASP but those are most of the examples for building a dependent dynamic select menu form I've found in google (yes, I've tried searching for a solution but few PHP/MySQL/Javascript comes up).
Well, I've been altering something similar to this:
//************** start dynamic drop-down list magic ***************//
print "<script language=\"javascript\"><!--\n";
$classes = mysql_query("SELECT class FROM classes ORDER BY class");
print "var labIDs = new Array(" . mysql_num_rows($classes) . ");\n";
print "var labNames = new Array(" . mysql_num_rows($classes) . ");\n";
while (list($class) = mysql_fetch_array($classes)) {
$labs = mysql_query("SELECT DISTINCT labID FROM duedates WHERE class = $class ORDER BY due");
print "labIDs[$class] = new Array(" . (sizeof($labs) + 1) . ");\n";
print "labNames[$class] = new Array(" . (sizeof($labs) + 1) . ");\n";
$i = 1;
print "labIDs[$class][0] = 0;\n";
print "labNames[$class][0] = 0;\n";
while (list($lab) = mysql_fetch_array($labs)) {
print "labIDs[$class][$i] = '$lab';\n";
print "labNames[$class][" . $i++ . "] = '";
print addslashes(mysql_result(mysql_query("SELECT name FROM labs WHERE class = $class AND labID = $lab"), 1));
print "';\n";
}
}
print <<<EOJS
function clean(what) {
for (; what.options.length > 1;) {
what.options[what.options.length - 1] = null;
}
}
function updateLabs(which) {
with (document.forms[0]) {
clean(which);
curClass = course.options[course.selectedIndex].value;
for (var i = 1; i < labIDs[curClass].length; i++) {
which.options[which.options.length] = new Option(labIDs[curClass][i] + ". " + labNames[curClass][i], labIDs[curClass][i]);
}
}
}
//--></script>
EOJS; //************** end dynamic drop-down list magic ***************//
print form_open();
//replace the old static drop-down tag with a new dynamic one
print "Course: <select name=\"course\" onChange=\"javascript: updateLabs(lab);\">\n";
$classes = mysql_query("SELECT class FROM classes ORDER BY class")
print "<option value=0 selected>Choose one:</option>\n";
while (list($class) = mysql_fetch_assoc($classes)) {
print "<option value=$class>$class</option>\n";
}
print "</select><br>\n";
print "Lab: <select name=\"lab\">\n<option value=0>Choose one\n</select><br>\n"; //will get filled automagically
which I found here. http://forums.devshed.com/showpost.php?p=608686&postcount=41
However, I just can't get the Javascript to work.
So, would anyone tweak that script for it to work with my database or show me another solution?
This is my database structure, where category.categoryid is a primary key and subjectcat.categoryid is a foreign key.
//Table: category
[categoryid] [category]
1 math
2 computer
3 science
4 social science
5 history
6 humanities
7 foreign language
8 english
9 education
10 engineering
11 business
//Table: subjectcat
[subjectid] [subject] [categoryid]
100 arithmetic 1
101 general math 1
102 pre-algebra 1
103 algebra beginning elem 1
200 microsoft windows 2
201 microsoft office 2
202 troubleshooting 2
300 general science 3
and so on....
I want one select menu form to list the categories and then another select menu form to dynamically generate the 'subjects' based on the other select form 'category' selected.
Once the user click submit, the $subjectid value will be passed as a $_GET['subjectid']...
Example to the url:
http://www.domain.com/index.php?subjectid=3
Something like that. Can anyone help?