0

我有一个包含 39 个复选框的页面。我的示例中的复选框类似于表单名称。我的问题是,对于 39 个复选框,我需要一种方法来存储给学生的表格。目前我设置的是每个表格都用逗号和引号分隔,以便在运行报告时管理员可以使用 CSV 下载选项和学生收到的表格组。这可行,但非常初级,并且还会产生不好的副作用,即在每个表单名称之前都存在 / 因为 mysql 会转义引号。

这是我目前拥有的:

 if ($this->input->post('action') == 'additional') {
     $givenforms = "";

     foreach ($this->input->post('form') as $forms) {
      $givenforms .= ', "' . $forms . '"';
        }
        $comments = 'This student was given' . $givenforms . '';

        if (($this->input->post('action') == 'additional') && ($this->input->post('other') == 'OTHER')) {
            $comments .= ', '.$this->input->post('counselorcomments');
        }
 }

再次在数据库中,结果将如下所示:这个学生被赋予了“xyz”、“eoe”、“wwo”、

几乎我只需要关于如何存储给学生的表格的想法,如果需要,如果所有 39 表格都给了学生,我需要存储给学生的所有表格以供以后报告。(即使不会给出 39 个表格)

4

2 回答 2

1

听起来您需要在学生和表格之间建立一个:多的关系。可能想对该主题进行一些研究。

我认为将逗号分隔的值存储在数据库的单个字段中通常是一种非常糟糕的形式,如果你这样做,它几乎总是表明你需要(至少)另一个表。

于 2013-04-08T03:28:37.940 回答
0

用 CSV 重构我所拥有的一两个小时得到了很好的回报。我对已知信息的报告/分析可能性以及我现在存储它的方式感到非常满意。

为其他想要做这样的事情的人提供几段代码!:

 if ($this->form_validation->run() == FALSE) { // This stuff is self explanatory RT(F)M if you will :) 
     $this->cont();
 } else {
     $this->load->model('queue_model'); // Load model

     $session = $this->uri->segment(3); // Gets the session id 
     $counselor = $this->session->userdata('username'); // I get counsellor names from the username they log in by joining between the two tables

      if ($this->input->post('action') == 'Additional') { // If additional forms is checked do the following 

      foreach ($this->input->post('form') as $form_id) { // for each form submitted take the session Id from above and insert it into the table forms with the foreach $form_id variable
          $this->queue_model->forms($session, $form_id);
      }

      if (($this->input->post('action') == 'Additional') && ($this->input->post('addother') == 'addotherinfo')) { // If forms were submitted and a addotherinfo was [checked] add comments 
          $comments = ''.$this->input->post('action'). ' - '.$this->input->post('counselorcomments').'';
      } else {
          $comments = $this->input->post('action');
      }
}  

还添加表单表(带有 ID 和表单名称)允许我动态地制作复选框,如下所示:

<?php 
        foreach ($elevennine as $form) { ?>
              <label id="form"><input type="checkbox" name="form[]" value="<?php echo $form['form_id'] ?>" <?php echo set_checkbox('form', $form['form_id']) ?>><?php echo $form['forms'] ?></label>
<?php   } 
?>

感谢所有伟大的想法!

于 2013-04-09T00:31:48.793 回答