0

現在、Web サイトのビューを構築しており、ウィジェット CActiveForm をビューとして使用しています。ただし、SQL クエリの結果など、データベースの内容の一部を表示する必要があります。では、目標を達成するにはどうすればよいでしょうか。ありがとうございました!

私のコードの一部を以下に示します。

<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 -->

これは私のコードです。そして、データベースの内容をフォームに追加する必要があります。内容は以下の通りです。

    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');
        }
    }

このコードはコントローラーにあります。

4

1 に答える 1

1

あなたのコードはあまりにも乱雑で、いくつかの場所で無効に見えます。まず、コントローラーで CDbConnection を作成する必要はありません。構成で資格情報を指定できます。データベースからデータを読み取るには、ActiveRecordを使用できます。

$paper = Paper::model()->findByAttributes(array('PaperNo' => $paperid));

そして、あなたのhtmlで:

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

少しでもお役に立てば幸いです。

于 2012-05-21T10:08:02.707 に答える