0

$ category変数にresult_array()を返したので、ドロップダウンメニューを作成します。ただし、変数を直接使用すると、配列のすべての要素が表示されます。ただし、名前を表示し、そのIDを値として保持したいだけです。どうすればいいのですか?

$options = $categories;
echo form_dropdown('category', $options);

こんなもの欲しい

<select name="category">
<option value="1"> ABC </option>
..... 
<option value="10"> NNNC </option>
</select>
4

4 に答える 4

5

$options 配列のキーは、データベース行の実際の ID ではありません。

したがって、 $options 配列は次のようになります。

Array(
'0' => array('id'=>'10', 'value'=>'someval1'),
'1' => array('id'=>'22', 'value'=>'someval2'),
'2' => array('id'=>'36', 'value'=>'someval3'))

これを確認するには、print_r($options);echo 呼び出しの前に置きます。

実際のドロップダウンを作成するには、次のようなヘルパー関数を作成する必要があります。

function my_form_dropdown($name, $result_array){
    $options = array();
    foreach ($result_array as $key => $value){
        $options[$value['id']] = $value['value'];
    }
    return form_dropdown($name, $options);
}
于 2013-01-25T00:49:13.007 に答える
1

返されたすべての行を$categoriesの配列として取得していたので

したがって、$ categoryのprint_r()は私に出力を与えました

Array
(
    [0] => Array
        (
            [id] => 24
            [name] => First
        )

    [1] => Array
        (
            [id] => 25
            [name] => Second
        )

    [2] => Array
        (
            [id] => 26
            [name] => third
        )

)

しかし、ドロップダウンを機能させるには、以下のコードのようなものが必要でした

Array
(
    [24] => First
    [25] => Second
    [26] => third
)

だから私は以下のように私のコードを変更しなければなりませんでした

$options = array();
                    foreach ($categories as $category) {
                        $options[$category['id']] =  $category['name'];
                    }

                    echo form_dropdown('cat_id', $options);

したがって、生成されたHTMLは次のようになりました。これは私が望むマークアップでした。

<select name="category">
<option value="24"> First </option>
<option value="25"> Second </option>
<option value="26"> Third </option>
</select>

そしてそれはうまくいきました。答えてくれてありがとう、でも2日間頭をかいて、やっとやった。uが初心者の場合、難しい場合があります。

于 2013-01-25T15:04:25.303 に答える
0

できるよ

$options = array(


    '1' => 'ABC',
    '2' => 'NNC'
);

echo form_dropdown('category', $options);

ここで、キーはドロップダウンの値になります

于 2013-01-25T00:44:37.383 に答える