0

データベースから取得したセクターのリストがあり、ユーザーに応じて選択したセクターのみを入力しようとしています。7 つのセクターがあります (下図)。

HTML:

<p class="sector"><span>North East</span><input type="checkbox" class="sector-list" name="sector[]" value="1" /></p>
<p class="sector"><span>City of Sunderland</span><input type="checkbox" class="sector-list" name="sector[]" value="2" /></p>
<p class="sector"><span>Sunderland East</span><input type="checkbox" class="sector-list" name="sector[]" value="3" /></p>
<p class="sector"><span>Sunderland North</span><input type="checkbox" class="sector-list" name="sector[]" value="4" /></p>
<p class="sector"><span>Sunderland West</span><input type="checkbox" class="sector-list" name="sector[]" value="5" /></p>
<p class="sector"><span>Coalfield</span><input type="checkbox" class="sector-list" name="sector[]" value="6" /></p>
<p class="sector"><span>Washington</span><input type="checkbox" class="sector-list" name="sector[]" value="7" /></p>

コントローラ:

foreach($data['all_sectors'] as $sectors):
    echo"<p class='service'><span>$sectors->sector</span><input type='checkbox' class='sector-list' name='sector[]' value='$sectors->ID' /></p>";
endforeach;

ユーザーがプロファイルを編集しようとすると、ユーザーが以前に選択したチェックボックスを事前に入力しようとしています。

アカウントを作成したときにセクターを再設定する方法について混乱しています。私は以下を試しました。

コントローラ:

$data['assigned_sectors'] = $this->info_model->getAssignedSectors();

foreach($data['assigned_sectors'] as $sector) 
    {
        $id_str = array(
            'ID' => $sector->sector_ID
        );
    }
    print_r($id_str);

以下は「$data['assigned_sectors']」の結果です

Array ( [0] => stdClass Object ( [agency_ID] => 2 [sector_ID] => 3 [ID] => 3 [sector] => Sunderland East ) [1] => stdClass Object ( [agency_ID] => 2 [sector_ID] => 4 [ID] => 4 [sector] => Sunderland North ) )

foreachチェックボックスhtmlに両方を追加しようとしましたが、うまくいきません

set_checkbox('sector[]', $data['assigned_sectors']->sector_ID) //not working
set_checkbox('sector[]', $id_str->ID) //not working

私はおそらく単純なものを見落としていますが、どんな助けでも大歓迎です。ありがとう!

アップデート:

$this->load->model('admin/info_model');
    $data['agency_sectors'] = $this->info_model->getAgencySectors($agency);

    $this->load->model('admin/agencies_model');
    $data['all_sectors'] = $this->agencies_model->getAgencySectors($agency);

    echo"<p id='sectors'><label for='sectors'>Sector</label></p>";
    echo"<div id='sector_list' style='float: left;width: 70%;'>";
    foreach($data['agency_sectors'] as $sector):
        foreach($data['all_sectors'] as $sectors):
        $selected_text = ($sector->sector_ID === $sectors->ID) 
           ? " checked='checked'" 
             : '' ;
    echo"<p class='service'><span>$sectors->sector</span><input type='checkbox' class='sector-list' name='sector[]' value='$sectors->ID' " . $selected_text . "/></p>";
        endforeach;
    endforeach;
    echo"</div>";

7 つのうち 2 つの機関セクターが選択された場合、リストが 2 回複製され、3 つの結果についても同様です。

4

2 に答える 2