diff --git a/html/exhi/application/controllers/General.php b/html/exhi/application/controllers/General.php index a18295cb3a5ccdee84647b4f9cc953b81237c3dc..6b3980e92e9abdcc002475d4aaf9587df47f2fd5 100644 --- a/html/exhi/application/controllers/General.php +++ b/html/exhi/application/controllers/General.php @@ -103,6 +103,23 @@ class general extends Exhibition_Controller echo json_encode($data); } + public function get_data_search_pagination() + { + $year = $_GET['year']; + $grade = $_GET['grade']; + $cluster = $_GET['cluster']; + $team = $_GET['team']; + $company = $_GET['company']; + $pname = $_GET['pname']; + $tag = $_GET['tag']; + $page = $_GET['page']; + $limit = $_GET['limit']; + ($tag == '') ?: $tag = implode(',', $tag); + $this->load->model('general/M_general', 'pagination'); + $data['pagination'] = $this->pagination->get_data_search_pagination($year, $grade, $cluster, $team, $company, $pname, $tag, $page, $limit)->result(); + echo json_encode($data); + } + public function get_num_page() { $year = $_GET['year']; @@ -111,10 +128,64 @@ class general extends Exhibition_Controller echo json_encode($data); } + public function get_num_search_page() + { + $year = $_GET['year']; + $grade = $_GET['grade']; + $cluster = $_GET['cluster']; + $team = $_GET['team']; + $company = $_GET['company']; + $pname = $_GET['pname']; + $tag = $_GET['tag']; + ($tag == '') ?: $tag = implode(',', $tag); + $this->load->model('general/M_general', 'num'); + $data['num'] = $this->num->get_num_search_page($year, $grade, $cluster, $team, $company, $pname, $tag)->result(); + echo json_encode($data); + } + public function get_search() { - $data['keyword'] = $this->input->post(); - $this->load->view('general/v_search', $data); + $year = $this->input->post('year_search'); + if ($year == '') { + $year = 'YEAR(date)'; + } + $grade = $this->input->post('grade'); + if ($grade == '2') { + $grade = 'AND cluster_id != 0'; + } else if ($grade == '3') { + $grade = 'AND team_id != 0'; + } else if ($grade = 'cluster != 0' == '4') { + $grade = 'AND cluster_id = 0 AND team_id = 0'; + } else { + $grade = ''; + } + $cluster = $this->input->post('cluster'); + if ($cluster == '') { + $cluster = 'cluster_id'; + } + $team = $this->input->post('team'); + if ($team == '') { + $team = 'team_id'; + } + $company = $this->input->post('company'); + if ($company == '') { + $company = 'company_id'; + } + $pname = $this->input->post('pname'); + if ($pname == '') { + $pname = ''; + } else { + $pname = 'AND (name_th LIKE "%' . $pname . '%" OR name_en LIKE "%' . $pname . '%")'; + } + $tag = $this->input->post('tag'); + $data['year'] = $year; + $data['grade'] = $grade; + $data['cluster'] = $cluster; + $data['team'] = $team; + $data['company'] = $company; + $data['pname'] = $pname; + $data['tag'] = $tag; + $this->output_frontend('general/v_search', $data); } public function get_search_data() diff --git a/html/exhi/application/models/general/M_general.php b/html/exhi/application/models/general/M_general.php index 84fa562fbdaabd0dc4ffbbed4fa1329f8dec43c7..a88dc5e7ff1dcf6a7123c2c406073da4ca00a5af 100644 --- a/html/exhi/application/models/general/M_general.php +++ b/html/exhi/application/models/general/M_general.php @@ -16,23 +16,23 @@ class M_general extends Da_general { $sql = "SELECT count(project_id) AS cluster, team, project, all_project, by_year FROM project, (SELECT count(project_id) AS team FROM project - WHERE is_delete = 0 and team_id != 0 and YEAR(date) = $year) AS team, + WHERE status = 1 and team_id != 0 and YEAR(date) = $year) AS team, (SELECT count(project_id) AS project FROM project - WHERE is_delete = 0 and team_id = 0 AND cluster_id = 0 and YEAR(date) = $year) AS project, + WHERE status = 1 and team_id = 0 AND cluster_id = 0 and YEAR(date) = $year) AS project, (SELECT count(project_id) AS all_project FROM project - WHERE is_delete = 0) AS all_project, + WHERE status = 1) AS all_project, (SELECT count(project_id) as by_year FROM project - Where is_delete = 0 and YEAR(date) = $year) as by_year - WHERE is_delete = 0 and cluster_id != 0 and YEAR(date) = $year"; + Where status = 1 and YEAR(date) = $year) as by_year + WHERE status = 1 and cluster_id != 0 and YEAR(date) = $year"; $query = $this->db->query($sql); return $query; } public function get_project_2($year) { - $sql = "SELECT *,project.name AS pj_name,cluster.name AS ct_name FROM {$this->db_name}.project + $sql = "SELECT *,project.name_th as pj_name,cluster.name AS ct_name FROM {$this->db_name}.project JOIN cluster ON project.cluster_id = cluster.cluster_id - WHERE is_delete = 0 AND project.cluster_id != 0 AND YEAR(date) = $year"; + WHERE status = 1 AND project.cluster_id != 0 AND YEAR(date) = $year"; $query = $this->db->query($sql); return $query; } @@ -40,7 +40,7 @@ class M_general extends Da_general public function get_project_year() { $sql = "SELECT YEAR(date) AS year FROM {$this->db_name}.project - WHERE is_delete = 0 + WHERE status = 1 GROUP BY YEAR(date) ORDER BY year DESC"; $query = $this->db->query($sql); @@ -50,7 +50,7 @@ class M_general extends Da_general public function get_project_2_year() { $sql = "SELECT YEAR(date) AS year FROM {$this->db_name}.project - WHERE is_delete = 0 AND cluster_id != 0 + WHERE status = 1 AND cluster_id != 0 GROUP BY YEAR(date) ORDER BY year DESC"; $query = $this->db->query($sql); @@ -59,9 +59,9 @@ class M_general extends Da_general public function get_project_3($year) { - $sql = "SELECT *,project.name AS pj_name,team.name AS t_name FROM {$this->db_name}.project + $sql = "SELECT *,project.name_th as pj_name,team.name AS t_name FROM {$this->db_name}.project JOIN team ON project.team_id = team.team_id - WHERE is_delete = 0 AND project.team_id !=0 AND YEAR(date) = $year"; + WHERE status = 1 AND project.team_id !=0 AND YEAR(date) = $year"; $query = $this->db->query($sql); return $query; } @@ -69,7 +69,7 @@ class M_general extends Da_general public function get_project_3_year() { $sql = "SELECT YEAR(date) AS year FROM {$this->db_name}.project - WHERE is_delete = 0 AND team_id != 0 + WHERE status = 1 AND team_id != 0 GROUP BY YEAR(date) ORDER BY year DESC"; $query = $this->db->query($sql); @@ -78,9 +78,9 @@ class M_general extends Da_general public function get_project_4($year) { - $sql = "SELECT project_id, name as pj_name, image_logo, image_cover, user.student_id, user.first_name, user.last_name FROM {$this->db_name}.project + $sql = "SELECT project_id, name_th as pj_name, image_logo, image_cover, user.student_id, user.first_name, user.last_name FROM {$this->db_name}.project join user on project.user_id = user.user_id - Where project.is_delete = 0 AND cluster_id = 0 AND team_id = 0 AND YEAR(date) = $year"; + Where project.status = 1 AND cluster_id = 0 AND team_id = 0 AND YEAR(date) = $year"; $query = $this->db->query($sql); return $query; } @@ -88,7 +88,7 @@ class M_general extends Da_general public function get_project_4_year() { $sql = "SELECT YEAR(date) AS year FROM {$this->db_name}.project - WHERE is_delete = 0 AND cluster_id = 0 AND team_id = 0 + WHERE status = 1 AND cluster_id = 0 AND team_id = 0 GROUP BY YEAR(date) ORDER BY year DESC"; $query = $this->db->query($sql); @@ -98,18 +98,82 @@ class M_general extends Da_general public function get_data_pagination($year, $page, $limit) { $offset = ($page - 1) * $limit; - $sql = "SELECT project_id, name as pj_name, image_logo, image_cover, user.student_id, user.first_name, user.last_name FROM {$this->db_name}.project + $sql = "SELECT project_id, name_th as pj_name, image_logo, image_cover, user.student_id, user.first_name, user.last_name FROM {$this->db_name}.project join user on project.user_id = user.user_id - Where project.is_delete = 0 AND cluster_id = 0 AND team_id = 0 AND YEAR(date) = $year + Where project.status = 1 AND cluster_id = 0 AND team_id = 0 AND YEAR(date) = $year LIMIT $limit OFFSET $offset"; $query = $this->db->query($sql); return $query; } + public function get_data_search_pagination($year, $grade, $cluster, $team, $company, $pname, $tag, $page, $limit) + { + $tag = ($tag == '') ? $tag = 'AND (project_tag.tag_id = project_tag.tag_id OR project_tag.tag_id IS NULL)' : $tag = 'AND project_tag.tag_id IN (' . $tag . ')'; + $offset = ($page - 1) * $limit; + $sql = "SELECT *, project.project_id as project_id + FROM project + LEFT OUTER JOIN project_tag ON project_tag.project_id = project.project_id + WHERE + (project_tag.project_id IS NULL OR project_tag.project_id = project_tag.project_id) + $pname + AND YEAR(date) = $year + AND company_id = $company + AND cluster_id = $cluster + AND team_id = $team + $grade + AND status = 1 + $tag + LIMIT $limit OFFSET $offset"; + $query = $this->db->query($sql); + return $query; + } + public function get_num_page($year) { $sql = "SELECT count(project_id) AS num_project FROM {$this->db_name}.project - Where is_delete = 0 AND cluster_id = 0 AND team_id = 0 AND YEAR(date) = $year"; + Where status = 1 AND cluster_id = 0 AND team_id = 0 AND YEAR(date) = $year"; + $query = $this->db->query($sql); + return $query; + } + + public function get_num_search_page($year, $grade, $cluster, $team, $company, $pname, $tag) + { + $tag = ($tag == '') ? $tag = 'AND (project_tag.tag_id = project_tag.tag_id OR project_tag.tag_id IS NULL)' : $tag = 'AND project_tag.tag_id IN (' . $tag . ')'; + $sql = "SELECT count(project.project_id) AS num_project + FROM project + LEFT JOIN project_tag ON project_tag.project_id = project.project_id + WHERE + (project_tag.project_id IS NULL OR project_tag.project_id = project_tag.project_id) + $pname + AND YEAR(date) = $year + AND company_id = $company + AND cluster_id = $cluster + AND team_id = $team + $grade + AND status = 1 + $tag + "; + $query = $this->db->query($sql); + // print_r($sql); + return $query; + } + + public function get_search($year, $grade, $cluster, $team, $company, $pname, $tag) + { + $sql = "SELECT * + FROM project + LEFT JOIN project_tag ON project_tag.project_id = project.project_id + WHERE + (project_tag.project_id IS NULL OR project_tag.project_id = project_tag.project_id) + AND name = $pname + AND YEAR(date) = $year + AND company_id = $company + AND cluster_id = $cluster + AND team_id = $team + $grade + AND status = 1 + AND (project_tag.tag_id = $tag OR $tag IS NULL) -- Optional: include a tag filter + "; $query = $this->db->query($sql); return $query; } diff --git a/html/exhi/application/views/general/v_general_home.php b/html/exhi/application/views/general/v_general_home.php index e65a20e2cb6d70c17d1a86ffead6a925033f2d65..6e742a31572269fba6cefb3f555eb268a043ae5d 100644 --- a/html/exhi/application/views/general/v_general_home.php +++ b/html/exhi/application/views/general/v_general_home.php @@ -425,7 +425,7 @@ </div> <div class="form-group has-success"> <label class="form-label">หมวดหมู่: </label> - <select class="js-example-basic-multiple form-control" name="tag" multiple="multiple" id="muti"> + <select class="js-example-basic-multiple form-control" name="tag[]" multiple="multiple" id="muti"> <?php foreach ($tags as $tag) { ?> <option value="<?php echo $tag->tag_id ?>"><?php echo $tag->name ?></option> <?php } ?> diff --git a/html/exhi/application/views/general/v_project_4.php b/html/exhi/application/views/general/v_project_4.php index bd9cb1d41298d39cf981876523135a1e2ad2184a..9bdf7a893f75a9e37c057fcf3ba051dc11c2d71d 100644 --- a/html/exhi/application/views/general/v_project_4.php +++ b/html/exhi/application/views/general/v_project_4.php @@ -21,6 +21,7 @@ text-align: left; } </style> +<?php $y = $_GET['y']; ?> <div class="content-wrapper h-100"> <div class="content-header"> <div class="container-fluid g-3"> @@ -81,7 +82,7 @@ h2.setAttribute("class", "notfound") const text = document.createTextNode('- ไม่พบข้อมูล -') h2.appendChild(text) - selectList.appendChild(h) + selectList.appendChild(h2) } } @@ -157,6 +158,9 @@ data.forEach((row, index) => { option = document.createElement("option") option.setAttribute("value", row.year) + if (row.year == <?php echo $y ?>) { + option.setAttribute("selected", "selected") + } const number = parseInt(row.year) + 543 option.text = number selectList.appendChild(option) diff --git a/html/exhi/application/views/general/v_search.php b/html/exhi/application/views/general/v_search.php index b3552d22ecb30ecfa319e68a972745822193f3e7..94d11fb64c263a5328509fbb654476cb2953f5bd 100644 --- a/html/exhi/application/views/general/v_search.php +++ b/html/exhi/application/views/general/v_search.php @@ -21,11 +21,6 @@ text-align: left; } </style> -<pre> - <?php - echo print_r($keyword); - ?> -</pre> <div class="content-wrapper h-100"> <div class="content-header"> <div class="container-fluid g-3"> @@ -56,25 +51,39 @@ <div id="data-container"></div> <script> $(document).ready(function() { - + load_data() + load_num_project() }); let current_page = 1; function load_data() { - var year = document.getElementById("year").value; var limit = document.getElementById("limit").value; + var year = '<?php echo $year; ?>'; + var grade = '<?php echo $grade; ?>'; + var cluster = '<?php echo $cluster; ?>'; + var team = '<?php echo $team; ?>'; + var company = '<?php echo $company; ?>'; + var pname = '<?php echo $pname; ?>'; + var tag = <?php echo json_encode($tag); ?>; $.ajax({ type: "get", - url: "<?php echo site_url() . '/General/get_data_pagination' ?>", + url: "<?php echo site_url() . '/General/get_data_search_pagination' ?>", data: { 'year': year, + 'grade': grade, + 'cluster': cluster, + 'team': team, + 'company': company, + 'pname': pname, + 'tag': tag, 'page': current_page, 'limit': limit }, dataType: "json", success: function(data) { + console.log(data); create_project(data.pagination) } }); @@ -82,11 +91,24 @@ function load_num_project() { var limit = document.getElementById("limit").value; + var year = '<?php echo $year; ?>'; + var grade = '<?php echo $grade; ?>'; + var cluster = '<?php echo $cluster; ?>'; + var team = '<?php echo $team; ?>'; + var company = '<?php echo $company; ?>'; + var pname = '<?php echo $pname; ?>'; + var tag = <?php echo json_encode($tag); ?>; $.ajax({ type: "get", - url: "<?php echo site_url() . '/General/get_num_page' ?>", + url: "<?php echo site_url() . '/General/get_num_search_page' ?>", data: { - + 'year': year, + 'grade': grade, + 'cluster': cluster, + 'team': team, + 'company': company, + 'pname': pname, + 'tag': tag, }, dataType: "json", success: function(data) { @@ -112,6 +134,7 @@ current_page--; console.log('page' + current_page); load_data(); + mark_btn('page' + current_page); } } @@ -120,6 +143,7 @@ current_page++; console.log('page' + current_page); load_data(); + mark_btn('page' + current_page); } } @@ -127,7 +151,7 @@ function create_project(data) { let html = ''; data.forEach((row, index) => { - html += `<a href="<?php echo site_url() . '/General/show_project_4' ?>" class="col-md-2">`; + html += `<a href="<?php echo site_url() . '/General/show_select/' ?>` + row.project_id + `" class="col-md-2">`; html += `<div class="card card-widget widget-user">`; html += `<div class="widget-user-header text-white" style="background: url('` + row.image_cover + `') center center;">`; html += `</div>`; @@ -135,7 +159,7 @@ html += `<img class="img-circle" src="` + row.image_logo + `" alt="User Avatar">`; html += `</div>`; html += `<div class="card-body">`; - html += `<h5 class="description-header"><b>` + row.name + `</b></h5><br>`; + html += `<h5 class="description-header"><b>` + row.name_th + `</b></h5><br>`; html += `<div class="description-block">`; html += `<h5 class="description-header">` + row.first_name + ' ' + row.last_name + `</h5>`; html += `<h5 class="description-header">` + row.student_id + `</h5>`; @@ -152,10 +176,26 @@ html += `<li><button class="page-link" onclick="previous_page()">ก่อนหน้า</button></li>`; for (i = 0; i < data; i++) { let page = i + 1; - console.log('i' + i); - html += `<li><button class="page-link" onclick="set_page(` + page + `)">` + page + `</button></li>`; + html += `<li><button class="page-link" id="page` + page + `" onclick="set_page(` + page + `); mark_btn('page` + page + `');">` + page + `</button></li>`; } html += `<li><button class="page-link" onclick="next_page(` + data + `)">ถัดไป</button></li>`; document.getElementById('select-page').innerHTML = html; + mark_btn('page' + current_page); + } + + function mark_btn(btn_page_id) { + var elements = document.getElementsByClassName("page-link"); + for (var i = 0; i < elements.length; i++) { + elements[i].style.backgroundColor = ""; + elements[i].style.color = ""; + elements[i].style.border = ""; + } + var btn_page = document.getElementById(btn_page_id); + if (btn_page !== null) { + btn_page.style.backgroundColor = "darkturquoise"; + btn_page.style.color = "white"; + btn_page.style.border = "1px solid gray"; + } + } </script> \ No newline at end of file