基于parent_id的类别的动态下拉

时间:2017-08-04 19:58:08

标签: php jquery mysql ajax drop-down-menu

我的查询与PHP中的动态下拉 选项有关,您认为这可能是之前提出的问题,但我的方案有点典型,因为下拉列表的所有值都将从同桌

要求 -

  
      
  1. Drop将基于两个表的INNER JOIN, oc_category oc_category_description (用于在下拉列表的选项字段中显示类别名称)
  2.   

两个表 category_id

之间的公共字段

要使用的字段

oc_category - > category_idparent_id

oc_category_description - > name

了解oc_category

结构

Click here了解 oc_category 表的结构

所以在我的案例中,有3个级别的类别 - PRIMARY(1级),SECONDARY(2级)&第三级(第3级)

例如 - Consumer Electronics(PRIMARY)> Mobile Phones(第二次)> iPhone(叔)

现在我想要3次降价 -

下拉1 - >主要类别 parent_id '0' 下拉选项的值应 category_id ,显示的值应为名称

My Current mysql查询第一次下拉是 -

SELECT cat.category_id, cat.parent_id, catd.name FROM oc_category AS cat INNER JOIN oc_category_description AS catd ON cat.category_id=catd.category_id

我有 15 主要类别,所以我想在上面的查询中使用 WHERE cat.category_id< 16

下拉2 - >在parent_id表中 oc_category PRIMARY CATEGORY 相关的二级类别。

因此,一旦我选择PRIMARY CATEGORY, Drop Down 2 将加载链接到其父CATEGORY的所有 SECONDARY CATEGORIES 类别。

下拉3 - >在parent_id表中 oc_category 次要类别相关的第三类。

因此,一旦我选择了SECONDARY CATEGORY, Drop Down 3 将加载链接到其父CATEGORY的所有 TERTIARY CATEGORIES 类别。

我更喜欢在这里使用AJAX。

仅供参考 - 有2339个类别,其中 15个主要类别 367个二级类别& 1957年第三类类别

真诚地感谢所有开发人员,他们考虑过回答我的问题并给予宝贵的时间。

1 个答案:

答案 0 :(得分:0)

$(function() {
  //var items = populateDropdowns(0);
  var items = dummyPopulateDropdowns(0, 'primary');
  $('#drp_primary').html('');
  for (var i = 0; i < items.length; i++) {
    $('#drp_primary').append($('<option value="' + items[i].category_id + '">' + items[i].name + ' </option>'));
  }
});
$(document).on('change', '#drp_primary', function() {
  var mainCategory = $(this).val();
  //var items = populateDropdowns(mainCategory);
  var items = dummyPopulateDropdowns(mainCategory, 'secondary');
  $('#drp_secondary').html('');
  for (var i = 0; i < items.length; i++) {
    $('#drp_secondary').append($('<option value="' + items[i].category_id + '">' + items[i].name + ' </option>'));
  }
});
$(document).on('change', '#drp_secondary', function() {
  var secondaryCategory = $(this).val();
  //var items = populateDropdowns(secondaryCategory);
  var items = dummyPopulateDropdowns(secondaryCategory, 'tertiory');
  $('#drp_tertiory').html('');
  for (var i = 0; i < items.length; i++) {
    $('#drp_tertiory').append($('<option value="' + items[i].category_id + '">' + items[i].name + ' </option>'));
  }
});

function populateDropdowns(parentID) {
  var items = [];
  $.ajax({
    url: "your url with",
    data: {
      mainCategoryID: parentID
    },
    async: false,
    success: function(result) {
      items = result;

    }
  });
  return items;
}

function dummyPopulateDropdowns(parentID, drpdwn) {
  var items = [];
  if (drpdwn == 'primary') {
    items.push({
      category_id: 0,
      name: 'Baby Products'
    }, {
      category_id: 1,
      name: 'Consumer Electronics'
    });
  } else if (drpdwn == 'secondary') {
    items.push({
      category_id: 10,
      name: 'Land Phones'
    }, {
      category_id: 11,
      name: 'Mobile Phones'
    });
  } else if (drpdwn == 'tertiory') {
    items.push({
      category_id: 100,
      name: 'Iphone'
    }, {
      category_id: 101,
      name: 'Blackbery'
    });
  }
  return items;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id='drp_primary'>
</select>
<br />
<select id='drp_secondary'>
</select>
<br />
<select id='drp_tertiory'>
</select>

这部分解释了如何处理下拉和ajax调用。 这里一定要评论一行' dummyPopulateDropdowns (0,'primary');'并取消注释' populateDropdowns ',以便您可以进行真正的ajax调用,替换您的网址。

primary - QUERY

SELECT cat.category_id, cat.parent_id, catd.name 
FROM oc_category AS cat 
INNER JOIN oc_category_description AS catd 
   ON cat.category_id = catd.category_id
WHERE parent_id = 0

secondary and tertiory - QUERY

SELECT cat.category_id, cat.parent_id, catd.name 
FROM oc_category AS cat 
INNER JOIN oc_category_description AS catd 
   ON cat.category_id = catd.category_id
WHERE parent_id = <SELECTED CATEGORY ID>

我不擅长编写php代码,希望此社区中的其他人可以帮助您修改此代码以使其适合您。

注意方法 dummyPopulateDropdowns 仅用于填充粗略数据的下拉列表。