ต้องแก้ไข Code อย่างไร จึงจะรองรับการ Export Table เป็น Excel ในรูปแบบ รวมตาราง status = start กับ finish ได้
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ต้องแก้ไข Code อย่างไร จึงจะรองรับการ Export Table เป็น Excel ในรูปแบบ รวมตาราง status = start กับ finish ได้
ต้องแก้ไข Code อย่างไร จึงจะรองรับการ Export Table เป็น Excel ในรูปแบบ รวมตาราง status = start กับ finish ได้
Copy
ต้องแก้ไข Code อย่างไร จึงจะรองรับการ Export Table เป็น Excel ในรูปแบบ รวมตาราง status = start กับ status = finish ใน number , name , date เดียวกัน ได้ครับ
2. index.php
3. excel2.php

Screenshot 1 ที่อธิบายว่า เลือกช่วงวันที่แล้ว ก่อนที่จะ Export เป็น Excel ครับ

Screenshot 2 ที่อธิบายว่า เมื่อ Export เป็น Excel แล้ว สามารถรวมตาราง status = start กับ status = finish ใน name เดียวกันได้ ตามกรอบสีแดงครับ

ชุดไฟล์ + Code ทั้งหมดครับ
เพิ้มเติม : บรรทัดตรง header $strExcelFileName ไม่มี Backslash ให้พิมพ์ตามรูปด้านล่างครับ

เพิ้มเติม : บรรทัดตรง header $strExcelFileName ไม่มี Backslash ให้พิมพ์ตามรูปด้านล่างครับ

