Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > เช็ค pagination ให้หน่อยครับ กดหน้าอื่นๆ ไม่ไป เพิ่มข้อมูล ได้ปกติ ค้นหาได้ปกติครับ



 

เช็ค pagination ให้หน่อยครับ กดหน้าอื่นๆ ไม่ไป เพิ่มข้อมูล ได้ปกติ ค้นหาได้ปกติครับ

 



Topic : 137077



โพสกระทู้ ( 0 )
บทความ ( 0 )



สถานะออฟไลน์




index.php
<?php include 'config.php'; ?>
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href='https://unpkg.com/[email protected]/css/boxicons.min.css' rel='stylesheet'>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@10"></script>
<script src="https://unpkg.com/[email protected]/dist/sweetalert.min.js"></script>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<link rel="stylesheet" href="styles.css">
<link rel="stylesheet" href="css.css">
<title>GX Office</title>

</head>

<body>
<!-- Sidebar -->
<div class="sidebar">
<a href="#" class="logo">
<i class='bx bx-code-alt'></i>
<div class="logo-name"><span>GX </span>Office</div>
</a>
<ul class="side-menu">
<li><a href="../../th"><i class='bx bxs-dashboard'></i>หน้าหลัก</a></li>
<li><a href="../data"><i class='bx bxs-data'></i>Data</a></li>
<li><a href="../quantity/"><i class='bx bx-analyse'></i>ปริมาณ</a></li>
<li><a href="../quality/"><i class='bx bx-border-all'></i>คุณภาพ</a></li>
<li><a href="../workschedule/"><i class='bx bx-calendar-plus'></i>ตารางการทำงาน</a></li>
<li><a href="../report/"><i class='bx bx-calendar-plus'></i>รายงานคัว</a></li>
<li><a href="../employee/"><i class='bx bx-group'></i>พนักงาน</a></li>
<li><a href="../note/"><i class='bx bx-notepad'></i>Note</a></li>
<li class="active"><a href="../setting/"><i class='bx bx-cog'></i>ตั้งค่า</a></li>
</ul>
<ul class="side-menu">
<li>
<a href="#" class="logout">
<i class='bx bx-log-out-circle'></i>
ออกจากระบบ
</a>
</li>
</ul>
</div>
<!-- End of Sidebar -->

<!-- Main Content -->
<div class="content">
<!-- Navbar -->
<nav>
<i class='bx bx-menu'></i>
<form action="#">
<div class="form-input">
<input type="search" placeholder="Search...">
<button class="search-btn" type="submit"><i class='bx bx-search'></i></button>
</div>
</form>
<input type="checkbox" id="theme-toggle" hidden>
<label for="theme-toggle" class="theme-toggle"></label>
<a href="#" class="profile">
<img src="images/logo.png">
</a>
</nav>

<!-- End of Navbar -->
<main>
<form id="addDataForm">
<input type="text" id="shift" placeholder="Shift">
<input type="date" id="date" placeholder="Date">
<input type="text" id="name" placeholder="Name">
<input type="email" id="email" placeholder="Email">
<textarea id="remark" placeholder="Remark"></textarea>
<button type="button" onclick="addData()">Submit</button>
</form>

<div>
<input type="text" id="searchTerm" placeholder="ค้นหา...">
<input type="date" id="fromDate">
<input type="date" id="toDate">
<button onclick="fetchData()">ค้นหา</button>
</div>

<table>
<thead>
<tr>
<th>ID</th>
<th>Shift</th>
<th>Date</th>
<th>Name</th>
<th>Email</th>
<th>Remark</th>
<th>Actions</th>
</tr>
</thead>
<tbody id="dataBody"></tbody>
</table>

<div class="pagination-container">
<a href="#" onclick="changePage(page - 1)" class="pagination-prev">&lt;</a>
<div id="pagination"></div>
<a href="#" onclick="changePage(page + 1)" class="pagination-next">&gt;</a>
</div>


<!-- Edit Modal -->
<div id="editModal" class="modal">
<div class="modal-content">
<span class="close-btn" onclick="closeEditModal()">&times;</span>
<h2>แก้ไขข้อมูล</h2>

<label for="editShift">Shift</label>
<input type="text" id="editShift" name="editShift">

<label for="editDate">Date</label>
<input type="date" id="editDate" name="editDate">

<label for="editName">Name</label>
<input type="text" id="editName" name="editName">

<label for="editEmail">Email</label>
<input type="email" id="editEmail" name="editEmail">

<label for="editRemark">Remark</label>
<input type="text" id="editRemark" name="editRemark">

<button onclick="updateData()">บันทึกการแก้ไข</button>
</div>
</div>


</main>

</div>
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="scripts.js"></script>
<script src="js.js"></script>

</body>

</html>


fetch_data.php
<?php
include 'config.php';

