gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 15:55:08 24 4
gpt4 key购买 nike

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

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

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

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 验证并将 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获得的最后插入的ID addProperty 方法中的变量。

最佳答案

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

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

关于javascript - 如何从同一个类中的另一个方法检索最后插入的 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56528289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com