我在数据库中有两个表:一个类表和另一个学生。 然后,我想在一次小验证后添加一名学生。 所以我有一个名为&#34的按钮;添加学生"在类的索引中,当我首先单击此boutton时,我想检查键盘输入的类的数量与数据库中找到的其他数字。 如果它存在,则检索该类的id,以便在添加student的其他视图中传递错误消息并保留在同一视图中。
我尝试做了所有正确的代码,但仍然显示一条错误消息,说明该号码与我提出的号码不相同。
控制器中的:
public function admin_verif_show() {
$this->set('title_for_layout', __('verification'));
$this->Class->recursive = 0;
//***************all number class in data base************//
$nums= $this->Class->find('list', array(
'fields' => array(
'Class.num',
),
));
//*******************************************************//
if (!empty($this->request->data)) {
$num= $this->request->data['Class']['num'];
foreach ($nums as $nu) {
if ( $num == $nu) {
$id= $this->request->data['Class']['id'];
$this->redirect(array('controller'=>'students','action' => 'add',$id));
}else{
$this->Session->setFlash(__('le num n"est pas identique, essayer une autre fois'), 'default', array('class' => 'error'));
$this->redirect(array('action' => 'verif_show'));
}
}
}
}
答案 0 :(得分:0)
你试过调试吗?
$num= $this->request->data['Class']['num'];
debug($num);
debug($nums);
die();
如果不知道变量中的什么,就很难回答这个问题......
或许$ num只是不在$ nums?
也许$ num是一个字符串而$ nums是整数?
所以你必须提供至少调试信息,有人可以帮助你。
答案 1 :(得分:0)
从外观上看,您可以大大简化代码。似乎没有理由循环所有类。相反,如果某人提交了一个号码,只需检查数据库中是否存在该号码: -
public function admin_verif_show() {
$this->set('title_for_layout', __('verification'));
$this->Class->recursive = 0;
if (!empty($this->request->data['Class']['num'])) {
if ($this->Class->findByNum($this->request->data['Class']['num'])) {
$id = $this->request->data['Class']['id'];
return $this->redirect(array('controller' => 'students', 'action' => 'add', $id));
} else {
$this->Session->setFlash(__('le num n"est pas identique, essayer une autre fois'), 'default', array('class' => 'error'));
return $this->redirect(array('action' => 'verif_show'));
}
}
return;
}
此外,您应该记得在进行重定向后返回。这是为了确保重定向后的代码不会运行(主要用于使用测试时,但无论如何都是好的做法)。