Ошибка: при обновлении данных с помощью codeigniter

Я создаю веб-сайт cms, у меня есть одна проблема, которую я пытаюсь исправить, но не решаю, пожалуйста, может ли кто-нибудь помочь мне в этом. Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь обновить свои записи, все загружается, кроме одной вещи, которая является опцией множественного выбора, если база данных содержит только одну опцию множественного выбора, которую он извлекает, но в случае, если их два или что-то еще больше, чем один в базе данных, он не извлекается. пожалуйста, может ли кто-нибудь помочь мне в этом, пожалуйста.

Ошибка, которую я получаю

A PHP Error was encountered Severity: Notice

Message: Array to string conversion

Filename: models/Contact_model.php

Line Number: 230

Backtrace:

File: C:\xampp\htdocs\CodeIgniter_try\application\models\Contact_model.php Line: 230 Function: _error_handler

File: C:\xampp\htdocs\CodeIgniter_try\application\controllers\Home.php Line: 444 Function: portfolio_update

File: C:\xampp\htdocs\CodeIgniter_try\index.php Line: 315 Function: require_once

Контроллер (Home.php)

    //Updating the Records 
    public function portfolio_update($id)
    {
        //$id=$this->input->get('id');
        $result['data']=$this->Contact_model->portfolio_byid($id);

        $this->form_validation->set_rules('title', 'Title', 'required');
        $this->form_validation->set_rules('type[]', 'Type');

        if ($this->form_validation->run() == FALSE)
        {
            $this->load->view('update_portfolio',$result);
        } 

        else 
        {
            $config['upload_path']   = './uploads/';
            $config['allowed_types'] = 'gif|jpg|png';
            $this->load->library('upload', $config);

            $title=$this->input->post('title');
            $type= $this->input->post('type');

            if ($this->upload->do_upload('filename'))
            {
                $fi= $this->upload->data('file_name');
                $file = ("uploads/".$result['data'][0]->filename);
                //delete the existing file if needed
                if (file_exists($file)) {
                    unlink($file);
                }
            }

            else
            {
                $fi= $result['data'][0]->filename;
            }
            $this->Contact_model->portfolio_update($title,$type,$fi,$id);
            echo 'Successfully updated your record';
            //exit();
        } 
    }

Модель (Contact_model.php)

    //Updatng the record
    function portfolio_update($title,$type,$fi,$id)
    {
        $query=$this->db->query("update portfolio1 SET first_content='$title',type='$type',filename='$fi' where ID='".$id."'");
    }

просмотр (update_portfolio.php)

    <body>
     <?php
      $i=1;
      foreach($data as $row)
      {
      ?>
        <form method = "post" enctype = "multipart/form-data">

                <div class = "container">

                    <h5 style = "color:#ff1a1a">Select Section</h5>
                    <?php   $array = array('Creative'=>'Creative','Photography'=>'Photography','Development'=>'Development');
                            echo form_multiselect('type[]',$array,$row->type);
                    ?>
                    <span class = "text-danger"><?php echo form_error("type");?></span><br><br>

                    <br><input type = "submit" name = "update" class = "btn btn-success" value = "Update Records"/>

                </div>   
        </form>
        <?php } ?>
    </body>

установите $type = implode(',',$type) перед запросом в вашей модели, затем запустите запрос, поскольку ваша переменная $ type представляет собой массив, который вы должны преобразовать в строку, или просто измените логику ur, чтобы обновить данные

Pradeep 26.07.2018 08:57

Произошла ошибка PHP. Серьезность: предупреждающее сообщение: implode (): переданы недопустимые аргументы Имя файла: controllers / Home.php Номер строки: 428 Backtrace: Файл: C: \ xampp \ htdocs \ CodeIgniter_try \ application \ controllers \ Home‌ Строка .php : 428 Функция: implode Файл: C: \ xampp \ htdocs \ CodeIgniter_try \ index.php Строка: 315 Функция: require_once

keerthi patil 26.07.2018 09:08

как я получаю такие ошибки, сэр, когда их более одного значения в параметре выбора, тогда он отображается следующим образом

keerthi patil 26.07.2018 09:09

Все в порядке, сэр. Я исправил проблему. Мне пришлось использовать функцию разнесения, чтобы получить ее из базы данных. Я сделал это, ошибка исправлена. В любом случае спасибо за помощь

keerthi patil 26.07.2018 09:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
38
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

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

это массив, который вы получаете, когда публикуете его на стороне сервера, поэтому вам нужно преобразовать в строку, разделенную запятыми, с помощью функции implode php, а затем вставить в базу данных. Также вы можете использовать значения, разделенные запятыми, чтобы отобразить выбранные значения, преобразовав их в массив с помощью функции разнесения.

Согласно сообщению об ошибке, сообщение: преобразование массива в строку в Имя файла: models / Contact_model.php. Но источник фактической ошибки от контроллера. Пожалуйста, попробуйте внести изменения в следующих разделах:

      if ($this->upload->do_upload('filename'))
        {
            $fi= $this->upload->data('file_name');
            $file = ("uploads/".$result['data'][0]->filename);
            //delete the existing file if needed
            if (file_exists($file)) {
                unlink($file);
            }
        }

        else
        {
            $fi= $result['data'][0]->filename;
        }
        $this->Contact_model->portfolio_update($title,$type,$fi,$id);
        echo 'Successfully updated your record';

Изменено на это:

if ($this->upload->do_upload('filename'))
{
    // $fi= $this->upload->data('file_name'); <-- Array
    $get_file = $this->upload->data('file_name');
    $fi = $get_file['file_name']; // <-- String
    $file = ("uploads/".$result['data'][0]->filename);
    if (file_exists($file)) {
        unlink($file);
    }
}

Надежда может вам помочь.

Другие вопросы по теме