При вставке нескольких изображений в базу данных в основную таблицу добавляется более одной строки, которая связана с таблицей изображений. - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь загрузить несколько изображений в codeigniter.Для конкретного продукта я хочу добавить загруженные изображения в другую таблицу, называемую «image» .... при использовании «lastid», чтобы получить pid (идентификатор продукта из таблицы product_multi) в изображениях, кратные строки вставляются в таблицу product_multi... количество строк соответствует количеству загружаемых изображений.
Кто-то помог мне исправить это .. Если я не использую передачу переменной lastid, она работает отлично / ... но я хочу pid в таблицах изображений: (* ​​1002 *

Вот так я получаю датируемый This is how getting

Это моя модель

<?php


class ProductmModel extends CI_Model
{

  var $PRODUCTNAME='';
  var $DESCRIPTION='';
  var $CATEGORY='';
  var $SUBCAT='';
  var $IMAGE='';




public function addproductm()
{
$this->load->database();
$data = array(
"p_name" => $this->PRODUCTNAME,
"p_des" => $this->DESCRIPTION,
"cat" => $this->CATEGORY,
"subcat" => $this->SUBCAT

);
$this->db->insert('product_multi', $data);
$lastid=$this->db->insert_id();
echo "$lastid";
return $lastid;

}


public function addimage()
{
$last=$this->addproductm();
$this->load->database();

$data = array(
"pid" =>$last,
"images" => $this->IMAGE
);
$this->db->insert('image', $data);
}


}

код контроллера ::

public function upload()
   {



//image upload  
     $config['upload_path'] = './images';
     $config['allowed_types'] = 'gif|jpg|png|jpeg';
     $this->load->library('upload',$config);
     $this->upload->initialize($config);

     $fileInfos = array();
     $errors = array();

     //uploading

     if (! empty($_FILES['images']['name'])) 
     {
        $photosCount = count($_FILES['images']['name']);
        for ($i = 0; $i < $photosCount; $i ++)
         {
           $_FILES['image']['name'] = $_FILES['images']['name'][$i];
           $_FILES['image']['type'] = $_FILES['images']['type'][$i];
           $_FILES['image']['tmp_name'] = $_FILES['images']['tmp_name'][$i];
           $_FILES['image']['error'] = $_FILES['images']['error'][$i];
           $_FILES['image']['size'] = $_FILES['images']['size'][$i];
           if ($this->upload->do_upload('image')) 
           {
                    array_push($fileInfos, array(
                        'fileInfo' => $this->upload->data()

                    ));
                  $filename =$_FILES['image']['name'] ;
                    //$filename =$_FILES["name"].$_FILES["type"];

                      //   $data['fileInfos'] = $fileInfo;
                  $this->load->model("ProductmModel");
                        $this->ProductmModel->IMAGE = $filename;


            }
            else 
                {
                    array_push($errors, array(
                        'error' => $this->upload->display_errors()
                    ));
                }


           }


         }


      $pname = $this->input->post("name");
      $pdes = $this->input->post("pdes");
      $caty = $this->input->post("category");
      $subcat = $this->input->post("subcat");

        $this->ProductmModel->PRODUCTNAME = $pname;
        $this->ProductmModel->DESCRIPTION = $pdes;
        $this->ProductmModel->CATEGORY = $caty;
        $this->ProductmModel->SUBCAT = $subcat;
       $this->ProductmModel->addproductm();


     }

Это код после редактирования, как вы сказали ...внесение обеих вставок в одну функцию enter image description here

enter image description here

пример:

enter image description here

1 Ответ

0 голосов
/ 04 февраля 2019
public function upload(){

//image upload  
     $config['upload_path'] = './images';
     $config['allowed_types'] = 'gif|jpg|png|jpeg';
     $this->load->library('upload',$config);
     $this->upload->initialize($config);

     $fileInfos = array();
     $errors = array();

     //uploading

     if (! empty($_FILES['images']['name'])) 
     {
        $photosCount = count($_FILES['images']['name']);
        for ($i = 0; $i < $photosCount; $i ++)
        {
           $_FILES['images']['name'] = $_FILES['images']['name'][$i];
           $_FILES['images']['type'] = $_FILES['images']['type'][$i];
           $_FILES['images']['tmp_name'] = $_FILES['images']['tmp_name'][$i];
           $_FILES['images']['error'] = $_FILES['images']['error'][$i];
           $_FILES['images']['size'] = $_FILES['images']['size'][$i];
           if ($this->upload->do_upload('images')) 
           {
                $data = $this->upload->data();
                array_push($fileInfos, $data['file_name']);
            }
            else{
                array_push($errors, array(
                    'error' => $this->upload->display_errors()
                ));
            }
        }

    }
        $product_array = array(
            "p_name" => $this->input->post("name"),
            "p_des" =>  $this->input->post("pdes"),
            "cat" => $this->input->post("category"),
            "subcat" => $this->input->post("subcat")
        );

       $this->ProductmModel->addproductm($product_array, $fileInfos);

     }

Модель

     public function addproductm($product_array, $fileInfos){
        $this->load->database();

        $this->db->insert('product_multi', $product_array);
        $lastid = $this->db->insert_id();

        foreach($fileInfos as $file){
            $image_data = array(
                "pid" => $lastid,
                "images" => $file
            );
        $this->db->insert('image', $image_data);
        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...