Проблема при сохранении изображений с несколькими входами в базу данных с использованием codeigniter php ⇐ Php
-
Гость
Проблема при сохранении изображений с несколькими входами в базу данных с использованием codeigniter php
У меня есть форма, в которой есть несколько полей ввода, включая поле ввода изображения, поля ввода изображения допускают возможность многократной загрузки. теперь, когда пользователь нажимает кнопку «Добавить больше», некоторые поля, включая поле изображения, будут дублироваться, поэтому я сохраняю отдельные поля в одной таблице и, используя этот идентификатор, сохраняю данные нескольких полей во второй таблице, я выполнил следующий код: < /п> if (isset($_POST['addproduct'])) { $name = $this->input->post('name'); $country = $this->input->post('country'); $city = $this->input->post('city'); $heading = $this->input->post('heading'); $dater = $this->input->post('dater'); $description = $this->input->post('description'); $blog_info_data = массив( 'имя' => $имя, 'страна' => $страна, 'город' => $город ); // Вставляем данные в таблицу «blog_info» и получаем вставленный идентификатор $this->db->insert('блог', $blog_info_data); $blog_info_id = $this->db->insert_id(); $ImageCount = count($_FILES['pimage']['name']); // Создаем ассоциативный массив для хранения имен файлов изображений, сгруппированных по заголовкам $imagesByHeading = массив(); for ($i = 0; $i < $ImageCount; $i++) { $_FILES['file']['name'] = $_FILES['pimage']['name'][$i]; $_FILES['file']['type'] = $_FILES['pimage']['type'][$i]; $_FILES['file']['tmp_name'] = $_FILES['pimage']['tmp_name'][$i]; $_FILES['file']['error'] = $_FILES['pimage']['error'][$i]; $_FILES['file']['size'] = $_FILES['pimage']['size'][$i]; // Конфигурация загрузки файла $uploadPath = './uploads/products/'; $config['upload_path'] = $uploadPath; $config['allowed_types'] = 'jpg|jpeg|png|gif'; // Загружаем и инициализируем библиотеку загрузки $this->load->library('upload', $config); $this->upload->initialize($config); // Загружаем файл на сервер if ($this->upload->do_upload('file')) { // Загруженные данные файла $imageData = $this->upload->data(); $imageCsv = $imageData['имя_файла']; // Сохраняем имя файла изображения для текущей строки // Получаем соответствующие данные для текущей строки $date_value = isset($dater[$i]) ? $dater[$i] : ''; $heading_value = isset($heading[$i]) ? $heading[$i] : ''; $description_value = isset($description[$i]) ? $description[$i] : ''; // Проверяем, существует ли заголовок в ассоциативном массиве if (isset($imagesByHeading[$heading_value])) { // Добавляем имя файла изображения к существующей записи заголовка $imagesByHeading[$heading_value]['images'][] = $imageCsv; } еще { // Создаем новую запись для заголовка с массивом изображений $imagesByHeading[$heading_value] = массив( 'датер' => $date_value, 'описание' => $description_value, 'изображение' => массив ($ imageCsv), ); } } еще { // Здесь обрабатываем ошибку загрузки (например, регистрируем ошибку) // Здесь можно добавить код обработки ошибок } } // Перебираем ассоциативный массив и вставляем данные в таблицу blogdetails. foreach ($imagesByHeading as $heading_value => $data) { // Объединяем имена файлов изображений запятыми $imagesCsv = implode(',', $data['image']); $blog_details_data = массив( 'blogid' => $blog_info_id, 'датер' => $data['датер'], 'heading' => $heading_value, 'image' => $imagesCsv, // Имена файлов изображений, разделенные запятыми 'description' => $data['description'], ); $this->db->insert('blogdetails', $blog_details_data); } $this->session->set_flashdata("Успех", "Блог успешно добавлен!"); } здесь все поля сохраняются правильно, кроме изображений, изображения для соответствующего поля заголовка/даты сохраняются в отдельных строках по отдельности, я хочу, чтобы они сохранялись как значения, разделенные запятыми, в соответствующем поле заголовка/даты, как могу ли я это сделать, заранее спасибо
У меня есть форма, в которой есть несколько полей ввода, включая поле ввода изображения, поля ввода изображения допускают возможность многократной загрузки. теперь, когда пользователь нажимает кнопку «Добавить больше», некоторые поля, включая поле изображения, будут дублироваться, поэтому я сохраняю отдельные поля в одной таблице и, используя этот идентификатор, сохраняю данные нескольких полей во второй таблице, я выполнил следующий код: < /п> if (isset($_POST['addproduct'])) { $name = $this->input->post('name'); $country = $this->input->post('country'); $city = $this->input->post('city'); $heading = $this->input->post('heading'); $dater = $this->input->post('dater'); $description = $this->input->post('description'); $blog_info_data = массив( 'имя' => $имя, 'страна' => $страна, 'город' => $город ); // Вставляем данные в таблицу «blog_info» и получаем вставленный идентификатор $this->db->insert('блог', $blog_info_data); $blog_info_id = $this->db->insert_id(); $ImageCount = count($_FILES['pimage']['name']); // Создаем ассоциативный массив для хранения имен файлов изображений, сгруппированных по заголовкам $imagesByHeading = массив(); for ($i = 0; $i < $ImageCount; $i++) { $_FILES['file']['name'] = $_FILES['pimage']['name'][$i]; $_FILES['file']['type'] = $_FILES['pimage']['type'][$i]; $_FILES['file']['tmp_name'] = $_FILES['pimage']['tmp_name'][$i]; $_FILES['file']['error'] = $_FILES['pimage']['error'][$i]; $_FILES['file']['size'] = $_FILES['pimage']['size'][$i]; // Конфигурация загрузки файла $uploadPath = './uploads/products/'; $config['upload_path'] = $uploadPath; $config['allowed_types'] = 'jpg|jpeg|png|gif'; // Загружаем и инициализируем библиотеку загрузки $this->load->library('upload', $config); $this->upload->initialize($config); // Загружаем файл на сервер if ($this->upload->do_upload('file')) { // Загруженные данные файла $imageData = $this->upload->data(); $imageCsv = $imageData['имя_файла']; // Сохраняем имя файла изображения для текущей строки // Получаем соответствующие данные для текущей строки $date_value = isset($dater[$i]) ? $dater[$i] : ''; $heading_value = isset($heading[$i]) ? $heading[$i] : ''; $description_value = isset($description[$i]) ? $description[$i] : ''; // Проверяем, существует ли заголовок в ассоциативном массиве if (isset($imagesByHeading[$heading_value])) { // Добавляем имя файла изображения к существующей записи заголовка $imagesByHeading[$heading_value]['images'][] = $imageCsv; } еще { // Создаем новую запись для заголовка с массивом изображений $imagesByHeading[$heading_value] = массив( 'датер' => $date_value, 'описание' => $description_value, 'изображение' => массив ($ imageCsv), ); } } еще { // Здесь обрабатываем ошибку загрузки (например, регистрируем ошибку) // Здесь можно добавить код обработки ошибок } } // Перебираем ассоциативный массив и вставляем данные в таблицу blogdetails. foreach ($imagesByHeading as $heading_value => $data) { // Объединяем имена файлов изображений запятыми $imagesCsv = implode(',', $data['image']); $blog_details_data = массив( 'blogid' => $blog_info_id, 'датер' => $data['датер'], 'heading' => $heading_value, 'image' => $imagesCsv, // Имена файлов изображений, разделенные запятыми 'description' => $data['description'], ); $this->db->insert('blogdetails', $blog_details_data); } $this->session->set_flashdata("Успех", "Блог успешно добавлен!"); } здесь все поля сохраняются правильно, кроме изображений, изображения для соответствующего поля заголовка/даты сохраняются в отдельных строках по отдельности, я хочу, чтобы они сохранялись как значения, разделенные запятыми, в соответствующем поле заголовка/даты, как могу ли я это сделать, заранее спасибо
Мобильная версия