doupang1917 2019-06-10 14:22
浏览 78

如何从同一个类中的另一个方法中检索最后插入的id?

I have two methods inside Home class called addProperty and uploadImages.

I'm calling the uploadImages() method from the jquery dropzone to post the images and addProperty() for inserting the form inputs into the database.

I want to pass the last inserted Id from the addProperty method to uploadImages to save the image details into the database.

Home.php (Controller)

<?php if(!defined('BASEPATH')) exit('No direct script access allowed');

class Home extends CI_Controller
{
    /**
     * This is default constructor of the class
     */
    public function __construct()
    {
      parent::__construct();
      $this->load->model('property_model');

     }

    /**
     * Index Page for this controller.
     */
    public function index()
    {
        $data = array('title'=> 'Vierra Property Broker', 'main_content'=>'home');
        $this->load->view('template', $data);
    }

    /**
     * Loaading the submit property form.
     */
    public function listProperty()
    {
      $data = array('title'=> 'Vierra Property Broker - Submit your Property', 'main_content'=>'submit_property');
      $this->load->view('template', $data);
    }

    function addProperty()
    {
           $this->load->library('form_validation');

           //$this->form_validation->set_rules('prop_title','Villa Title','trim|required|max_length[128]');
          // $this->form_validation->set_rules('prop_status','Status','trim|required');
           //$this->form_validation->set_rules('prop_type','Type','trim|required');
           //$this->form_validation->set_rules('prop_price','Price','trim|required|numeric');
           //$this->form_validation->set_rules('prop_sqft','Sqft','trim|required|numeric');
           $this->form_validation->set_rules('prop_rooms','Rooms','trim|required|numeric');
           $this->form_validation->set_rules('prop_address','Address','trim|required|max_length[200]');
           $this->form_validation->set_rules('prop_owner_phone','Mobile Number','required|min_length[10]');
           $this->form_validation->set_rules('prop_owner_name','Owner Name','required|min_length[5]');
           $this->form_validation->set_rules('prop_owner_email','Owner Email','required|valid_email');
           //$this->form_validation->set_rules('prop_detailed_info','Detailed Info','trim|required|max_length[2000]');
           //$this->form_validation->set_rules('prop_status','Current Status','trim|required');

           if($this->form_validation->run() == FALSE)
           {
               $this->listProperty();
           }
           else
           {
               $prop_title = ucwords(strtolower($this->security->xss_clean($this->input->post('prop_title'))));
               $prop_status = ucwords(strtolower($this->security->xss_clean($this->input->post('prop_status'))));
               $prop_type = ucwords(strtolower($this->security->xss_clean($this->input->post('prop_type'))));
               $prop_price = $this->security->xss_clean($this->input->post('prop_price'));
               $prop_sqft = $this->security->xss_clean($this->input->post('prop_sqft'));
               $prop_rooms = $this->security->xss_clean($this->input->post('prop_rooms'));
               $prop_address = $this->security->xss_clean($this->input->post('prop_address'));
               $prop_owner_name = $this->security->xss_clean($this->input->post('prop_owner_name'));
               $prop_owner_email = $this->security->xss_clean($this->input->post('prop_owner_email'));
               $prop_owner_phone = $this->security->xss_clean($this->input->post('prop_owner_phone'));
               $prop_detailed_info = $this->security->xss_clean($this->input->post('prop_detailed_info'));
               $prop_current_status = $this->security->xss_clean($this->input->post('prop_current_status'));

               //$userInfo = array('email'=>$email, 'password'=>getHashedPassword($password), 'roleId'=>$roleId, 'name'=> $name,
                                   //'mobile'=>$mobile, 'createdBy'=>$this->vendorId, 'createdDtm'=>date('Y-m-d H:i:s'));

                $propertyInfo = array('title'=>$prop_title, 'status'=>$prop_status, 'type'=>$prop_type, 'price'=>$prop_price,
                                      'sqft'=>$prop_sqft, 'rooms'=>$prop_rooms, 'address'=>$prop_address, 'name'=>$prop_owner_name,
                                      'email'=>$prop_owner_email, 'phone'=>$prop_owner_phone, 'detailedInfo'=>$prop_detailed_info,
                                      'currentStatus'=>$prop_current_status);

               $this->load->model('property_model');
               $result = $this->property_model->addNewProperty($propertyInfo);

               if($result > 0)
               {
                  //$propertyImgUpload = uploadImages($result);
                   $this->session->set_flashdata('success', 'Thank you for submiting your property with us!, Our team will contact you shortly');
               }
               else
               {
                   $this->session->set_flashdata('error', 'Submission of property failed, Contact wasim@vpd.ae');
               }

               redirect('/submit-property');
           }
     }