$searchTerm = $_POST['searchTerm'] ?? '';
$fromDate = $_POST['fromDate'] ?? date('Y-m-d', strtotime('-7 days'));
$toDate = $_POST['toDate'] ?? date('Y-m-d');
$page = $_POST['page'] ?? 1;
$limit = 10;
$offset = ($page - 1) * $limit;

$query_total = "SELECT COUNT(*) as total FROM reportmember WHERE date BETWEEN '$fromDate' AND '$toDate' AND (name LIKE '%$searchTerm%' OR email LIKE '%$searchTerm%' OR remark LIKE '%$searchTerm%')";
$result_total = $conn->query($query_total);
$total = $result_total->fetch_assoc()['total'];

$query = "SELECT * FROM reportmember WHERE date BETWEEN '$fromDate' AND '$toDate' AND (name LIKE '%$searchTerm%' OR email LIKE '%$searchTerm%' OR remark LIKE '%$searchTerm%') LIMIT $limit OFFSET $offset";
$result = $conn->query($query);

$data = [];
while($row = $result->fetch_assoc()) {
$data[] = $row;
}

echo json_encode(['data' => $data, 'total' => $total]);
?>

scripts.js
let page = 1;

function fetchData() {
const searchTerm = $('#searchTerm').val();
const fromDate = $('#fromDate').val() || (new Date(Date.now() - 7*24*60*60*1000)).toISOString().substr(0, 10);
const toDate = $('#toDate').val() || (new Date()).toISOString().substr(0, 10);

$.ajax({
method: "POST",
url: "fetch_data.php",
data: {
searchTerm: searchTerm,
fromDate: fromDate,
toDate: toDate,
page: page
},
success: function(response) {
const results = JSON.parse(response).data;
const total = JSON.parse(response).total;
let htmlString = "";

// Populate Data
for (let item of results) {
htmlString += `<tr>
<td>${item.id}</td>
<td>${item.shift}</td>
<td>${item.date}</td>
<td>${item.name}</td>
<td>${item.email}</td>
<td>${item.remark}</td>
<td><button onclick="editData(${item.id})">แก้ไข</button> <button onclick="deleteData(${item.id})">ลบ</button></td>
</tr>`;
}
$("#dataBody").html(htmlString);

// Pagination
const pages = Math.ceil(total / 10);
let paginationHTML = '';
for(let i = 1; i <= pages; i++) {
if(i === page) {
paginationHTML += `<span>${i}</span> `;
} else {
paginationHTML += `<a href="#" onclick="changePage(${i})">${i}</a> `;
}
}
$("#pagination").html(paginationHTML);
}
});
}

function changePage(newPage) {
const totalPages = Math.ceil(total / 10);
if (newPage >= 1 && newPage <= totalPages) {
page = newPage;
fetchData();
}
}

// Fetch initial data
$(document).ready(function() {
fetchData();
});


function editData(id) {
editingId = id;

// Fetch the current data for this ID
$.ajax({
method: "POST",
url: "get_data.php",
data: { id: id },
success: function(response) {
const data = JSON.parse(response);

$("#editShift").val(data.shift);
$("#editDate").val(data.date);
$("#editName").val(data.name);
$("#editEmail").val(data.email);
$("#editRemark").val(data.remark);

// Open the modal
$("#editModal").css("display", "block");
}
});
}

function closeEditModal() {
$("#editModal").css("display", "none");
}
function updateData() {
const shift = $("#editShift").val();
const date = $("#editDate").val();
const name = $("#editName").val();
const email = $("#editEmail").val();
const remark = $("#editRemark").val();

$.ajax({
method: "POST",
url: "update_data.php",
data: {
id: editingId,
shift: shift,
date: date,
name: name,
email: email,
remark: remark
},
success: function() {
fetchData();
closeEditModal();

// Show SweetAlert
Swal.fire({
icon: 'success',
title: 'บันทึกเรียบร้อย',
text: 'ข้อมูลถูกปรับปรุงแล้ว',
timer: 1500,
showConfirmButton: false
});
},
error: function() {
// Error SweetAlert
Swal.fire({
icon: 'error',
title: 'เกิดข้อผิดพลาด',
text: 'ไม่สามารถปรับปรุงข้อมูลได้'
});
}
});
}


function addData() {
const shift = $("#shift").val();
const date = $("#date").val();
const name = $("#name").val();
const email = $("#email").val();
const remark = $("#remark").val();

$.ajax({
method: "POST",
url: "add_data.php",
data: {
shift: shift,
date: date,
name: name,
email: email,
remark: remark
},
success: function(response) {
if(response === 'success') {
// Use SweetAlert to show success message
swal("Success!", "Data added successfully.", "success");

// Clear the form
$("#addDataForm")[0].reset();
} else {
// Use SweetAlert to show error message
swal("Error!", "There was an issue adding the data.", "error");
}
}
});
}




