ต้องแก้ไข 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 เดียวกันได้ ตามกรอบสีแดงครับ
Sumate Mephokkij
16-04-2020
16:09:28
คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา
โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