我正在为Cakephp写一个简单的民意调查。我创建了表poll和poll_votes。民意调查包含7列:id,question,numberofanswers,answer1,answer2,answer3,answer4。 PollVote包含4:id,poll_id,ip,vote。如果这样做,我可能会添加一个名为PollAnswers的新表作为摆脱答案限制的方法。
不幸的是,我制作的视图会导致安全性错误。我更喜欢使用form-helper作为一个整体,但我还没弄明白,因为我需要具有id为1到4的多个选项的单选按钮,但是将answer1表示为answer4。
[daweb@directadmin01 public_html]$ cat models/poll.php
<?php
class Poll extends AppModel {
var $name = 'Poll';
var $displayField = 'question';
var $hasMany = array(
'PollVote' => array(
'className' => 'PollVote',
'foreignKey' => 'poll_id',
'dependent' => false
)
);
}
?>
[daweb@directadmin01 public_html]$ cat models/poll_vote.php
<?php
class PollVote extends AppModel {
var $name = 'PollVote';
var $belongsTo = array(
'Poll' => array(
'className' => 'Poll',
'foreignKey' => 'poll_id'
)
);
}
?>
[daweb@directadmin01 public_html]$ cat views/polls/view.ctp
<h2><?=$polls[0]['Poll']['question']?></h2>
<?php
echo $this->Form->create('Poll');
?>
<br /><p>
<select name="PollName" id="PollFieldId">
<option value="0"><?=$polls[0]['Poll']['answer1']?></option>
<option value="1"><?=$polls[0]['Poll']['answer2']?></option>
<option value="2"><?=$polls[0]['Poll']['answer3']?></option>
<option value="3"><?=$polls[0]['Poll']['answer4']?></option>
</select>
<?php
echo $this->Form->input('id', array('type' => 'hidden'));
echo $this->Form->end('Submit');
?>
</p>
[daweb@directadmin01 public_html]$
老实说,我不确定我是否正在使用正确的设计创建民意调查应用程序,因此欢迎提供一般性建议。不幸的是,我无法找到用Cakephp编写的民意调查示例来帮助我。
答案 0 :(得分:0)
您的设计很好,只要您每次投票只需要4个问题。将numberofanswers更改为pollVote_count并使用counterCache 看一下Database design for a survey,虽然这可能对你的目的来说太过分了。
对于无线电输入,应该在pollVotes控制器/添加操作中,而不是在民意调查/视图中:
echo $this->Form->create('PollVote'); echo $this->Form->input('poll_id'); echo $this->Form->input('vote',array('type' => 'radio','options' => $polls[0]['Poll'])); echo $this->Form->end('Submit');