Передача значений флажка в базу данных mysql с помощью Codeigniter

Я использую CodeIgniter и mySQL для создания формы флажка. Форма содержит 4 варианта; каждая опция имеет только один флажок; пользователи могут выбрать любую комбинацию опций. Я хочу сделать следующее:

1 — для каждого флажка используйте значение 1 (если флажок не установлен) или 2 (если флажок установлен) и передайте эти значения в базу данных (каждый флажок имеет собственное поле). Прямо сейчас, независимо от того, отмечены они или нет, флажки отправляют значение 0 в базу данных.

2 - После того, как пользователи обновят свои флажки, я хотел бы обновить базу данных, чтобы отразить новые значения. Прямо сейчас новая строка добавляется для каждого обновления флажков.

На данный момент у меня есть форма, которая отправляет значения флажков в базу данных, контроллер и модель):

Форма

<?php echo form_open('addFoo'); ?>
<input type="checkbox" name="foo1" value="" />
<input type="checkbox" name="foo2" value="" />
<input type="checkbox" name="foo3" value="" />
<input type="checkbox" name="foo4" value="" />
<?php echo form_submit('submit', 'Save Changes'); ?>
<?php echo form_close(); ?>

Контроллер

function addFoo()
{
    if ($this->input->post('submit')) {
        $id = $this->input->post('id');            
                $foo1 = $this->input->post('foo1');
                $foo2 = $this->input->post('foo2');
                $foo3  = $this->input->post('foo3');
                $foo4  = $this->input->post ('foo4');

    $this->load->model('foo_model');
    $this->foo_model->addFoo($id, $foo1, $foo2, $foo3, $foo4);
    }
}

Модель

function addFoo($id, $foo1, $foo2, $foo3, $foo4) {
        $data = array(
            'id' => $id,
            'foo1' => $foo1,
            'foo2' => $foo2,
            'foo3' => $foo3,
            'foo4' => $foo4
        );

        $this->db->insert('foo_table', $data);
    }

person chowwy    schedule 11.01.2012    source источник
comment
Оказывается, мой код работает нормально; была синтаксическая ошибка, которую я поймал.   -  person chowwy    schedule 25.01.2012


Ответы (3)


На вашем контроллере:

если вы хотите вставить новую запись для всех выбранных флажков:

foreach($this->input->post('foo') as $r)
{
 $data['fieldname']=$r;

 $this->model_name->insert($data);
}

если вы хотите вставить все выбранные значения флажка в разные поля в одной записи, тогда

foreach($this->input->post('foo') as $key=>$val)
    {
     $data['field'.$key]=$val;

    }
$this->model_name->insert($data);
person srbhbarot    schedule 11.01.2012

Что касается установки значений, флажок ничего не отправляет, если он не отмечен. Чтобы достичь желаемого, вам нужно сделать следующее:

<input type="checkbox" name="foo[]" value="1" />
<input type="checkbox" name="foo[]" value="2" />

Это отправит значение независимо от того, установлен флажок или нет.

person hmind    schedule 11.01.2012

используйте разные значения для каждого флажка и получите значение массива флажков и используйте его в своем контроллере print_r($this->input->post('foo'));, он будет печатать значения, выбранные пользователем

использовать вот так

<?php
    if (isset($_POST['submit'])){
        print_r($_POST['foo']);
    }
?>
<form action="" method="POST">
<input type="checkbox" name="foo[]" value="1">1<br>
<input type="checkbox" name="foo[]" value="2">2<br>
<input type="checkbox" name="foo[]" value="3">3<br>
<input type="checkbox" name="foo[]" value="4">4<br>
<input type="submit" value="submit" name="submit">
</form>
person Dau    schedule 11.01.2012