1. testdata.sql (ชื่อ database คือ testdata ครับ)
CREATE TABLE `testdata` ( `IDrun` int(100) NOT NULL, `IDrun2` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `IDnumber` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `Name` longtext COLLATE utf8_unicode_ci NOT NULL, `Work1` longtext COLLATE utf8_unicode_ci NOT NULL, `Work2` longtext COLLATE utf8_unicode_ci NOT NULL, `MyTime` longtext COLLATE utf8_unicode_ci NOT NULL, `logtime` longtext COLLATE utf8_unicode_ci NOT NULL, `logdate` longtext COLLATE utf8_unicode_ci NOT NULL, `sortdate` longtext COLLATE utf8_unicode_ci NOT NULL, `sortdate2` date NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; INSERT INTO `testdata` (`IDrun`, `IDrun2`, `IDnumber`, `Name`, `Work1`, `Work2`, `MyTime`, `logtime`, `logdate`, `sortdate`, `sortdate2`) VALUES (74, 'aaaaaa', '111111', 'aaaaaa', '', '', 'Start', '07:00:00', '13-04-2563', '2563-04-13', '2020-04-13'), (75, 'bbbbbb', '222222', 'bbbbbb', '', '', 'Start', '08:00:00', '13-04-2563', '2563-04-13', '2020-04-13'), (76, 'bbbbbb', '222222', 'bbbbbb', '', '', 'Finish', '16:00:00', '13-04-2563', '2563-04-13', '2020-04-13'), (77, 'aaaaaa', '111111', 'aaaaaa', '', '', 'Finish', '18:00:00', '13-04-2563', '2563-04-13', '2020-04-13'), (78, 'cccccc', '333333', 'cccccc', '', '', 'Start', '08:00:00', '14-04-2563', '2563-04-14', '2020-04-14'), (79, 'dddddd', '444444', 'dddddd', '', '', 'Start', '08:00:00', '14-04-2563', '2563-04-14', '2020-04-14'), (80, 'dddddd', '444444', 'dddddd', '', '', 'Finish', '16:00:00', '14-04-2563', '2563-04-14', '2020-04-14'), (81, 'cccccc', '333333', 'cccccc', '', '', 'Finish', '16:00:00', '14-04-2563', '2563-04-14', '2020-04-14'), (82, 'eeeeee', '555555', 'eeeeee', '', '', 'Finish', '20:00:00', '14-04-2563', '2563-04-14', '2020-04-14'), (83, 'eeeeee', '555555', 'eeeeee', '', '', 'Start', '07:00:00', '14-04-2563', '2563-04-14', '2020-04-14'); ALTER TABLE `testdata` ADD PRIMARY KEY (`IDrun`); ALTER TABLE `testdata` MODIFY `IDrun` int(100) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=86;
2. index.php
<?php
$conn = mysqli_connect("localhost", "root", "", "testdata");
mysqli_set_charset($conn, "utf8");
$post_at = "";
$post_at_to_date = "";
$_post_at = (isset($_POST['search']['post_at'])) ? $_POST['search']['post_at'] : '';
$_post_at_to_date = (isset($_POST['search']['post_at_to_date'])) ? $_POST['search']['post_at_to_date'] : '';
$queryCondition = "";
if(!empty($_POST["search"]["post_at"])) {
$post_at = $_POST["search"]["post_at"];
list($fid,$fim,$fiy) = explode("-",$post_at);
$post_at_todate = date('Y-m-d');
if(!empty($_POST["search"]["post_at_to_date"])) {
$post_at_to_date = $_POST["search"]["post_at_to_date"];
list($tid,$tim,$tiy) = explode("-",$_POST["search"]["post_at_to_date"]);
$post_at_todate = "$tiy-$tim-$tid";
}
$queryCondition .= "WHERE sortdate BETWEEN '$fiy-$fim-$fid' AND '" . $post_at_todate . "'";
}
$sql = "SELECT * FROM testdata " . $queryCondition . " ORDER BY sortdate ASC, logtime ASC";
$result = mysqli_query($conn,$sql);
?>
<html>
<head>
<meta charset="UTF-8">
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<style>
* {
font-size: 24px;
}
.table-content{border-top:#CCCCCC 4px solid; width:80%; overflow-x:auto;}
.table-content th {padding:5px 20px; background: #F0F0F0;vertical-align:top;}
.table-content td {padding:5px 20px; border-bottom: #F0F0F0 1px solid;vertical-align:top;}
</style>
</head>
<body><center>
<div class="demo-content">
<form name="frmSearch" method="POST" action="">
<p class="search_input">
<input type="text" placeholder="From Date" id="post_at" name="search[post_at]" value="<?php echo $post_at; ?>" class="input-control" />
<input type="text" placeholder="To Date" id="post_at_to_date" name="search[post_at_to_date]" style="margin-left:10px" value="<?php echo $post_at_to_date; ?>" class="input-control" /><br>
<input type="submit" name="go" value="Search" >
<a href = "excel2.php?search[post_at]=<?=$_post_at?>&search[post_at_to_date]=<?=$_post_at_to_date?>&go=Search">Export to Excel</a>
</p>
<?php if(!empty($result)) { ?>
<table class="table-content">
<thead>
<tr>
<th><div align="center">number </div></th>
<th style="width:22%"><div align="center">name </div></th>
<th><div align="center">cc </div></th>
<th><div align="center">ee </div></th>
<th style="width:15%"><div align="center">date </div></th>
<th><div align="center">status </div></th>
<th><div align="center">time </div></th>
</tr>
</thead>
<tbody>
<?php
while($row = mysqli_fetch_array($result)) {
?>
<tr>
<td><div align="center"><?php echo $row["IDnumber"];?></div></td>
<td><div align="left"><?php echo $row["Name"];?></div></td>
<td><div align="center"><?php echo $row["Work1"];?></div></td>
<td><div align="center"><?php echo $row["Work2"];?></div></td>
<td><div align="center"><?php echo $row["logdate"];?></div></td>
<td><div align="center"><?php echo $row["MyTime"];?></div></td>
<td><div align="center"><?php echo $row["logtime"];?></div></td>
</tr>
<?php
}
?>
<tbody>
</table>
<?php } ?>
</form>
</div>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script>
$.datepicker.setDefaults({
dateFormat: 'dd-mm-yy',
showOn: 'button',
buttonImage: "datepicker.png",
buttonImageOnly: false,
dayNamesMin: ['อา', 'จ', 'อ', 'พ', 'พฤ', 'ศ', 'ส'],
monthNamesShort: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน','กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'],
changeMonth: true,
changeYear: true,
beforeShow:function(){
if($(this).val()!=""){
var arrayDate=$(this).val().split("-");
arrayDate[2]=parseInt(arrayDate[2])-543;
$(this).val(arrayDate[0]+"-"+arrayDate[1]+"-"+arrayDate[2]);
}
setTimeout(function(){
$.each($(".ui-datepicker-year option"),function(j,k){
var textYear=parseInt($(".ui-datepicker-year option").eq(j).val())+543;
$(".ui-datepicker-year option").eq(j).text(textYear);
});
},50);
},
onChangeMonthYear: function(){
setTimeout(function(){
$.each($(".ui-datepicker-year option"),function(j,k){
var textYear=parseInt($(".ui-datepicker-year option").eq(j).val())+543;
$(".ui-datepicker-year option").eq(j).text(textYear);
});
},50);
},
onClose:function(){
if($(this).val()!="" && $(this).val()==dateBefore){
var arrayDate=dateBefore.split("-");
arrayDate[2]=parseInt(arrayDate[2])+543;
$(this).val(arrayDate[0]+"-"+arrayDate[1]+"-"+arrayDate[2]);
}
},
onSelect: function(dateText, inst){
dateBefore=$(this).val();
var arrayDate=dateText.split("-");
arrayDate[2]=parseInt(arrayDate[2])+543;
$(this).val(arrayDate[0]+"-"+arrayDate[1]+"-"+arrayDate[2]);
}
});
$(function() {
$("#post_at").datepicker();
$("#post_at_to_date").datepicker();
});
</script>
</center>
</body></html>
3. excel2.php
<?php
//คำสั่ง connect db เขียนเพิ่มเองนะ
$serverName = "localhost";
$userName = "root";
$userPassword = "";
$dbName = "testdata";
$conn = mysqli_connect($serverName,$userName,$userPassword,$dbName);
mysqli_set_charset($conn,"utf8");
$strExcelFileName="testdata.xls";
header("Content-Type: application/x-msexcel; name="$strExcelFileName"");
header("Content-Disposition: inline; filename="$strExcelFileName"");
header("Pragma:no-cache");
$post_at = "";
$post_at_to_date = "";
$queryCondition = "";
if(!empty($_GET["search"]["post_at"])) {
$post_at = $_GET["search"]["post_at"];
list($fid,$fim,$fiy) = explode("-",$post_at);
$post_at_todate = date('Y-m-d');
if(!empty($_GET["search"]["post_at_to_date"])) {
$post_at_to_date = $_GET["search"]["post_at_to_date"];
list($tid,$tim,$tiy) = explode("-",$_GET["search"]["post_at_to_date"]);
$post_at_todate = "$tiy-$tim-$tid";
}
$queryCondition .= "WHERE sortdate BETWEEN '$fiy-$fim-$fid' AND '" . $post_at_todate . "'";
}
$sql = "SELECT * FROM testdata " . $queryCondition . " ORDER BY sortdate ASC, logtime ASC";
$query = mysqli_query($conn,$sql);
?>
<html xmlns:o="urn:schemas-microsoft-com:office:office"xmlns:x="urn:schemas-microsoft-com:office:excel"xmlns="http://www.w3.org/TR/REC-html40">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<strong>testdata</strong><br>
<br>
<div id="SiXhEaD_Excel" align=center x:publishsource="Excel">
<table x:str border=1 cellpadding=0 cellspacing=1 width=50% style="border-collapse:collapse">
<tr>
<th><div align="center">number </div></th>
<th><div align="center">name </div></th>
<th><div align="center">cc </div></th>
<th><div align="center">ee </div></th>
<th><div align="center">date </div></th>
<th><div align="center">status </div></th>
<th><div align="center">time </div></th>
</tr>
<?php
while($result=mysqli_fetch_array($query,MYSQLI_ASSOC))
{
?>
<tr>
<td><div align="center"><?php echo $result["IDnumber"];?></div></td>
<td><div align="left"><?php echo " ".$result["Name"];?></div></td>
<td><div align="center"><?php echo $result["Work1"];?></div></td>
<td><div align="center"><?php echo $result["Work2"];?></div></td>
<td><div align="center"><?php echo $result["logdate"];?></div></td>
<td><div align="center"><?php echo $result["MyTime"];?></div></td>
<td><div align="center"><?php echo $result["logtime"];?></div></td>
</tr>
<?php
}
?>
</table>
</div>
<script>
window.onbeforeunload = function(){return false;};
setTimeout(function(){window.close();}, 10000);
</script>
</body>
</html>
4. datepicker.png โหลดได้ที่ Link ด้านล่างครับ
โครงสร้าง File ทังหมด มีดังนี้ครับ

Screenshot 1 ที่อธิบายว่า เลือกช่วงวันที่แล้ว ก่อนที่จะ Export เป็น Excel ครับ

Screenshot 2 ที่อธิบายว่า เมื่อ Export เป็น Excel แล้ว สามารถรวมตาราง status = start กับ status = finish ใน name เดียวกันได้ ตามกรอบสีแดงครับ

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา
โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