Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 243
  • Last Modified:

Dependent dynamic select form from a MySQL database

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:
[php]
 //************** 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 [/php]

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?
0
identityless
Asked:
identityless
1 Solution
 
cristi_2112Commented:
Hello,

You should post a copy of the source generated by this page.
Anyway, what I can so far:
- instead of - print "<option value=$class>$class</option>\n";
  use -  print "<option value=\"$class\">$class</option>\n";

- close the <form> tag

But again, you should view source of the page and copy/paste it here, because the script should work.
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now