我有一个以qID为主键的数据库表工作表(qID varchar(5),answer varchar(50),wsheetid varchar(5))。一个工作表有很多问题。
我想获取wsheetid = 1的所有问题并将其显示为表单,以便用户可以输入答案。 我想用数据库中的答案列检查用户输入的ans。
我怎么能在Yii中这样做。
尝试谷歌和yii指南,无法找到任何解决方案。任何建议都会有所帮助。
更新
我有以下视图,我需要将属性放入数组并显示表单。有一个更好的方法吗?对于activeTextArea,因为模型有数据,文本区域包含数据库中的数据,但我需要一个空白文本区域。
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'wdetails-form',
'enableAjaxValidation'=>false,
)); ?>
<?php echo CHtml::beginForm(); ?>
<?php foreach($questions as $i=>$questions): ?>
<?php $array = $questions->getAttributes();
echo CHtml::activeLabel($questions,"[$i]question",array('label'=>"$array[question]"));
echo CHtml::activeTextArea($questions,"[$i]answer",array('id'=>"$array[question_ID]"));
endforeach;
?>
</br>
<?php echo CHtml::submitButton('Submit'); ?>
<?php echo CHtml::endForm(); ?>
<?php $this->endWidget(); ?>
</div>
并且在控制器中,我需要插入从上面的表单中获得的数据并插入到不同的表中(worksheetResults)。我需要将数据放入数组并使用Yii DAO,还是有更好的方法来实现这一点。
table worksheetResults(username,worksheetID,question_ID,submitted_ans)
答案 0 :(得分:1)
我认为你应该有一个Worksheet模型,一个Worksheet控制器和一个Worksheet视图。
以下是控制器部分的骨架:
class WorksheetController extends CController
{
public function actionQuestions()
{
$criteria = new CDbCriteria;
$criteria->addCondition('(wsheetid = :id)');
$criteria->params[':id'] = '1';
$questions = Worksheet::model()->findAll($criteria);
$this->render('questions_form', array('questions'=>$questions));
}
public function actionAnswers()
{
//check the contents of $_POST['Worksheet']
}
}
答案 1 :(得分:0)
您是否使用Gii创建脚手架?这样可以获得模型和CRUD文件,然后您可以自定义外观和功能。如果您的数据模型是好的,这将节省您大量的时间,即使您最终重做表单视图,您仍然可以使用Yii来创建和维护模型和控制器类。