我在Home
类中有两个方法,分别称为addProperty
和uploadImages
。
我正在从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的表中
问题:
我需要使用propertyid
将图像详细信息插入表中,propertyid
是我们从$result
方法中的addProperty
变量获得的最后插入的ID。 / p>
答案 0 :(得分:0)
解决方案1 创建一个将插入记录并返回插入记录的ID的过程。
解决方案2 创建一个过程,将所有数据插入各自的表中并返回成功或失败。