>source

나는 이것을 얻을 수있을 것이지만, 현재의 유행성 '거리 화'가 내 머리를 찢어 놓은 것 같다. 나는 또한 그것이 가능한지 궁금합니다. 이와 유사한 다른 질문을 살펴 보았습니다.모든 옵션이있는 optgroup), 그러나 그들은 대답이 없거나 이해하거나 복제 할 수 없었습니다.

mysql 결과에서 만든 배열이 있습니다. $skillArray[$row->disciplinename][$row->skillid] = strtoupper($row->skillname); 이제 각 $row->disciplinename에 대해 optgroup을 사용하여 'select'를 작성하려고합니다. 각 optgroup 내에서 $row->skillid는 고유하지만 사용자가 특정 "disciplinename"을 선택하지 않으면 드롭 다운 결과에 모든 '$row->skillid'값이 표시됩니다. 지금까지 그렇게해도 괜찮습니다. '$selJobSkill'필드는 드롭 다운에서 선택할 수있는 항목입니다. '$skill'필드는 단순히 $skillId와 관련된 이름입니다. 다음은 '선택'드롭 다운입니다.

<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'도 표시되지 않습니다. 두 번째 문제는 그들이 관련된 특정 skillid를 얻을 수 있기를 원한다는 것입니다. 분야 이름을 선택하지 않아도 분야 이름 (다른 드롭 다운에 있으며 기본값은 '모두'). 각 'disciplinename'에는 'skillid'가 있으며 'disciplinename'(optgroup)을 기반으로이 드롭 다운을 생성하는 방법을 찾고 사용자가 '분야 명'을 선택하지 않고 드롭 다운에서 skillid를 선택합니다.그 분야 이름선택된 것으로. 이런 종류의 '선택'드롭 다운으로도 가능합니까?


  • 답변 # 1

    하루나 이틀 정도 떨어져서 문제와 해결책을 깨달았습니다. 첫째, 데이터베이스 결과에서 배열을 올바르게 구축하지 않았습니다. 이에 대한 수정 사항은 다음과 같습니다. $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의 제안을 좋아하지만 '

  • 이전 ruby on rails - 보기 버튼 클릭에서 행을 업데이트하는 방법
  • 다음 Python RQ 작업자 작업의 오류를 Sentry에 전파하는 방법