vesaldiy
New Coder
Hello friends, I've something to ask about coding codeigniter. I want to create a nested dropdown, but when on testing run it says "The results could not be loaded". So maybe is there something wrong with my typing, please help me.
Here I show the code:
controllers
models
views and javascript
Here I show the code:
PHP:
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Ticket extends CI_Controller {
function __construct() {
parent::__construct();
check_not_login();
$this->load->model(['ticket_centralregion']);
}
// READ
public function index() {
$data['row'] = $this->ticket_centralregion->get();
$this->template->load('template', 'ticket/ticket_list', $data);
}
// CREATE
public function add() {
$ticket = new stdClass();
$ticket->ticket_id = null;
$ticket->vendor = null;
$ticket->province = null;
$ticket->area = null;
$data = array(
'page' => 'add',
'row' => $ticket,
);
$this->template->load('template', 'ticket/add_ticket', $data);
}
// UPDATE
public function edit($id) {
$query = $this->ticket_centralregion->get($id);
if($query->num_rows() > 0) {
$ticket = $query->row();
$data = array(
'page' => 'edit',
'row' => $ticket,
);
$this->template->load('template', 'ticket/add_ticket', $data);
} else {
echo "<script>alert('Data tidak ditemukan');";
echo "window.location='".site_url('user')."';</script>";
}
}
// PROCESS
public function process() {
$post = $this->input->post(null, TRUE);
if(isset($_POST['add'])) {
$this->ticket_centralregion->add($post);
}
if(isset($_POST['edit'])) {
$this->ticket_centralregion->edit($post);
}
if($this->db->affected_rows() > 0) {
$this->session->set_flashdata('success', 'Data saved');
}
echo "<script>window.location='".site_url('ticket')."'</script>";
}
// GET DATA DROPDOWN
public function getdatavendor()
{
$searchTerm = $this->input->post('searchTerm');
$response = $this->ticket_centralregion->getvendor($searchTerm);
echo json_encode($response);
}
public function getdataprovince($id_vendor)
{
$searchTerm = $this->input->post('searchTerm');
$response = $this->ticket_centralregion->getprovince($id_vendor, $searchTerm);
echo json_encode($response);
}
public function getdataarea($id_province)
{
$searchTerm = $this->input->post('searchTerm');
$response = $this->ticket_centralregion->getarea($id_province, $searchTerm);
echo json_encode($response);
}
// DELETE
public function del($id) {
$this->ticket_centralregion->del($id);
if($this->db->affected_rows() > 0) {
echo "<script>alert('Data removed');</script>";
}
echo "<script>window.location='".site_url('ticket')."';</script>";
}
}
PHP:
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Ticket_centralregion extends CI_Model {
// GET ALL DATA
public function get($id = null) {
$this->db->from('trouble_ticket');
if($id != null) {
$this->db->where('ticket_id', $id);
}
$query = $this->db->get();
return $query;
}
// CREATE
public function add($post) {
$params = [
'vendor' => $post['vendor'],
'province' => $post['province'],
'area' => $post['area'],
];
$this->db->insert('trouble_ticket', $params);
}
// UPDATE
public function edit($post) {
$params = [
'vendor' => $post['vendor'],
'province' => $post['province'],
'area' => $post['area'],
];
$this->db->where('ticket_id', $post['id']);
$this->db->update('trouble_ticket', $params);
}
// GET DATA DROPDOWN
function getvendor($searchTerm = "")
{
$this->db->select('id_vendor, name_vendor');
$this->db->where("name_vendor like '%" . $searchTerm . "%' ");
$this->db->order_by('id_vendor', 'asc');
$fetched_records = $this->db->get('cb_vendor');
$datavendor = $fetched_records->result_array();
$data = array();
foreach ($datavendor as $vendor) {
$data[] = array("id" => $vendor['id_vendor'], "text" => $vendor['name_vendor']);
}
return $data;
}
function getprovince($id_vendor, $searchTerm = "")
{
$this->db->select('id_province, name_province');
$this->db->where('id_vendor', $id_vendor);
$this->db->where("name_province like '%" . $searchTerm . "%' ");
$this->db->order_by('id_province', 'asc');
$fetched_records = $this->db->get('cb_province');
$dataprovince = $fetched_records->result_array();
$data = array();
foreach ($dataprovince as $province) {
$data[] = array("id" => $province['id_province'], "text" => $province['name_province']);
}
return $data;
}
function getarea($id_province, $searchTerm = "")
{
$this->db->select('id_area, name_area');
$this->db->where('id_province', $id_province);
$this->db->where("name_area like '%" . $searchTerm . "%' ");
$this->db->order_by('id_area', 'asc');
$fetched_records = $this->db->get('cb_area');
$dataarea = $fetched_records->result_array();
$data = array();
foreach ($dataarea as $area) {
$data[] = array("id" => $area['id_area'], "text" => $area['name_area']);
}
return $data;
}
// DELETE
public function del($id) {
$this->db->where('ticket_id', $id);
$this->db->delete('trouble_ticket');
}
}
PHP:
<!-- Content -->
<section class="content-area p-y-1">
<div class="container-fluid">
<h4><?= ucfirst($page) ?> Ticket</h4>
<div class="pull-right ">
<a href="<?= site_url('ticket') ?>">
<button type="button" class="btn btn-warning pull-left m-r-0-5 label-left waves-effect waves-light">
<span class="btn-label"><i class="ti-arrow-left"></i></span>
Back
</button>
</a>
</div>
<ol class="breadcrumb no-bg m-b-1">
<li class="breadcrumb-item"><a href="<?= site_url() ?>">Dashboard</a></li>
<li class="breadcrumb-item active">New Ticket</li>
</ol>
</div>
<!-- Main Content -->
<div class="container-fluid">
<div class="card card-block">
<div class="row">
<div class="col-md-12">
<div class="pull-right ">
<a href="<?= site_url('ticket') ?>">Cancel</a>
</div>
<h5>Input the new ticket below</h5>
<br>
<div class="box-body">
<form action="<?= site_url('ticket/process') ?>" method="post">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label><strong>Vendor*</strong></label>
<select id="vendor" data-plugin="select2" class="form-control select2" name="vendor">
<option value="" selected>- Select -</option>
</select>
</div>
<div class="form-group">
<label><strong>Province*</strong></label>
<select id="province" data-plugin="select2" class="form-control select2" name="province">
<option value="" selected>- Select -</option>
</select>
</div>
<div class="form-group">
<label><strong>Area*</strong></label>
<select id="area" data-plugin="select2" class="form-control select2" name="area">
<option value="" selected>- Select -</option>
</select>
</div>
</div>
<div class="col-md-6">
</div>
</div> <br>
<div class="form-group">
<button type="submit" name="<?= $page ?>" class="btn btn-success btn-flat">
<i class="fa fa-paper-plane"></i> Save</button>
<button type="reset" class="btn btn-flat">Reset</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Dropdown Nested -->
<script type="text/javascript">
// Vendor
$(document).ready(function() {
$("#vendor").select2({
ajax: {
url: '<?= base_url() ?>tes/getdatavendor',
type: "post",
dataType: 'json',
delay: 200,
data: function(params) {
return {
searchTerm: params.term
};
},
processResults: function(response) {
return {
results: response
};
},
cache: true
}
});
});
// Province
$("#vendor").change(function() {
var id_prov = $("#vendor").val();
$("#province").select2({
ajax: {
url: '<?= base_url() ?>tes/getdataprovince/' + id_prov,
type: "post",
dataType: 'json',
delay: 200,
data: function(params) {
return {
searchTerm: params.term
};
},
processResults: function(response) {
return {
results: response
};
},
cache: true
}
});
});
// Area
$("#province").change(function() {
var id_kab = $("#province").val();
$("#area").select2({
ajax: {
url: '<?= base_url() ?>tes/getdataarea/' + id_kab,
type: "post",
dataType: 'json',
delay: 200,
data: function(params) {
return {
searchTerm: params.term
};
},
processResults: function(response) {
return {
results: response
};
},
cache: true
}
});
});
</script>