2012-05-20 46 views
0

現在我正在構建網站的視圖,並使用窗口小部件CActiveForm作爲視圖。但是,我需要顯示數據庫的一些內容,例如SQL查詢的結果。那麼我應該怎麼做才能達到目標?謝謝!我應該如何在CActiveForm中顯示數據庫的內容?

我的一些代碼,提供如下:

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

此代碼位於控制器中。

+0

CActiveForm是一個html窗體的構件。爲什麼你想用它來查看?你的問題不清楚,請提供一些代碼片段。 –

+0

在自動生成的login.php中,該小部件用於查看,這就是爲什麼我想在視圖中使用它的原因。我寫了一個php文件,如下所示:我非常抱歉,我現在正在將代碼粘貼到這裏。我會在提供代碼之前先去看看幫助。 – Timothy

+0

你想展示哪些數據庫內容?它與表格中收集的數據有什麼關係?你的問題仍然不清楚 –

回答

1

您的代碼太亂了,在某些地方看起來無效。首先,您不需要在控制器中創建CDbConnection,您可以在config中指定憑據。要讀取數據庫中的數據可以使用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'=>'') 
); 

我希望它有助於一點點。

+0

非常感謝,我會嘗試使用ActiveRecord來查看它是否有效。對不起,不讓代​​碼可以理解。正如我所說的,當我試圖修復代碼時,我對代碼進行了一些修改,但是我沒有完成調試,並且程序中可能存在一些錯誤。 – Timothy

+0

但我仍然不知道如果我要展示這些東西,該怎麼辦? – Timothy

+0

你是什麼意思「顯示出來的東西」。如果您需要打印模型的某一列,只需簡單地'echo $ paper-> PaperNo'或'echo $ paper-> Q1No'。 –

相關問題