首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在CActiveForm中显示数据库的内容?

如何在CActiveForm中显示数据库的内容?
EN

Stack Overflow用户
提问于 2012-05-20 13:22:43
回答 1查看 1K关注 0票数 0

现在我正在构建一个网站的视图,并且我使用小部件CActiveForm作为视图。但是,我需要显示数据库的一些内容,例如,SQL查询的结果。那么我应该做些什么来实现这个目标呢?谢谢!

下面提供了我的一些代码:

代码语言:javascript
复制
<div class="form">
<?php

$form=$this->beginWidget('CActiveForm', array(
    'id'=>'login-form',
    'enableClientValidation'=>true,
    'clientOptions'=>array(
        'validateOnSubmit'=>true,
    ),
));

?>

    <p class="note">Fields with <span class="required">*</span> are required.</p>


    <div class="row buttons">
        <?php echo CHtml::submitButton('Login'); ?>
    </div>

    <div class="row radiobuttons">
        <?php echo CHtml::radioButtonList(
            $Paper,
            'Q1No',
            array('A'=>'A','B'=>'B','C'=>'C','D'=>'D'),
            array('template'=>'<span class="radio">{input}{label}</span>','separator'=>'')); 
        ?>
    </div>

<?php $this->endWidget(); ?>
</div><!-- form -->

这是我的代码。并且我需要在表单中添加数据库的一些内容。具体内容如下:

代码语言:javascript
复制
    public function actionTaketest()
    {
        // Get the ID of the test paper from the URL ---ztm
        if(isset($_GET['paperid']))
        {
            $paperid=(int)$_GET['paperid'];
            $dsn = 'mysql:host=localhost;dbname=mydatabase';
            $username = 'root';
            $password = '000000';

            $connection=new CDbConnection($dsn,$username,$password);

            // establish connection. You may try...catch possible exceptions
            $connection->active=true;

            $rawData = Yii::app()->db->createCommand()
                ->select('*')
                ->from('Paper, Question') array(':PaperNo'=>$paperid))
                ->queryAll();

            $dataProvider=new CArrayDataProvider($rawData, array(
                'id'=>'PaperNo',
            ));


            $connection->active=false; // close connection


            $model=new LoginForm;
            $this->render('form',array('model'=>$model, 'dataProvider'=>$dataProvider));

        }
        else
        {
            // Deny illegal access to the page ---ztm
            throw new CHttpException(404,'invalid request');
        }
    }

这些代码在控制器中。

EN

Stack Overflow用户

发布于 2012-05-21 18:08:03

你的代码太乱了,在某些地方看起来是无效的。首先,您不需要在控制器中创建CDbConnection,您可以在配置中指定凭据。要从数据库中读取数据,可以使用ActiveRecord

代码语言:javascript
复制
$paper = Paper::model()->findByAttributes(array('PaperNo' => $paperid));

然后在你的html中:

代码语言:javascript
复制
echo CHtml::activeRadioButtonList(
        $paper,
        'Q1No',
        array('A'=>'A','B'=>'B','C'=>'C','D'=>'D'),
        array('template'=>'<span class="radio">{input}{label}</span>','separator'=>'')
);

我希望这会有一点帮助。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10670996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档