как сохранить значение нескольких полей ввода в mysql с помощью codeigniter

У меня есть форма с 6 полями с одинаковым именемLike - feature[],

Я хочу сохранить значение нескольких полей ввода в столбце mysql 1 в формате JSON:

<form method="post" action="<?php echo base_url();?>product/save/">
<input type="text" class="form-control" name="feature[]" placeholder="fetaure 1">
<input type="text" class="form-control" name="feature[]" placeholder="fetaure 2">
<input type="text" class="form-control" name="feature[]" placeholder="fetaure 3">
<input type="text" class="form-control" name="feature[]" placeholder="fetaure 4">
<?php ?>

У меня есть функция столбца в таблице mysql, я хочу сохранить значение поля ввода в столбце функции как данные json. Я использую codeigniter 3.


person Vikas    schedule 10.08.2016    source источник
comment
$data = implode( ,$this-›input-›post('feature'));   -  person Giri Annamalai M    schedule 10.08.2016


Ответы (4)


бывший для codeignitor

function save()
{
  $feature = $this->input->post('feature');
  $json = json_encode($feature);
  $this->Your_model_Name->save($json);
}
person Vishnu Bhadoriya    schedule 10.08.2016

Вам просто нужно получить INPUTS на основе метода формы. Сохраните входные данные в переменной на основе метода post/get формы.

ПУБЛИКАЦИЯ:

$features=$_POST["feature"];

ПОЛУЧИТЬ:

$features=$_GET["feature"];

$features будет массивом PHP, и вы можете использовать json_encode() для кодирования массива PHP в строку JSON. Как это,

$features_json=json_encode($features);

Теперь используйте эту переменную $features_json, чтобы сохранить строку JSON в базе данных MySQL.

Ваша строка JSON после кодирования будет выглядеть так: http://json-parser.com/67c07feb

person Alok Patel    schedule 10.08.2016

Поскольку это массив, вам нужен цикл foreach. ваша функция должна выглядеть так

Контроллер

function save()
{
    foreach($this->input->post('feature') as $f)
    {
       $f = trim($f);
       $data = json_encode($f);
       $this->YOUR_MODEL->insert_to_table($data);
    }
}

Модель

function insert_to_table($data)
{
    $this->db->insert('table_name',$data);
}

Таким образом, вы публикуете каждый ввод, который у вас есть.

надеюсь это поможет

person Lorenzo    schedule 10.08.2016
comment
нужно обрезать данные? - person Vikas; 10.08.2016
comment
Обрезать пост? Я думаю, если вы хотите удалить пробелы, которые всегда нужны. добавлю отделку - person Lorenzo; 10.08.2016
comment
Спасибо за ответ. также нужен xss_clean? - person Vikas; 10.08.2016
comment
Вы можете делать с данными все, что хотите, чтобы обезопасить их, это только основа. Если я помог вам, вы все равно можете помочь мне, проголосовав за мой пост. Получайте удовольствие от кодирования! - person Lorenzo; 10.08.2016
comment
обязательно проголосую. не могли бы вы помочь мне с этим: повторяющиеся записи со строкой запроса страницы"> stackoverflow.com/questions/38814116/ - person Vikas; 10.08.2016
comment
@ Викас, ты еще этого не сделал. ха :D, В любом случае, я посмотрю на ваш следующий вопрос и отвечу, как смогу. - person Lorenzo; 11.08.2016

контроллер (продукт)

function save() {
    $features = $this->input->post('feature');
    $feature_json = json_encode($features);
    //send to model
    $this->load->model('your_model');
    $this->your_model->insert($feature_json);
}

модель

function insert($feature_json) {
     $data = array(
          'features' => $feature_json
     );
     $this->db->insert($data);
}

Обновить

Добавьте обрезку и чистку xss с помощью проверки формы

$this->form_validation->set_rules('feature[]',"Feature", "trim|xss_clean");
person noufalcep    schedule 10.08.2016
comment
нужно ли обрезать $data? - person Vikas; 10.08.2016
comment
Вы можете использовать trim и xss_clean с faorm проверкой codeigniter. я обновил свой ответ - person noufalcep; 11.08.2016