首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在另一个组合框中基于选定项列出项的组合框。

在另一个组合框中基于选定项列出项的组合框。
EN

Stack Overflow用户
提问于 2012-11-06 05:09:49
回答 2查看 3K关注 0票数 0

我确实有一个使用PHP、MySQL和JavaScript的例程。有两个表: tbl_category和tbl_subcategory,如下所示:

tbl_category

  1. cat_id
  2. cat_name

tbl_subcategory

  1. scat_id
  2. cat_parent_id
  3. cat_name

他们里面有一些信息

tbl_category:

  1. 短裤
  2. 鞋子
  3. T恤

tbl_subcategory:

  1. 1辆牛仔裤
  2. 1重型
  3. 2只靴子
  4. 2只凉鞋
  5. 3长袖
  6. 3短袖
  7. 3马球

我将指向javascript库的链接放入文件头:

代码语言:javascript
代码运行次数:0
运行
复制
<script type="text/javascript" src="jquery-1.8.2.min.js"></script>

当然,我以前从jquery网站下载(更新版本)。

我现在有了脚本例程:

代码语言:javascript
代码运行次数:0
运行
复制
<script type="text/javascript">

  $(document).ready(function(){
     $("select[name=cat_id").change(function(){
        $("select[name=scat_id]").html('<option value="">Loading...</option>');
        $.post("ajax_subcategory.php",
              {cat_id:$(this).val()},
              function(valor){
                 $("select[name=scat_id]").html(valor);
              }
              )
     })
  })

现在我有了表单,预装了来自表tbl_category的数据的select字段类别:

代码语言:javascript
代码运行次数:0
运行
复制
<form name="form" method="post" action="" enctype="multipart/form-data">
<table width="100%" border="0" cellspacing="6" cellpadding="0">
<tr>
   <td align="right">Category:</td>
   <td><select name="cat_id" >
          <option value="0">Choose category</option>
    <?php
             $sql1 =mysql_query("SELECT * FROM tbl_category ORDER by cat_name")or die(mysql_error());
            while($row = mysql_fetch_array($sql1))
            {
               echo ("<option value=\"$row[cat_id]\"" . ($sql1 == $row["cat_name"] ? " selected" : "") . ">$row[cat_name]</option>");  
            }
          ?></select> 
   </td>
</tr>
<tr>
   <td align="right">Sub-category:</td>
   <td><select name="scat_id" selected="selected" >
       <option value="0">Waiting category...</option>
       </select> 
   </td>
 </tr>
 </table>
 <input type="submit" name="submit" value="Submit"/>
 </form>

然后是名为ajax_subcategory的php文件:

代码语言:javascript
代码运行次数:0
运行
复制
<?php

include "../connect_to_mysql.php";

$cat_id = $_POST['cat_id'];

$sql1 =mysql_query("SELECT * FROM tbl_subcategory WHERE cat_parent_id='$cat_id' ORDER by cat_name")or die(mysql_error());
while($row = mysql_fetch_array($sql1))
 {
    echo ("<option value=\"$row[scat_id]\"" . ($sql1 == $row["scat_name"] ? " selected" : "") . ">$row[scat_name]</option>");  
 }
 ?>

完成了!一切看起来都很完美和美丽。当我在第一个组合中选择项目时,我可以看到Javascript在工作和加载.显示出来,但是第二个ComboBox总是空的,不管我选择什么项,它显示为空并变得更小(宽度)。

这是一个很好的例行公事,我从另一个网站看到了在网上工作。

你们能帮我找到解决办法吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2012-11-06 05:42:58

首先,您需要一步一步地进行故障排除来分析数据。在你的情况下,我会这样做:

  1. 在发布之前检查cat_id: $(“选择[name=cat_id”).change(函数(){告警($(This).val());
  2. 按原样打印mysql_query (ajax_subcategory页面)中的字符串,并检查查询是否有效。在MySQL控制台或phpMyAdmin中直接尝试此查询并检查其输出。
  3. 分析ajax响应:在Chrome中使用FireBug或Network并检查Ajax响应。有时,您的ajax_subcategory页面会产生一些PHP警告或通知。

注意:我不明白您为什么要检查条件$sql1 == $row"cat_name“。$sql1将是一个资源Id,根据您的查询,$row‘’cat_ name‘是一个字符串,表示您的子类别名称。

顺便说一句,mysql_*函数是不受欢迎的,并且强烈反对使用它们。使用mysqli_*函数或PDO。

票数 0
EN

Stack Overflow用户

发布于 2012-11-06 06:25:44

请将$row["scat_name"]更改为$row["cat_name"]

代码语言:javascript
代码运行次数:0
运行
复制
<?php

    include "../connect_to_mysql.php";

    $cat_id = $_POST['cat_id'];

    $sql1 =mysql_query("SELECT * FROM tbl_subcategory WHERE cat_parent_id='$cat_id' ORDER by cat_name")or die(mysql_error());
    while($row = mysql_fetch_array($sql1))
     {
        echo ("<option value=\"$row[scat_id]\"" . ($sql1 == $row["cat_name"] ? " selected" : "") . ">$row[cat_name]</option>");  
     }
     ?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13244754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档