surf5502 Posted November 25, 2007 Share Posted November 25, 2007 So I need to create 3 drop downs. each one feeds off the one above it. so the first dropdown is for a department, when you select that I need every class in that department to come up in the next dropdown. when you select a class i need ever professor for that class to appear in the third dropdown. so i had it working for a solid 10 min... now it doesnt work... (ive been programming php forever, but i am an intermediate with ajax so i feel the error somewhere in the javascript?) HTML <script type="text/javascript" src="../../js/upload.js"></script> <form action="" method="post" enctype="multipart/form-data"> <?php if (($_POST['title']!="")&&(!validateForm())) echo "<center><b>Form Invalid</b></center>"; ?> <?php if (isset($error)) echo "<center><b>Error during file upload</b></center>"; ?> <table width="550" align="center" cellpadding="0" cellspacing="0"> <tr><td><b>Department:</b></td><td><select name="dept" onchange="showClass(this.value)"> <option value="">-- Select Deptartment --</option> <?php $query = "SELECT * FROM `categ_dept` ORDER BY `name` ASC"; $result = mysql_query($query); $rows = mysql_num_rows($result); $i = 0; while ($i < $rows){ $name = mysql_result($result, $i, "name"); $id = mysql_result($result, $i, "id"); echo "<option value=\"$id|$name\""; if ($_POST['dept'] == $id) echo " selected"; echo ">$name</option> "; $i++; } ?> </select></td></tr> <tr><td><b>Class:</b><br/><br/></td><td><div id="txtClass"><select name="class" onchange="showProf(this.value)"> <option value="">-- Select Deptartment First --</option> </select></div><br/><br/></td></tr> <tr><td colspan="2" style="border:1px solid #CCCCCC; border-bottom:none; text-align:center; padding-top:10px;"><b><i>If your class is not listed please use this box</i></b></td></tr> <tr><td style="border-left:1px solid #CCCCCC; padding:10px;"><b>Class Name:</b></td><td style="border-right:1px solid #CCCCCC;"><input type="text" name="class_name" value="<?php echo $_POST['class_name']; ?>" /></td></tr> <tr><td style="border-left:1px solid #CCCCCC; padding:10px;"><b>Call Number:</b><br/><i>ex: W3256</i></td><td style="border-right:1px solid #CCCCCC;"><input type="text" name="class_call" value="<?php echo $_POST['class_call']; ?>" /></td></tr> <tr><td style="border-left:1px solid #CCCCCC; padding:10px;"><b>Keywords:</b><br/><i>Seperate by spaces</i></td><td style="border-right:1px solid #CCCCCC;" valign="middle"><input type="text" name="class_keywords" value="<?php echo $_POST['class_keywords']; ?>" /></td></tr> <tr><td style="border:1px solid #CCCCCC; border-top:none; border-right:none; padding:10px;"><b>Description:</b></td><td style="border:1px solid #CCCCCC; border-top:none; border-left:none;"><textarea name="class_des" rows="4"><?php echo $_POST['class_des']; ?></textarea></td></tr> <tr><td><br/><b>Professor:</b><br/><br/></td><td><br/><div id="txtProf"><select name="professor"> <option value="">-- Select Class First --</option> </select></div><br/><br/></td></tr> <tr><td colspan="2" style="border:1px solid #CCCCCC; border-bottom:none; text-align:center; padding-top:10px;"><b><i>If your professor is not listed please use this box</i></b></td></tr> <tr><td style="border:1px solid #CCCCCC; border-top:none; border-right:none; padding:10px;"><b>Professor Name:</b></td><td style="border:1px solid #CCCCCC; border-top:none; border-left:none;"><input type="text" name="prof_name" value="<?php echo $_POST['prof_name']; ?>" /></td></tr> <tr><td colspan="2" align="center" style="padding-top:30px;"><input type="submit" value="Upload" /></td></tr> </table> </form> JAVASCRIPT - upload.js var xmlHttp; var showID = 0; function showClass(str){ xmlHttp=GetXmlHttpObject(); if (xmlHttp==null){ alert ("Browser does not support HTTP Request"); return; } showID = 1; var url="../../includes/getDropdown.php"; url=url+"?q="+str; url=url+"&sid="+showID; xmlHttp.onreadystatechange=stateChanged; xmlHttp.open("GET",url,true); xmlHttp.send(null); } function showProf(str){ xmlHttp=GetXmlHttpObject(); if (xmlHttp==null){ alert ("Browser does not support HTTP Request"); return; } showID = 2; var url="../../getDropdown.php"; url=url+"?q="+str; url=url+"&sid="+showID; xmlHttp.onreadystatechange=stateChanged; xmlHttp.open("GET",url,true); xmlHttp.send(null); } function stateChanged(){ if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){ if (showID==1){ document.getElementById("txtClass").innerHTML=xmlHttp.responseText; }else{ document.getElementById("txtProf").innerHTML=xmlHttp.responseText; } } } function GetXmlHttpObject(){ var xmlHttp=null; try{ // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); if (http_request.overrideMimeType) { http_request.overrideMimeType('text/html'); } }catch (e){ //Internet Explorer try{ xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); }catch (e){ xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttp; } PHP - getDropdown.php <?php @session_start(); $q = $_GET['q']; $sid = $_GET['sid']; include ("config.php"); mysql_connect($hostaddr,$username,$password); @mysql_select_db($database) or die("Error: Database not available. Please try again later."); if ($sid == 1){ // q is a department id // return classes for that department echo "<select name=\"class\" onchange=\"showProf(this.value)\"> "; $dept = explode("|",$q); $query = "SELECT * FROM `categ_class` WHERE `dept_id`='".$dept[0]."' AND `school_id`='".$_SESSION['school']."' ORDER BY `name` ASC"; $result = mysql_query($query); $rows = mysql_num_rows($result); $i = 0; if ($rows == 0){ echo "<option value=\"\">No Classes Listed</option>"; }else{ echo "<option value=\"\">-- Select a Class --</option> "; while ($i < $rows){ $name = mysql_result($result, $i, "name"); $call = mysql_result($result,$i,"call_num"); $id = mysql_result($result, $i, "id"); echo "<option value=\"$id\""; if ($_POST['class'] == $id) echo " selected"; echo ">$name ($call)</option> "; $i++; } } echo "</select>"; }else{ // q is a class id // return professors for that class echo "<select name=\"professor\"> "; $query = "SELECT * FROM `categ_prof` WHERE `class_id`='".mysql_real_escape_string($q)."' ORDER BY `name` ASC"; $result = mysql_query($query); $rows = mysql_num_rows($result); $i = 0; if ($rows == 0){ echo "<option value=\"\">No Professors Listed</option>"; }else{ echo "<option value=\"\">-- Select a Professor --</option> "; while ($i < $rows){ $name = mysql_result($result, $i, "name"); $id = mysql_result($result, $i, "id"); echo "<option value=\"$id\""; if ($_POST['professor'] == $id) echo " selected"; echo ">$name</option> "; $i++; } } echo "</select>"; } ?> Any help is greatly appreciated (quicker the better, gotta finish this thing this week)... Link to comment https://forums.phpfreaks.com/topic/78844-dynamic-drop-down-menu-question/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.