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');
        }
 }

再びデータベースでは、結果は次のようになります。

ほとんどの場合、学生に与えられたフォームを保存する方法についてのアイデアが必要です。必要に応じて、39 のフォームすべてが学生に与えられた場合、後で報告するために学生に与えられたすべてのフォームを保存する必要があります。(ただし、39 フォームは与えられません)

4

2 に答える 2

0

CSV を使って 1 ~ 2 時間のリファクタリングを行ったところ、かなりの成果が得られました。私は、既知の情報のレポート/分析の可能性と、それを現在保存している方法に非常に満足しています.

このようなことを検討している他の人のために、いくつかのコード スニペットを用意してください。:

 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 に答える