2013-04-08 2 views
0

39 개의 확인란이있는 페이지가 있습니다. 이 예제의 확인란은 양식 이름과 비슷합니다. 내 문제는 39 개의 확인란을 통해 학생에게 주어진 양식을 저장하는 방법이 필요하다는 것입니다. 현재 내가 설정 한 것은 각 양식이 쉼표와 따옴표로 구분되어 보고서를 실행할 때 관리자가 CSV 다운로드 옵션을 사용하고 학생이받은 양식을 그룹화 할 수 있다는 것입니다. 이것은 작동하지만 매우 기초적이며 mysql이 따옴표를 이스케이프 처리하기 때문에 각 양식 이름 앞에 /가 존재할 때 나쁜 영향을 미친다. 양식에 대한 DB 코드를 설정하는 방법

내가 현재 가지고있는 것입니다 : 결과가 모양을 데이터베이스에 다시
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 개의 양식은 주어지지 않을지라도)

답변

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 } 
?> 

감사합니다!

1

학생들과 양식 사이에는 많은 관계가 필요합니다. 그 주제에 대해 조금 연구하고 싶을 수도 있습니다.

데이터베이스의 단일 필드에 쉼표로 구분 된 값을 저장하는 것이 일반적으로 좋지 않은 것으로 생각합니다. 그렇게하는 경우 거의 항상 다른 테이블이 필요하다는 신호입니다.

+0

단일 파일에서 쉼표로 구분 된 값을 사용하고 PHP로 배열을 작성하여 분해 한 것은 하나의 해결책이지만 jcorry는 불량한 설계라고 말했습니다. 여전히 해결책입니다. 앱의 유연성을 제한하고 다 대다 중간 표를 사용하는 것이 과잉이라고 판단하는 경우 –

+0

정말 절대적으로 그 디자인이 마음에 들지 않습니다. 단지 제 문제는 설정하는 방법이 아니라 (데이터베이스 스키마와 관계에 대해 잘 알고 있습니다.) 폼이있는 테이블을 설정할 때가 거의 있습니다. 1 - 39 학생에게 1-10 번 서식을 주면 학생 표에 어떻게 표시해야합니까? 그것이 나를 혼란스럽게합니다. 나는 같은 열과 행의 꽃밥 필드와 관련된 여러 개의 숫자 자릿수를 가져야하는 방법을 모른다. 나는이 문제를 더 깊이 조사 할 것이다! –

+0

양식과 학생 간의 연결을 다른 테이블, 즉 students_forms에 저장합니다. 해당 테이블 ID, student_id, form_id. 학생 양식마다 행이 있습니다. 해당 테이블에있는 학생들과 양식을 결합 할 수 있습니다. 이 기술은 데이터베이스 설계의 핵심 요소이기 때문에이 기술을 잘 알고 있어야합니다. – jcorry

관련 문제