2017-12-19 20 views
0

` 문의 양식은 php에서 mysql 데이터베이스의 한 셀에 하나의 이름으로 여러 확인란을 저장하는 방법?

<div class="row"> 
     <label class="col-md-3" for="zones">Zones in Bangalore</label> 
     <div class="checkboxes"> 
     <p id="zones"><input type="checkbox" name="zones[]" class="zones">CBD 
      <input type="checkbox" name="zones[]" class="zones">North 
      <input type="checkbox" name="zones[]" class="zones">South 
      <input type="checkbox" name="zones[]" class="zones">East 
      <input type="checkbox" name="zones[]" class="zones">West</p> 
     </div> 
    </div> 

    <div class="row"> 
     <label class="col-md-3" for="propertytype">Property Type</label> 
     <div class="checkboxes"> 
      <p id="propertytype"> 
      <input type="checkbox" name="propertytype[]" class="propertytype">Apartment &nbsp; 

      <input type="checkbox" name="propertytype[]" class="propertytype">Raw House &nbsp; 

      <input type="checkbox" name="propertytype[]" class="propertytype">Villa &nbsp; 
      <input type="checkbox" name="propertytype[]" class="propertytype">Residential Plot</p> 
     </div> 

     </div> 

$('.zones').on('change', function() { 
     $('.zones').not(this).prop('checked', false); 
     }); 
     $('.propertytype').on('change', function() { 
     $('.propertytype').not(this).prop('checked', false); 
     }); 

이 스크립트 코드는 하나의 확인란을 선택하는 코드입니다. 이 확인란의 값을 저장하는 방법을 알아낼 수 없습니다. 이 데이터를 저장하는 동안 오류가 발생했습니다. 조건을 확인했지만 코드를 가져올 수 없습니다. 내 프로젝트에서 4 가지 더 유사한 체크 박스가 있고 모든 데이터를 단일 데이터베이스 테이블에 저장해야합니다. 문제 해결을 도와주세요. 컨트롤러에서

:

$numreg= '/^[7-9]{1}[0-9]{9}$/'; 
    $this->load->helper(array('form', 'url')); 
    $this->load->library('form_validation'); 
if(isset($_POST['submit'])){ 
     $this->form_validation->set_rules('zones[]', 'zones of Bangalore', 'required'); 
     $this->form_validation->set_rules('propertytype[]', 'Property type', 'required'); 

     } 

    if ($this->form_validation->run() == TRUE) 
      { 
      $data_to_store = array(

       'zones'=> $_POST['zones'], 
       'propertytype'=> $_POST['propertytype'] 

     ); 

     $this->db->insert('enquiry', $data_to_store); 
    }` 
+0

표시되는 오류는 무엇입니까? –

+0

PHP는 오류가 심각도가 발생했습니다 : 메시지에 주목 : 배열을 문자열 변환에 파일 이름 : mysqli/mysqli_driver.php 줄 수 : 당신은 내가 유일한 선택하고 한 번에 vinothini 답 : – mahi

+1

하나의 체크 박스 –

답변

0

당신은 당신의 체크 박스 값을 직렬화 할 수 있으며 테이블에 저장할 수 있습니다.

아래처럼 :

$data_to_store = array(

      'zones'=> serialize($_POST['zones']), 
      'propertytype'=> serialize($_POST['propertytype']) 

    ); 

당신은 다시 PHP 함수입니다 unserialize()하여 datas 문자열을 비 일렬 화 할 수 있습니다.

0

두 배열의 길이가 동일한 경우 db에 저장된 각 데이터에 대해 foreach를 사용할 수 있습니다.

$data_to_store = array(
    'zones' => $this->input->post('zones'), 
    'propertytype' => $this->input->post('propertytype') 
); 
$data = array(); 
foreach($data_to_store['zones'] as $keyZone => $valZone) 
{ 
    $data['zone'] = $valZone; 
    $data['propertytype'] = $this->input->post('propertytype')[$keyZone]; 
    $this->db->insert('enquiry', $data); 
} 
+0

감사합니다. 그러나 배열은 크기가 다르다. – mahi

0

저장하려면 체크 박스 값을 지정해야합니다. 그렇지 않으면 컨텍스트없이 배열이 반환됩니다.

<p id="zones"> 
    <input type="checkbox" name="zones[]" value="CBD" class="zones">CBD 
    <input type="checkbox" name="zones[]" value="North" class="zones">North 
    <input type="checkbox" name="zones[]" value="South" class="zones">South 
    <input type="checkbox" name="zones[]" value="East" class="zones">East 
    <input type="checkbox" name="zones[]" value="West" class="zones">West 
</p> 

당신이 세미콜론을 만들 내파()를 사용할 수있는 하나 개의 테이블 필드의 모든 영역을 저장하려면

목록을 분리했다.

$myZones = implode(';' , $_POST['zones']); 

print_r($myZones); // North;East;West 

propertytype도 마찬가지입니다.

편집 : 배열 당 하나의 체크 박스 만 제공한다는 질문을 다시 읽으십시오. 어쨌든 implode()는 배열 요소가 하나 밖에 없다면 세미콜론을 삽입하지 않기 때문에 여전히 작동합니다.

if ($this->form_validation->run() == TRUE) { 
     $data_to_store = array(

      'zones'=> implode(';', $_POST['zones']), // South 
      'propertytype'=> implode(';', $_POST['propertytype']) // Apartment 
    ); 

    $this->db->insert('enquiry', $data_to_store); 
}; 

편집 2 : DB insert 때문에 문자열 변환에 배열 날려 경우, 사용로 json_encode 먼저 배열로 변환합니다.

$data_to_store = array('zones' => 'South', 'propertytype' => 'Apartment'); 

$db_value = json_encode($data_to_store); 

print_r($db_value); // {"zones":"South","propertytype":"Apartment"} 

$this->db->insert('enquiry', $db_value);