如何使用cakephp将数据存储在数据库中?

时间:2014-01-29 06:45:21

标签: cakephp

这是我的代码:

TimesheetsController.php:

class TimesheetsController extends AppController {

public function add()
{
  if (!empty($this->data)) {
  if ($this->Timesheet->save($this->data)) {
   $this->Session->setFlash('Your attendance has been saved.');
   $this->redirect(array('action' => 'index'));
   }
}
}
}

这是我的观看代码

add.ctp:

<table id="completed">
$this->Form->create('Timesheets');
    <th>S.No</th>
    <th>Name</th>
    <th>1</th>
    <th>2</th>
    <th>3</th>
    <th>4</th>
    <th>5</th>
    <th>6</th>
    <th>7</th>
    <th>8</th>
    <th>9</th>
    <th>10</th>
    <th>11</th>
    <th>12</th>
    <th>13</th>
    <th>14</th>
    <th>15</th>
    <th>16</th>
    <th>17</th>
    <th>18</th>
    <th>19</th>
    <th>20</th>
    <th>21</th>
    <th>22</th>
    <th>23</th>
    <th>24</th>
    <th>25</th>
    <th>26</th>
    <th>27</th>
    <th>28</th>
    <th>29</th>
    <th>30</th>
    <th>31</th>
echo '1'
$this->Form->input('id',array('class'=>'attendance','type'=>'hidden','label'=>false));
echo 'Karthikeyan';
$this->Form->input('1',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('2',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('3',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('4',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('5',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('6',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('7',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('8',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('9',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('10',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('11',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('12',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('13',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('14',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('15',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('16',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('17',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('18',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('19',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('20',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('21',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('22',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('23',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('24',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('25',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('26',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('27',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('28',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('29',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('30',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->input('31',array('class'=>'attendance','type'=>'text','label'=>false));
$this->Form->end('Save Attendance');
</table>

2 个答案:

答案 0 :(得分:0)

说实话,很难缩小代码中的具体问题,有几个基本错误可能会让你感到困惑。这里有一些要清理的东西,看看它是否有帮助:

  • 你正在混合html和php。如果你使用的是php标签,这很好,但你不是。每个php实例都应该包含<?php?>
  • 你在至少一个我看到的回声上错过了终结者。将该分号添加到末尾(;
  • 您的HTML结构非常混乱。我打赌你错过了所有这些输入的<td>标签。

我建议您在转移到框架之前花一点时间浏览HTML和PHP的常规。一旦掌握了它们,请查看CakePHP教程,它们可以帮助您掌握框架。

一些有用的链接:


所有人都表示,无论您是否遵循我的建议,在对代码进行上述修复后,使用修订后的代码更新您的问题,并且您可以提供有关问题的任何错误或有用信息,以及我会适当地修改我的答案。

答案 1 :(得分:0)

Use echo $this->Form->input('Modelname.0.fieldname');

例如:

$this->Form->input('Timesheet.1.fieldname',
 array('class'=>'attendance','type'=>'text','label'=>false)); 

如果您更改示例中显示的输入字段,那么在您的控制器操作中,您将获得$ this-&gt;数据

   'Timesheet' => array(
    (int) 0 => array(
        'fieldname' => Field Value
    ),
    (int) 1 => array(
        'fieldname' => Field Value
    ),
    so on...
)

之后你必须修改你的控制器动作,如下所示:

 public function add(){
      if (!empty($this->data)) {
        if ($this->Timesheet->saveAll($this->data)) {
           $this->Session->setFlash('Your attendance has been saved.');
           $this->redirect(array('action' => 'index'));
        }
      }
 }

有关更多说明,请参阅http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#field-naming-conventions

希望这会对你有帮助!