我的查询与PHP中的动态下拉 选项有关,您认为这可能是之前提出的问题,但我的方案有点典型,因为下拉列表的所有值都将从同桌
要求 -
- Drop将基于两个表的INNER JOIN, oc_category 和 oc_category_description (用于在下拉列表的选项字段中显示类别名称)
醇>
两个表 category_id
要使用的字段
oc_category - > category_id
,parent_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年第三类类别
真诚地感谢所有开发人员,他们考虑过回答我的问题并给予宝贵的时间。
答案 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 仅用于填充粗略数据的下拉列表。