     function uploadImage($propertyid)
     {

         if (!empty($_FILES)) {
           $count_img = count($_FILES['file']['name']);

           foreach($_FILES['file']['tmp_name'] as $key => $value) {
               $tempFile = $_FILES['file']['tmp_name'][$key];
               $fileName = $_FILES['file']['name'][$key];
               $targetPath = 'property-images/';
               $targetFile = $targetPath . $fileName ;
               if(move_uploaded_file($tempFile, $targetFile))
               {
                   $response = "Success";
               }
               else {
                   $response = "Failed";
               }
           }

        }

    }
}

?>

addProperty.js (Jquery validating & post dropzone images to uploadImages() method

/**
 * File : addUser.js
 *
 * This file contain the validation of add user form
 *
 * Using validation plugin : jquery.validate.js
 *
 * @author Sarath Chandran
 */
  $(document).ready(function(){
    $("#error_msg").hide();

    var addPropertyForm = $("#property-form");
    var validator = addPropertyForm.validate({
        rules:{
            //prop_title :{ required : true },
            //prop_status : { required : true, selected : true },
            //prop_type : {required : true, selected: true },
      prop_rooms : {required : true, selected: true },
      prop_address :{ required : true },
      prop_owner_name :{ required : true },
      //prop_detailed_info :{ required : true },
      prop_owner_email :{ required : true, email : true },
      prop_owner_phone :{ required : true, digits : true },
            //prop_price : { required : true, digits : true },
      //prop_sqft : { required : true, digits : true }
        },
        messages:{
            //prop_title :{ required : "Please enter title of villa" },
            //prop_status : { required : "Please select status", selected : "Please select atlease one option" },
      //prop_type : { required : "Please select type of villa", selected : "Please select atlease one option" },
      prop_rooms : { required : "Please select bed rooms", selected : "Please select atlease one option" },
            prop_address : { required : "Please enter address of villa"},
      prop_owner_name : { required : "Please enter name of owner"},
      prop_owner_email : { required : "Please enter email of owner", email : "Please enter valid email"},
      prop_owner_phone : { required : "Please enter phone of owner", digits : "Please enter valid phone no"},
      //prop_price : { required : "Please enter price of villa", digits : "Please enter price in digits"},
      //prop_detailed_info : { required : "Please enter detailed information"},
      //prop_sqft : { required : "Please enter size of villa", digits : "Please enter size in Sqft"}

        },
})

Dropzone.autoDiscover = false;

    $("div#myDropzone").dropzone({

        url: 'image-upload',
        addRemoveLinks: true,
        paramName: "file",
        maxFiles:11,
        autoProcessQueue: false,
        uploadMultiple: true,
        acceptedFiles: "image/*",
        maxFilesize: 1,
        parallelUploads: 10,

        init: function () {

            var myDropzone = this;

            $("#property-form").submit(function (e) {


              $(window).scrollTop(0);

              //e.preventDefault();

              if ( $("#property-form").valid() ) {
                myDropzone.processQueue();

              }

            });

            this.on('sending', function(file, xhr) {
                // Append all form inputs to the formData Dropzone will POST

                  //alert("Data is sending");
            });

            this.on("complete", function (file) {
              if (this.getUploadingFiles().length === 0 && this.getQueuedFiles().length === 0) {

                  //alert("Completed Upload");
                  $("#property-form").submit();
            }

          });
        }

    });

});

submit_property.php (View)

<div class="content-area-7 submit-property">
    <div class="container">
        <div class="row">
            <div class="col-md-12">

          <!--      <div id="error_message" class="notification-box"></div> -->
            </div>

            <?php
                $this->load->helper('form');

                $error = $this->session->flashdata('error');
                if($error)
                {
                  echo '<div class="notification-box">'.$error.'</div>';

                }

                $success = $this->session->flashdata('success');
                if($success)
                {
                  echo '<div class="notification-box">'.$success.'</div>';

                }

                ?>

                <div id="error_msg" class="alert alert-danger wow fadeInRight delay-01s" role="alert" style="visibility: visible; animation-name: fadeInRight;">
                  <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
                  <strong>Oops!</strong>, Please fix the following errors and submit again
                </div>

            <div class="col-md-12">
                <div class="submit-address">


                    <form name = "property-form" action="<?php echo base_url() ?>list-property" method="post" id="property-form">
                        <div class="main-title-2">
                            <h1><span>Tell Me</span> Something About Your Property</h1>
                        </div>
                        <div class="search-contents-sidebar mb-30">
                            <div class="form-group">
                                <label>Property Title</label>

                                <input class="input-text" name="prop_title" id="prop_title" placeholder="Property Title">
                                <?php echo form_error('prop_title'); ?>
                            </div>

                            <div class="row">
                                <div class="col-md-6 col-sm-6">
                                    <div class="form-group">
                                        <label>Status</label>
                                        <select class="form-control required" id="prop_status" name="prop_status">
                                          <option value="">Select</option>
                                            <option value="Sale">For Sale</option>
                                            <option value="Rent">For Rent</option>
                                        </select>

                                    </div>

                                </div>
                                <div class="col-md-6 col-sm-6">
                                    <div class="form-group">
                                        <label>Type</label>
                                        <select class="form-control required" id="prop_type" name="prop_type">
                                          <option value="">Select</option>
                                            <option value="Modern">Modern</option>
                                            <option value="Traditional">Traditional</option>
                                            <option value="Arabic">Arabic</option>

                                        </select>


                                    </div>

                                </div>
                            </div>
                            <div class="row">
                                <div class="col-md-3 col-sm-6">
                                    <div class="form-group">
                                        <label>Price (Dirham)</label>
                                        <input class="input-text" name="prop_price" id="prop_price" placeholder="AED">
                                        <?php echo form_error('prop_price'); ?>

                                    </div>
                                </div>
                                <div class="col-md-3 col-sm-6">
                                    <div class="form-group">
                                        <label>Sqft</label>
                                        <input class="input-text" name="prop_sqft" id="prop_sqft" placeholder="SqFt">
                                        <?php echo form_error('prop_sqft'); ?>


                                    </div>
                                </div>
                                <div class="col-md-3 col-sm-6">
                                    <div class="form-group">
                                        <label>Bed Rooms</label>
                                        <select class="form-control required" name="prop_rooms" id="prop_rooms">
                                            <option value="">Select</option>
                                            <option value="3">3</option>
                                            <option value="4">4</option>
                                            <option value="5">5</option>

                                        </select>


                                    </div>
                                </div>
                                <!-- <div class="col-md-3 col-sm-6">
                                    <div class="form-group">
                                        <label>Bathroom</label>
                                        <select class="selectpicker search-fields" name="1">
                                            <option>1</option>
                                            <option>2</option>
                                            <option>3</option>
                                            <option>4</option>
                                            <option>5</option>
                                            <option>6</option>
                                        </select>
                                    </div>
                                </div> -->
                            </div>
                        </div>


                        <div class="main-title-2">
                            <h1><span>Location</span></h1>
                        </div>
                        <div class="row mb-30 ">
                            <div class="col-md-6 col-sm-6">
                                <div class="form-group">
                                    <label>Address</label>
                                    <input class="input-text" id="prop_address" name="prop_address"  placeholder="Address">
                                </div>
                                <?php echo form_error('prop_address'); ?>


                            </div>
                        </div>
                        <div class="main-title-2">
                            <h1><span>Contact</span> Details</h1>
                        </div>
                        <div class="row">
                            <div class="col-md-4 col-sm-4">
                                <div class="form-group">
                                    <label>Name</label>
                                    <input class="input-text" name="prop_owner_name" id="prop_owner_name" placeholder="Name">
                                    <?php echo form_error('prop_owner_name'); ?>

                                </div>
                            </div>
                            <div class="col-md-4 col-sm-4">
                                <div class="form-group">
                                    <label>Email</label>
                                    <input class="input-text" name="prop_owner_email" id="prop_owner_email" placeholder="Email">
                                    <?php echo form_error('prop_owner_email'); ?>

                                </div>
                            </div>

                            <div class="col-md-4 col-sm-4">
                                <div class="form-group">
                                    <label>Contact No</label>
                                    <input class="input-text" name="prop_owner_phone" id="prop_owner_phone" placeholder="Phone">
                                    <?php echo form_error('prop_owner_phone'); ?>

                                </div>
                            </div>

                            </div>

                        <div class="main-title-2">
                        <h1><span>Upload</span> Photos Of Villa </h1>
                        </div>

                        <div id="myDropzone" class="dropzone dropzone-design mb-10">
                          <div class="dz-default dz-message" data=""><span>Drop files here to upload</span></div>
                                                </div>

                        <div class="main-title-2">
                            <h1><span>Detailed</span> Information</h1>
                        </div>

                        <div class="row mb-30">
                            <div class="col-md-12">
                                <div class="form-group">
                                    <textarea class="input-text" id="prop_detailed_info" name="prop_detailed_info" placeholder="Detailed Information"></textarea>
                                </div>
                                <?php echo form_error('prop_detailed_info'); ?>
                            </div>
                        </div>

                          </div>

                            <div class="col-md-12">
                              <input type="submit" class="btn button-sm button-theme" value="Submit" />

                            </div>
                            <script src="<?php echo base_url('assets/frontend/js/addProperty.js'); ?>"></script>

                        </div>

                    </form>
                </div>
            </div>
        </div>
    </div>
</div>

Property_model.php (Model)

<?php if(!defined('BASEPATH')) exit('No direct script access allowed');

/**
 * Class : User_model (User Model)
 * User model class to get to handle user related data
 * @author : Kishor Mali
 * @version : 1.1
 * @since : 15 November 2016
 */
class Property_model extends CI_Model
{
      /**
       * This function is used to get the user listing count
       * @param string $searchText : This is optional search text
       * @return number $count : This is row count
       */
      function propertyListingCount($searchText = '')
      {
          $this->db->select('BaseTbl.propertyid, BaseTbl.title, BaseTbl.status, BaseTbl.type, BaseTbl.price, BaseTbl.phone');
          $this->db->from('tbl_properties as BaseTbl');
          if(!empty($searchText)) {
              $likeCriteria = "(BaseTbl.email  LIKE '%".$searchText."%'
                              OR  BaseTbl.name  LIKE '%".$searchText."%'
                              OR  BaseTbl.phone  LIKE '%".$searchText."%')";
              $this->db->where($likeCriteria);
          }
          $this->db->where('BaseTbl.currentStatus', 0);
          $query = $this->db->get();

          return $query->num_rows();
      }

      /**
       * This function is used to get the user listing count
       * @param string $searchText : This is optional search text
       * @param number $page : This is pagination offset
       * @param number $segment : This is pagination limit
       * @return array $result : This is result
       */
      function propertyListing($searchText = '', $page, $segment)
      {
          $this->db->select('BaseTbl.propertyid, BaseTbl.title, BaseTbl.status, BaseTbl.type, BaseTbl.price, BaseTbl.phone');
          $this->db->from('tbl_properties as BaseTbl');
          if(!empty($searchText)) {
              $likeCriteria = "(BaseTbl.email  LIKE '%".$searchText."%'
                              OR  BaseTbl.name  LIKE '%".$searchText."%'
                              OR  BaseTbl.phone  LIKE '%".$searchText."%')";
              $this->db->where($likeCriteria);
          }
          $this->db->where('BaseTbl.currentStatus', 0);
          $this->db->order_by('BaseTbl.propertyid', 'DESC');
          $this->db->limit($page, $segment);
          $query = $this->db->get();

          $result = $query->result();
          return $result;
      }

      /**
       * This function is used to add new property to system
       * @return number $insert_id : This is last inserted id
       */
      function addNewProperty($propertyInfo)
      {
          $this->db->trans_start();
          $this->db->insert('tbl_properties', $propertyInfo);

          $insert_id = $this->db->insert_id();

          $this->db->trans_complete();

          return $insert_id;
      }

      function addPropertyImgs($propertyImgs)
      {
          $this->db->trans_start();
          $this->db->insert('tbl_property_images', $propertyImgs);

          $insert_id = $this->db->insert_id();

          $this->db->trans_complete();

          return $insert_id;
      }
}

?>

I want to insert the image details into the table called tbl_property_images

  1. File Upload working
  2. Form inputs also successfully inserted

Problem :

I need to insert image details to the table with the propertyid, The propertyid is the last inserted id we get from the $result variable in addProperty method.

  • 写回答

1条回答 默认 最新

  • dongyongmin5711 2019-06-11 09:19
    关注

    Solution 1 Create a procedure which will insert the record and return the id of the inserted record.

    Solution 2 Create a procedure which will insert all the data to the respective tables and return success or failure.

    评论

报告相同问题?

悬赏问题

  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)