我必须制作一个带有多个互相修改的下拉菜单的表单。菜单/数据库表是:
类别,样式,类型和机制
我尝试使用有限的Ajax知识来执行此操作,但是似乎只能访问一次MySQL(在初始页上)以填充Categories表,而后无法通过查询下一组结果来更新Styles表。我收到一个错误,声称数据库为空。
我还尝试通过选项组填充下拉列表,以使用循环查询来处理“类别”和“样式”,但是仅显示“类别”标题,而所有“样式”子值显示为空白。我的代码如下:
$query1="SELECT categories.category_id, categories.Category_Name "; $query1.="FROM categories "; $query1.="ORDER BY categories.Category_Name ASC"; $category_result=mysql_query($query1, $connection); if(!$category_result){ die("Database query failed: " . mysql_error()); } $options=""; $con=0; while ($category_row=mysql_fetch_array($category_result)) { $category_name=$category_row["Category_Name"]; $CategoryID=$category_row["category_id"]; $options.="<OPTGROUP LABEL=\"$category_name\"> <br />"; $query2="SELECT categories.category_id, categories.Category_Name, "; $query2.="styles.style_id, styles.Style_Name "; $query2.="FROM categories, styles "; $query2.="WHERE styles.Category_ID = $CategoryID "; $style_result=mysql_query($query2, $connection); if(!$style_result){ die("Database query failed: " . mysql_error()); } while ($style_row=mysql_fetch_array($style_result)) { $style_name=$row["Style_Name"]; $id=$row["style_id"]; $options.="<OPTION VALUE=\"$id\" <a href=\"#\" onClick=\"javascript:swapContent('$style_name');\" >".$style_name.'</OPTION>'; } $options.='</OPTGROUP> <br />'; } ?> <SELECT NAME="category_id"> <OPTION VALUE=0></OPTION> <?php echo $options ?>choose </SELECT>
任何对我做错事的见解将不胜感激!
最后,我只能自己解决问题,但是感谢那些尝试提供帮助的人。
我将从我的Class / Category / Style / Type级联表中发布中间表。首先执行如下功能:
<?php //Category Selection function Category_Selection($link) { global $connection; $options=""; if(isset($_GET["class_id"])) { $query="SELECT categories.category_id, categories.Category_Name "; $query.="FROM categories "; $query.="ORDER BY categories.Category_Name ASC"; $result=mysql_query($query, $connection); $class_id=$_GET['class_id']; if(!$result){ die("Database query failed: " . mysql_error()); } while ($row=mysql_fetch_array($result)) { $name=$row["Category_Name"]; $id=$row["category_id"]; $link2=$link."&category_id={$id}"; $options.="<OPTION VALUE=\"$link2\" "; if(isset($_GET["category_id"])) { $category_id = $_GET['category_id']; if($id==$category_id) { $options.=" selected=\"selected\" "; } } $options.=" >".$name.'</OPTION>'; } } else { $options.="<OPTION selected=\"selected\" VALUE=0>First Select Class</OPTION>"; } return($options); } ?>
然后放在您的主页上:
<?php session_start() ?> //Category if(isset($_GET['category_id'])) { $category_id=$_GET['category_id']; setcookie('category_id',$category_id); $link.="&category_id={$category_id}"; }elseif(isset($_COOKIE['category_id'])) { $_GET['category_id']=$_COOKIE['category_id']; $category_id=$_COOKIE['category_id']; $link.="&category_id={$category_id}"; }
现在,使您的选择下拉列表:
<?php //Category Selection $options=Category_Selection($link); ?> <center> <SELECT NAME="category_id" ONCHANGE="location = this.options[this.selectedIndex].value;"> <OPTION VALUE=0></OPTION> <?php echo $options ?> </SELECT> </center>
对每个所需的下拉菜单重复以上操作。
祝您好运…而且,当然要使用MYSQLi保护您的网站,而不是上面显示的MYSQL …