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

时间:2019-06-10 14:22:44

标签: javascript php jquery mysql codeigniter

我在Home类中有两个方法,分别称为addPropertyuploadImages

我正在从jquery dropzone中调用uploadImages()方法来发布图像,并调用addProperty()来将表单输入插入数据库。

我想将最后插入的ID从addProperty方法传递到uploadImages,以将图像详细信息保存到数据库中。

Home.php (控制器)

<?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验证并将Dropzone图片发布到uploadImages()方法

/**
 * 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(查看)

<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(模型)

<?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;
      }
}

?>

我想将图像详细信息插入名为tbl_property_images的表中

  1. 文件上传正常
  2. 表单输入也已成功插入

问题:

我需要使用propertyid将图像详细信息插入表中,propertyid是我们从$result方法中的addProperty变量获得的最后插入的ID。 / p>

1 个答案:

答案 0 :(得分:0)

解决方案1 创建一个将插入记录并返回插入记录的ID的过程。

解决方案2 创建一个过程,将所有数据插入各自的表中并返回成功或失败。