2012-10-17 2 views
2

입력 필드의 배열에서 데이터를 가져 와서 데이터베이스에 쓰려고합니다. 이전에 배열로 작업 해 본 적이 없지만 이것이 내가 가진 코드입니다. 그것은 단지 하나의 입력 값일 경우 내가 할 것이라고 생각합니다. 나는 이것이 틀렸다는 것을 알고 있지만 다음에 무엇을 시도해야할지 전혀 모른다. 어떤 아이디어? 감사. 같이 데이터베이스에 PHP 배열을 넣을 수 없습니다 물론CodeIgniter - 입력 배열을 데이터베이스에 쓰기

//view 
<input type="text" name="assignments[]"> 
<input type="text" name="hours[]"> 

<input type="text" name="assignments[]"> 
<input type="text" name="hours[]"> 

<input type="text" name="assignments[]"> 
<input type="text" name="hours[]"> 

<input type="text" name="assignments[]"> 
<input type="text" name="hours[]"> 

<input type="text" name="assignments[]"> 
<input type="text" name="hours[]"> 

//controller 
$assignments = $this->input->post('assignments', TRUE); 
$hours = $this->input->post('hours', TRUE); 

$this->load->model('create', 'create_model'); 
$this->create_model->create_projects($assignments, $hours); 

//model 
public function create_projects($assignments, $hours) { 

    $data = array(
     'assignments' => $assignments, 
     'hours' => $hours, 
     ); 
    $this->db->insert('projects', $data); 
} 
+0

데이터를 데이터베이스에 표시하는 방법에 따라 다릅니다. 예를 들어 직렬화하지 않으면 배열을 텍스트 필드에 저장할 수 없습니다 (이 경우 현재 수행중인 것으로 생각됩니다). –

답변

2

감사 답변을. 나를 위해 최선을 다한 일이 바로 이것이었습니다.

//controller 
$assignments = $this->input->post('assignments'); 
$hours = $this->input->post('hours'); 

$this->load->model('create', 'create_model'); 

foreach($assignments as $key => $n){ 
    $this->create_model->create_projects($n, $hours[$key]); 
} 
3

:

    :
    $data = array(
        'assignments' => $assignments, // this is an array 
        'hours'  => $hours,  // so is this 
    ); 
    $this->db->insert('projects', $data); 
    

    당신은 배열의 문자열 표현을 필요는 두 가지 옵션이 마음에 와서
  • serialize()
  • json_encode()

개인적으로 나는 독서에 대한 PHP에 의존하지 않는 한,로 json_encode를 선호 PHP 객체를 저장하는 데 유용 직렬화하지만 당신은 여기 필요가 없습니다

$data = array(
    'assignments' => json_encode($assignments), 
    'hours'  => json_encode($hours), 
); 
$this->db->insert('projects', $data); 

것은 그들이 귀하의 DB 필드가 TEXT 유형 확인 가변 길이 데이터를 저장할 수 있습니다. 나중에 데이터를 가져올 때, 예를 들어, 읽어 각 필드에 json_decode()을 실행하고 배열로 다시 설정해야합니다

$result = $this->db->get('projects')->result(); 
foreach ($result as $record) 
{ 
    $assignments = json_decode($record->assignments); 
    // Now $assignments is an array 
} 
+0

이것은 훌륭합니다. 그러나 나는 찾고자하는 결과가 각각의 할당 []과'hour []'을 테이블에 자체 행으로 가지고 있다고 생각합니다. 'assign []'배열 전체가 같은 테이블에 저장되어있는 것은 아닙니다. 나는'insert_batch'를 가지고 놀지 않고 놀았습니다. – user1738750

+0

그래, 그게 더 나은 해결책이 될거라 생각했지만 그 길로 가고 싶었는지 확실치 않았다. 어쩌면 루프에서 INSERT 쿼리를 실행하여 작동하는지 확인한 후 'insert_batch'로 돌아갈 지 확인하십시오. –

0

단순히 데이터베이스의 배열 데이터를 저장하기로 json_encode() 함수를 사용

json_encode(array('key' => 'value')) 

OR

json_encode($_P0ST['ARRAY']) 

OR CodeIgniter의 IN 포스트

json_encode($this->input->post('arraydata')); 
-1

- $ 능력 = $ this-> 입력 -> 포스트 ('기술 []'TRUE);

'기술'=>로 json_encode ($ 능력),

그것은 내 문제를 해결했다.

관련 문제