ต้องแก้ไข Code อย่างไร จึงจะรองรับการ Export Table เป็น Excel แบบเลือกช่วงวันที่ได้ครับ
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ต้องแก้ไข Code อย่างไร จึงจะรองรับการ Export Table เป็น Excel แบบเลือกช่วงวันที่ได้ครับ
ต้องแก้ไข Code อย่างไร จึงจะรองรับการ Export Table เป็น Excel แบบเลือกช่วงวันที่ได้ครับ
Copy
ต้องแก้ไข Code อย่างไร จึงจะรองรับการ Export Table เป็น Excel แบบเลือกช่วงวันที่ได้ เพราะลองเขียน Code ตามตัวอย่างด้านล่างแล้ว Export Table เป็น Excel มาแต่แบบทั้งหมด ไม่มาแบบเลือกช่วงวันที่ครับ
ตัวอย่าง Code มีที่มาจากเว็บด้านล่างครับ
ชุดไฟล์ + Code ทั้งหมดครับ
1. testdata.sql (ชื่อ database คือ testdata ครับ)
CREATE TABLE `testdata` ( `IDrun` int(100) NOT NULL, `IDrun2` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, `IDnumber` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, `Name` longtext COLLATE utf8_unicode_ci, `Work1` longtext COLLATE utf8_unicode_ci, `Work2` longtext COLLATE utf8_unicode_ci, `MyTime` longtext COLLATE utf8_unicode_ci, `logtime` longtext COLLATE utf8_unicode_ci, `logdate` longtext COLLATE utf8_unicode_ci, `sortdate` longtext COLLATE utf8_unicode_ci, `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 (39, 'a', '1', 'a', '', '', '', '', '02-04-2563', '2563-04-02', '2020-04-02'), (36, 'b', '2', 'b', '', '', '', '', '31-03-2563', '2563-03-31', '2020-03-31'), (44, 'c', '3', 'c', '', '', '', '', '03-04-2563', '2563-04-03', '2020-04-03'), (58, 'd', '4', 'd', '', '', '', '', '07-04-2563', '2563-04-07', '2020-04-07'), (57, 'e', '5', 'e', '', '', '', '', '06-04-2563', '2563-04-06', '2020-04-06'), (66, 'f', '6', 'f', '', '', '', '', '09-04-2563', '2563-04-09', '2020-04-09'); ALTER TABLE `testdata` ADD PRIMARY KEY (`IDrun`); ALTER TABLE `testdata` MODIFY `IDrun` int(100) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=67;
2. index.php
<?php $conn = mysqli_connect("localhost", "root", "", "testdata"); mysqli_set_charset($conn, "utf8"); $post_at = ""; $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">Export to Excel</a> </p> <?php if(!empty($result)) { ?> <table class="table-content"> <thead> <tr> <th><div align="center">aa </div></th> <th style="width:22%"><div align="center">bb </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">ff </div></th> <th><div align="center">gg </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"); $sql = "SELECT * FROM testdata ORDER BY sortdate ASC, logtime ASC"; $query = mysqli_query($conn,$sql); ?> <?php $conn = mysqli_connect("localhost", "root", "", "testdata"); mysqli_set_charset($conn, "utf8"); $post_at = ""; $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 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">aa </div></th> <th><div align="center">bb </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">ff </div></th> <th><div align="center">gg </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 แล้ว ตารางใน Excel มาแต่แบบทั้งหมด ไม่มาแบบเลือกช่วงวันที่ครับ
Sumate Mephokkij
09-04-2020
11:31:40
คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา
โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