多维 <optgroup> 和 <option> 每个 optgroup 具有重复的选项值
Multidimensional <optgroup> and <option> with duplicate option values for each optgroup
我应该可以得到这个,但我认为当前的大流行 'distancing' 已经烧毁了我的大脑。我也想知道这是否可能。我看过其他类似的问题(比如 optgroup with all option),但他们要么没有答案,要么我无法理解或复制它们。
我有一个根据 mysql 结果构建的数组:
$skillArray[$row->disciplinename][$row->skillid] = strtoupper($row->skillname);
现在我正在尝试为每个 $row->disciplinename 构建一个带有 optgroups 的 'select'。在每个 optgroup 中,$row->skillid 是唯一的,但是
如果用户没有 select 特定的“disciplinename”,下拉结果会显示每个“$row->skillid”值——到目前为止它确实如此,没关系。
字段“$selJobSkill”是下拉列表中的任何内容 select。字段“$skill”只是一个与 $skillId 关联的名称。
这是 'select' 下拉菜单:
<select name="jobskill" id="jobskill" class="textfield" onchange="submit()">
<option value="0">(choose)</option>
<?php
foreach ($skillArray as $catname=>$cat) {
echo '<optgroup label="' . $this->catname . '">';
foreach ($cat as $skillID => $skill) {
$selected = ($skillID == $selJobSkill) ? ' selected' : ''; ?>
<option value="<?php echo $skillID; ?>"
<?php echo $selected; ?>><?php echo $skill; ?></option>
<?php
}
}
echo "</optgroup>";
?>
</select>
数组的一个例子是:
( [Health] => Array ( [1] => COTA [2] => OT [3] => PT [4] => PTA [5] => SLP [6] => MGMT [7] => DPT )
[Tech] => Array ( [1] => RESP_TECH [2] => RESP_THERA [3] => PHARM_TECH [4] => US_TECH [5] => CT/MRI [6] => SURG_TECH [7] => RAD_TECH [8] => CLS [11] => SCRUB_TECH ) )
第一个问题是我没有得到 optgroup 名称——我得到的是一个空白条目。 '$cat' 和 '$catname' 都没有出现。
第二个问题是他们希望能够获得与
学科名称,即使他们没有 select 学科名称(它在另一个下拉列表中,默认值为 'All')。
在每个 'disciplinename' 中,有一个 'skillid',我的任务是找到一种方法来基于 'disciplinename'(作为 optgroup)创建此下拉列表,然后如果
用户从下拉列表中选择了一个 skillid 而没有选择 'disciplinename',我应该将那个 disciplinename 的 skilled 标记为 selected 的。
这种 'select' 下拉菜单是否可行?
一两天后,我意识到了问题并解决了问题。首先,我没有根据数据库结果正确构建数组。解决办法是:
$this->model->skillArray[$row->classid .'-'.$row->disciplinename][] = array( $row->skillid => $row->skillname );
第二件事是我没有正确访问数组。我知道这些事情中的一个或两个是导致问题的原因,但是深夜等等……你们都经历过。访问数组的修复是:
foreach ($this->model->skillArray as $key => $cat) {
echo '<optgroup label="' . substr($key, 2) . '">';
foreach ($cat as $skillset => $skill) {
foreach ($skill as $skillId => $skillname) {
echo "<option data-cat='$key' value='$skillId'>" . $skillname . "</option>";
}
}
echo "</optgroup>";
}
我没有深入数组以提取值。我喜欢@IVO GELOV 的建议,但决定将 HTML5“data-”属性与“
我应该可以得到这个,但我认为当前的大流行 'distancing' 已经烧毁了我的大脑。我也想知道这是否可能。我看过其他类似的问题(比如 optgroup with all option),但他们要么没有答案,要么我无法理解或复制它们。
我有一个根据 mysql 结果构建的数组:
$skillArray[$row->disciplinename][$row->skillid] = strtoupper($row->skillname);
现在我正在尝试为每个 $row->disciplinename 构建一个带有 optgroups 的 'select'。在每个 optgroup 中,$row->skillid 是唯一的,但是
如果用户没有 select 特定的“disciplinename”,下拉结果会显示每个“$row->skillid”值——到目前为止它确实如此,没关系。
字段“$selJobSkill”是下拉列表中的任何内容 select。字段“$skill”只是一个与 $skillId 关联的名称。
这是 'select' 下拉菜单:
<select name="jobskill" id="jobskill" class="textfield" onchange="submit()">
<option value="0">(choose)</option>
<?php
foreach ($skillArray as $catname=>$cat) {
echo '<optgroup label="' . $this->catname . '">';
foreach ($cat as $skillID => $skill) {
$selected = ($skillID == $selJobSkill) ? ' selected' : ''; ?>
<option value="<?php echo $skillID; ?>"
<?php echo $selected; ?>><?php echo $skill; ?></option>
<?php
}
}
echo "</optgroup>";
?>
</select>
数组的一个例子是:
( [Health] => Array ( [1] => COTA [2] => OT [3] => PT [4] => PTA [5] => SLP [6] => MGMT [7] => DPT )
[Tech] => Array ( [1] => RESP_TECH [2] => RESP_THERA [3] => PHARM_TECH [4] => US_TECH [5] => CT/MRI [6] => SURG_TECH [7] => RAD_TECH [8] => CLS [11] => SCRUB_TECH ) )
第一个问题是我没有得到 optgroup 名称——我得到的是一个空白条目。 '$cat' 和 '$catname' 都没有出现。 第二个问题是他们希望能够获得与 学科名称,即使他们没有 select 学科名称(它在另一个下拉列表中,默认值为 'All')。 在每个 'disciplinename' 中,有一个 'skillid',我的任务是找到一种方法来基于 'disciplinename'(作为 optgroup)创建此下拉列表,然后如果 用户从下拉列表中选择了一个 skillid 而没有选择 'disciplinename',我应该将那个 disciplinename 的 skilled 标记为 selected 的。 这种 'select' 下拉菜单是否可行?
一两天后,我意识到了问题并解决了问题。首先,我没有根据数据库结果正确构建数组。解决办法是:
$this->model->skillArray[$row->classid .'-'.$row->disciplinename][] = array( $row->skillid => $row->skillname );
第二件事是我没有正确访问数组。我知道这些事情中的一个或两个是导致问题的原因,但是深夜等等……你们都经历过。访问数组的修复是:
foreach ($this->model->skillArray as $key => $cat) {
echo '<optgroup label="' . substr($key, 2) . '">';
foreach ($cat as $skillset => $skill) {
foreach ($skill as $skillId => $skillname) {
echo "<option data-cat='$key' value='$skillId'>" . $skillname . "</option>";
}
}
echo "</optgroup>";
}
我没有深入数组以提取值。我喜欢@IVO GELOV 的建议,但决定将 HTML5“data-”属性与“