0

現在、次のコードを試しています。

 $sql = $db->query("select id,username,fullname from userss ORDER BY fullname ASC");
        while($row = $sql->fetch()) {
            $username[] = $row['username'];
        }
        $form = new Zend_Form();
        $form->setAction('/index/change')
             ->setMethod('post');

        $element = new Zend_Form_Element_Select('foo', array(
            'multiOptions' => array(
                $username,
                )));
        $form->addElement($element);
        echo $form;

望ましい結果は、ユーザー名がSQL に由来し、氏名がsqlに由来<select>する要素を示すフォームです。<option value='username'>Full Name</option>usernamefullname

今、それは示しています<option value='0'>Full Name</option>

基本的にユーザー名=>フルネームになるように、配列の最初の部分を指定する方法がよくわかりません

助言がありますか?ありがとう!

4

2 に答える 2

3

でオプションの値を設定するにはZend_Form_Element_Select、配列キーで値を定義し、配列値でユーザーに表示される選択内のテキストを定義します。

これを試して:

$element = new Zend_Form_Element_Select('foo', array(
    'multiOptions' => array(
        $username  => $fullname,
        $username2 => $fullname2,
)));

配列に文字列キーがなかったため、0 が表示されていました。デフォルトでは、数値でインデックス付けされた配列キーを値として使用していました。

あなたのコードを考えると、これを行うでしょう:

$username = array();

while($row = $sql->fetch()) {
    $username[$row['username']] = $row['fullname'];
}
于 2012-06-10T05:44:22.903 に答える
2

select 要素への入力を容易にするために、ZF は fetchPairs を提供します。

     $sql = "select username,fullname from userss ORDER BY fullname ASC";
      $db =  Zend_Db_Table::getDefaultAdapter();
     $select = new Zend_Form_Element_Select('foo');
     $select->setMultiOptions($db->fetchPairs($sql));

この方法により、自分でデータ (for、while ループ) を反復する必要がなくなります。

于 2012-06-10T06:27:54.397 に答える