2017-02-08 3 views
1

В настоящее время я делаю проект. У меня есть флажок (где пользователь будет выбирать тип услуг, предоставляемых компанией). Когда я пытаюсь опубликовать выбранную службу (например, 2 службы отмечены) в моем контроллере, я получаю только одну услугу. Вопрос в том, как я могу получить несколько значений в моем флажке?Получить несколько значений checkbox в codeigniter

Примечание: Я также попытался использовать foreach внутри своего контроллера, я получаю некоторую ошибку, например, «Недопустимый аргумент, предоставленный foreach()».

Посмотреть

<label>Desired Service</label> <br> 
<?php foreach($services as $s):?> 
<label><input type="checkbox" name="service_name[]" value="<?= $s->service_name?>"><?= $s->service_name?></label> 
<br> 
<?php endforeach?> 

Контроллер

$this->form_validation->set_error_delimiters('<div class="alert alert-danger" role="alert">', '</div>'); 
    $this->form_validation->set_rules('full_name', 'Fullname', 'required'); 
    $this->form_validation->set_rules('email', 'Email', 'required'); 
    $this->form_validation->set_rules('contact', 'Contact', 'required'); 
    $this->form_validation->set_rules('date', 'Date', 'required'); 
    $this->form_validation->set_rules('address', 'Address', 'required'); 
    $this->form_validation->set_rules('zip_code', 'Zip Code', 'numeric|required'); 
    $this->form_validation->set_rules('province', 'Province', 'required'); 
    $this->form_validation->set_rules('date', 'Date', 'required'); 
    $this->form_validation->set_rules('service_name', 'Service', 'required'); 
    if ($this->form_validation->run() == FALSE) { 
     $this->index(); 
    } 
    else { 
     $service_name = implode(', ', $_POST['service_name']); 
     $event = array(
     'full_name' => $this->input->post('full_name'), 
     'email' => $this->input->post('email'), 
     'contact' => $this->input->post('contact'), 
     'address' => $this->input->post('address'), 
     'zip_code' => $this->input->post('zip_code'), 
     'state_province' => $this->input->post('province'), 
     'date' => $this->input->post('date'), 
     'service' => $service_name 

     ); 
     $this->EventModel->add_event($event); 
     echo "<script> 
     window.alert('Your Desired Date is being Proccessed!'); 
     location.href = '".site_url('/')."'; 
     </script>"; 
    } 
+0

Там есть пара вариантов here.http: //stackoverflow.com/questions/10655355/getting-a-checkbox- array-value-from-post – ourmandave

+0

не использовать foreach на контроллере. Отправьте массив данных в представление, а затем запустите службы. –

ответ

3

Изменение от

$service_name = $_POST['service_name']; 
foreach($service_name as $key =>$value) 
{ 
    echo $value; 
} 
die; 

в

$service_name = implode(',',$_POST['service_name']); 
echo $service_name; 
+0

@angel: ответ предоставлен –

+0

Sir @dhruv jadia, можно ли сделать мой $ this-> form_validation-> set_rules в массив? – Angel

+0

@angel да. ссылка: http://stackoverflow.com/a/17773575/3635079. –

1

Try:

$service_name = $this->input->post('service_name'); 

for($i=0;$i < count($service_name);$i++){ 
    echo $service_name[$i]; 
} 
2

Я надеюсь, что это решит вашу проблему

if (!empty($this->input->post('service_name'))) { 
     foreach ($this->input->post('service_name') as $key => $val) { 
      $data[] = array(
      'service_name' => $_POST['service_name'][$key] 
     ); 
} 
foreach ($data as $item) {  
     echo $item['service_name']; 
} 
+0

сэр, возможно ли сделать мой $ this-> form_validation-> set_rules в массив? – Angel