Tag : PHP, MySQL, HTML5, JavaScript, Ajax, jQuery







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2023-08-05 11:08:00 By : pharyupharyu View : 268 Reply : 6
 

 
เพราะ ajax request ส่งค่า page ที่เป็นตัวแปรแบบ global จากบรรทัดนี้
let page = 1;

แต่ในฟังก์ชัน fetchData กลับไม่มีตัวแปรที่เก็บค่า page แบบ local
แก้โดยลบตัวแปร page แบบ global ออก
แล้วส่งค่า page ไปในฟังก์ชัน fetchData ด้วยพารามิเตอร์

Code เฉพาะส่วนที่ต้องแก้ (JavaScript)
function fetchData(page) {
  const searchTerm = $('#searchTerm').val();
  const fromDate = $('#fromDate').val() || (new Date(Date.now() - 7*24*60*60*1000)).toISOString().substr(0, 10);
  const toDate = $('#toDate').val() || (new Date()).toISOString().substr(0, 10);

  $.ajax({
    method: "POST",
    url: "fetch_data.php",
    data: {
      searchTerm: searchTerm,
      fromDate: fromDate,
      toDate: toDate,
      page: page // Pass the current page number to the server
    },
    success: function(response) {
      // Existing code for updating the table data

      // Pagination
      const pages = Math.ceil(total / 10);
      let paginationHTML = '';
      for (let i = 1; i <= pages; i++) {
        if (i === page) {
          paginationHTML += `<span>${i}</span> `;
        } else {
          paginationHTML += `<a href="#" onclick="changePage(${i})">${i}</a> `;
        }
      }
      $("#pagination").html(paginationHTML);
    }
  });
}

function changePage(newPage) {
  const totalPages = Math.ceil(total / 10);
  if (newPage >= 1 && newPage <= totalPages) {
    fetchData(newPage); // Pass the new page to fetchData function
  }
}

// Fetch initial data
$(document).ready(function() {
  const initialPage = 1; // Set the initial page to 1
  fetchData(initialPage); // Fetch data for the initial page
});






อีกอย่าง การใส่ reference js ไม่ควรใส่ library เดียวกันแบบหลายเวอร์ชัน...เลือกอันใหม่หรือเก่าเวอร์ชันเดียวก็พอ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-08-05 13:45:36 By : 009
 


 
ขอบพระคุณครับ รบกวนอีกอย่างครับ ต้องเอาตัวนี้ออกไหมครับ let page = 1;
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-08-05 19:16:50 By : pharyupharyu
 

 
ตอบความคิดเห็นที่ : 1 เขียนโดย : 009 เมื่อวันที่ 2023-08-05 13:45:36
รายละเอียดของการตอบ ::
... ขอบพระคุณครับ รบกวนอีกอย่างครับ ต้องเอาตัวนี้ออกไหมครับ let page = 1;


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-08-05 19:17:21 By : pharyupharyu
 


 
ตอบความคิดเห็นที่ : 3 เขียนโดย : pharyupharyu เมื่อวันที่ 2023-08-05 19:17:21
รายละเอียดของการตอบ ::
ไม่จำเป็น แต่ควรจะ

ทบทวนพื้นฐานของ js โดยเฉพาะการประกาศตัวแปร
คำค้น js variable scope

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-08-06 02:04:01 By : 009
 


 
ตอบความคิดเห็นที่ : 4 เขียนโดย : 009 เมื่อวันที่ 2023-08-06 02:04:01
รายละเอียดของการตอบ ::
... ขอบคุณครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-08-06 13:03:41 By : pharyupharyu
 


 

No. 6



โพสกระทู้ ( 4,720 )
บทความ ( 8 )



สถานะออฟไลน์


ตรวจดูโค้ดก่อนว่ามีการเรียกใช้ตัวแปร page หรือไม่. ดูดีๆด้วยทุกตัวอักษร page ไม่ใช่ pages และไม่ใช่ Page!!

แล้วการประกาศตัวแปร let, var มีความแตกต่างกัน ถ้าประกาศผิดที่ผิดทางผิดรูปแบบ ก็ใช้ไม่ได้อีก

บางกรณีอาจไม่ต้องประกาศก็ใช้ได้ (เคยเจอในเบราเซอร์เมื่อก่อน เดี๋ยวนี้ไม่รู้เป็นอยู่มั้ย). ซึ่งถ้ามันใช้ได้ แต่วันดีคืนดีไปกำหนด 'use strict' ขึ้นมาก็โค้ดตายครับ.
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-08-06 21:13:30 By : mr.v
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : เช็ค pagination ให้หน่อยครับ กดหน้าอื่นๆ ไม่ไป เพิ่มข้อมูล ได้ปกติ ค้นหาได้ปกติครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่