- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个类别的 MySql 表:
id , name , parent
现在有了这个函数
,我在selectbox
和optgroup
html
标签中列出了类别:
$options = array();
$categories = DataAccess::fetch("
SELECT
* , p.name AS parent
FROM
cats AS child
INNER JOIN
cats AS p ON p.id = child.parent
");
foreach($categories as $category){
$parent = $category['parent'];
if (! isset($options[$parent])) $options[$parent] = array();
$options[$parent][$category['id']] = $category['name'];
}
echo '<select>';
$selid = 13;
foreach($options as $group => $option) {
printf('<optgroup label="%s">', $group);
foreach ($option as $id => $label) {
$selcat = ($selid == $id) ? 'selected' : '';
printf('<option %s value="%s">%s</option>',$selcat, $id, $label);
}
printf('</optgroup>');
}
echo "</select>";
此函数 ouhput 适用于 One child
父类别,输出为:
<select class="selectpicker" >
<optgroup label="News">
<option selected value="13">War</option>
</optgroup>
<optgroup label="article">
<option selected value="14">tech</option>
</optgroup>
</select>
现在,我有三个问题:
1-如果我创建了很多 child 这个函数不起作用并且只打印One Child
。我需要这样:
News
--Sport
--War
--tech
Article
--tech
--php
--linux
2 - 需要使用 optgroup
打印 Multilevel
类别,如下所示:
News
--Sport
----Sky
----Football
------Football-1
--War
----War1
--tech
Article
--tech
----tech2
------tech3
--php
--linux
3 - 如果父级 = 0(根)则不打印类别,这仅打印具有子父级的类别。
如何修复/打印这个?
最佳答案
你不能。 select
和optgroup
不支持多级although standard says they should .您必须根据级别手动用
向左填充您的选项。普通空间不起作用。
您似乎还没有实现这个多级树。我首先阅读关于这个 question 的答案.
然后我会像这样写一个简单的递归函数:
function walkTree($nodes, $level = 0) {
foreach($nodes as $node) {
echo '<option>' . str_repeat(' ', $level) . $node->label . '</option>';
if($node->children) {
walkTree($node->children, $level + 1);
}
}
}
walkTree($root->children);
这假设您有一个对象层次结构,但这不是必需的。您可以使用现有的数据库并编写一个函数来返回另一个节点的所有子节点:
function getChildren($id) {
$categories = DataAccess::fetch("
SELECT
*
FROM
cats
WHERE
cats.parent = $id
");
return $categories;
}
然后您需要获取根节点的初始列表(WHERE cats.parent IS NULL
也许吧?)并将其传递给 walkTree
,其中 $node->children
被替换为 getChildren($node->id)
。
显然这意味着大量的查询。您要么需要切换到嵌套集层次结构或类似的东西,要么缓存生成的 HTML。
关于php - 将多级子父类别打印到 optgroup 和 selectbox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20855270/
我有一个由“主页”、“关于”、“联系方式”、“个人资料”组成的菜单。将鼠标悬停在“个人资料”上时,我希望可以显示一个子菜单,其中包含指向我的 Github/Facebook 帐户等的链接。我该怎么做?
select2上是否可以有多层 optgroup? 基本上,另一个 optgroup 中的 optgroup。 option_1
我有两个下拉分组列表 (Optgroup)。我想使用向右移动、向左移动按钮在这两个 html 控件之间交换元素。我可以从左侧下拉列表项中选择一个或多个元素,然后单击右移按钮。在这种情况下,我可以将所选
在搜索时,如果没有匹配项,该选项将被隐藏,但即使没有子选项匹配,optgroup 仍会显示。如果没有匹配的选项,如何隐藏 optgroup? 我试过这个,这是我试过的代码:jsfiddle $("#u
Error: End tag for 'optgroup' which is not finished. You have probably failed to include a required
为什么这里的optgroup看不到? 显示所有选项,但不显示组名称 http://jsfiddle.net/UCNJ8/ $('').appendTo('body').append('test')
我有一个包含 3 个选项组的选择菜单。最后一个称为“自定义搜索”,当您选择它时,它将触发一个模式来选择不在下拉列表中的用户名并将其添加到数据库中。 长话短说,我想添加一个到optgroup但不太确定该
我所做的只是编辑一些旧代码,我在其中创建了一个选项组,但现在我想将其删除。我不能只用 css 来做到这一点,因为它使用了所选的插件。 function flavorChooser (title, it
我有一个 select 元素,它将显示在移动设备上 Australia Cars Report Australia Bikes Report
大家好,我有下表 -------------------------------------------- |ID|point_name|point_address|point_category| |
我有一个 jQuery 代码,可以从 ul li menu 创建 select。我想从父菜单添加 optgroup,但不知道如何添加。这是我的代码: // Create the dropdown ba
我正在使用 Codeigniter 查询我的数据库并返回一个数据数组。 我有这样一组数据: Array ( [0] => stdClass Object ( [depot_id
我有以下html格式的代码 [choose yours] SubItem2 Item2
我正在尝试向多个optgroup添加一个选项,问题是这个选项只显示在单个optgroup上,我不知道这个机制是不是默认逻辑html 或者我做错了: $(document).ready(function
当代码运行时,下面的标签不会读取空格后的字符串“数据”。我尝试在 optgroup 元素上使用一些 CSS,但它没有对其标签进行任何更改。 var data = "Names of Meters";
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
我想创建一个包含分组项目的下拉框。它用于我正在使用的数据库查找 HTML 表单。有没有一种方法可以选择组标题,从而选择该特定组中的所有项目?例如,如果组标题是“German Cars”并且包含项目“M
如何在 select 标签的 optgroup 上添加样式? http://jsfiddle.net/UCNJ8/3/ js: $('').appendTo('body').append('test'
如何从复选框字段中删除 optgroup field($model, 'survey_type')->dropDownList([$surveyTypeList],['prompt'=>'Select
我有一个用于搜索的下拉菜单设置。这个想法是您单击一个选项,然后 OPTGROUP 就会出现。我想做的是,一旦选择了标签,它就会跳转到 OPTGROUP 的该部分。 到目前为止我已经写了一些 jQuer
我是一名优秀的程序员,十分优秀!