รบกวนสอบถามเรื่องรายงานสรุปประจำวัน
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา รบกวนสอบถามเรื่องรายงานสรุปประจำวัน
จากตาราง
buy_ticket
[url=http://www.mx7.com/view2/yCmTT7ziRWIysJSE][img]http://www.mx7.com/i/582/DAR27p.jpg[/img][/url]
book_ticket
[url=http://www.mx7.com/view2/yCmTSLACAn9AhVuC][img]http://www.mx7.com/i/7f9/bMU3AS.jpg[/img][/url]
rent_mask
[url=http://www.mx7.com/view2/yCmTTtxZ9gD64dv2][img]http://www.mx7.com/i/e13/knMB6O.jpg[/img][/url]
และผลลัพธ์ที่ออกแบบซึ้งแนวทางจากโคต๊คุณนิค
[url=http://www.mx7.com/view2/yCmTSpBWiNJZrBuS][img]http://www.mx7.com/i/6fa/NVJFaS.jpg[/img][/url]
ผมต้องการทำรยางานประจำวันโดย amount ของสองตาราง buy กับ book มารวมกัน และ Goup ตามวันที่ มาแสดงในตารางยอดจากการขายตั๋๋ว
และต้องการผมรวมของแต่ละวันจาก amount_mask โดย group ตามวันเช่นกัน มาแสดงหลังตาราง ยอดจากการเช่าหน้ากากดำน้ำ และfine_rent_mask โชว์หลังช่องค่าปรับ แล้วทั้งหมดเข้าในรายวัน
*****ซึ่งตอนนี้ผมทำได้แค่ดึงจากตารางเดียวคือ buy เข้าใจว่าต้อง join ตารางนั้นไม่มีความสัมพันธ์กันเลย ลอง join แล้ว ON ด้วย Date แต่ออกมาแค่วันเดียว มีแนวทางการทำหรือต้องแก้ไขตารางอย่างไรครับ จากโคต๊
<?php require_once('Connections/koh_samaesan2.php'); $objConnect = mysql_connect("localhost","root","") or die("ไม่สามารถเชื่อมต่อฐานข้อมูลได้"); $objDB = mysql_select_db("koh_samaesan2") or die("ไม่สามารถใช้งานฐานข้อมูลได้"); mysql_query("set names 'utf8'"); ?> <?php session_start(); error_reporting( error_reporting() & ~E_NOTICE ); if(empty($_SESSION["ID_emp"])){ header("Refresh: 0; url=login.html"); } $ID_emp = $_SESSION["ID_emp"]; $first_name = $_SESSION["first_name"]; $last_name = $_SESSION["last_name"]; $nameposition = $_SESSION["nameposition"]; $idposition = $_SESSION["idposition"]; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css"> <link href="bootstrap/css/subdropdown.css" rel="stylesheet" type="text/css"> <!-- Optional theme --> <link rel="stylesheet" href="bootstrap/css/bootstrap-theme.min.css"> <!-- Latest compiled and minified JavaScript --> <script src="bootstrap/js/bootstrap.min.js"></script> <link rel="stylesheet" href="bootstrap/css/styles.css"> <style type="text/css"> body,td,th { font-size: 14px; text-align: center; } </style> <style type="text/css"> <!-- .paginate { font-family: Arial, Helvetica, sans-serif; font-size: .7em; } a.paginate { border: 1px solid #000080; padding: 2px 6px 2px 6px; text-decoration: none; color: #000080; } h2 { font-size: 12pt; color: #003366; } h2 { line-height: 1.2em; letter-spacing:-1px; margin: 0; padding: 0; text-align: left; } a.paginate:hover { background-color: #000080; color: #FFF; text-decoration: underline; } a.current { border: 1px solid #000080; font: bold .7em Arial,Helvetica,sans-serif; padding: 2px 6px 2px 6px; cursor: default; background:#000080; color: #FFF; text-decoration: none; } span.inactive { border: 1px solid #999; font-family: Arial, Helvetica, sans-serif; font-size: .7em; padding: 2px 6px 2px 6px; color: #999; cursor: default; } --> </style> </head> <body> <br> <br> <br> <div style="margin:auto;width:80%;"> <br> <br> <table class="table table-bordered table-condensed" style="width:550px;"> <thead> <tr class="bg-success"> <th>Date</th> <th>Product</th> <th>Price</th> </tr> </thead> <tbody> <?php // ส่วนของการกำนหดแสดงการแบ่ง ส่วนของข้อมูลของวันที่ที่ต่างกัน $temp_data1=null; $temp_data2=null; $data_show=1; // 1 แสดง 0 ไม่แสดง // กำหนดสำหรับอ้างอิง key ของตัวแปร $i=1; // ส่วนกำหนดตัวแปร สำหรับเก็บค่าวันที่ และเปรียบเทียบ $arr_dateCheck=array(); // ส่วนกำหนดตัวแปรสำหรับเก็บค่าข้อมูลสะสมในแต่ละ คอลัมน์ที่ต้องการ กำหนดเป็น array $aggre_price=array(); $aggre_com=array(); // ส่วนกำหนดตัวแปรสำหรับเก็บค่าข้อมูลในแต่ละ คอลัมน์ที่ต้องการ กำหนดเป็น array $data_price=array(); $data_com=array(); $q=" SELECT SUM(buy_ticket.amount) AS totalAmount, DATE(buy_ticket.date_buy) AS datadate FROM buy_ticket GROUP BY datadate ORDER BY datadate DESC "; $rs=mysql_query($q); $total=$rs->num_rows; while($data=mysql_fetch_assoc($rs)){ $show_row_end=0; // เริ่มต้นการแบ่ง กำหนดเป็น 0 // จัดรูปแบบ key วันที่ที่จะใช้เก็บข้อมูล (หากไม่ได้ใช้วันที่ ประยุกต์เป็นอย่างอื่นตามต้องการ) $dateKey=date("dmY",strtotime($data['datadate'])); /// ส่วนของการกำนหด การเปรียบค่าของรายการ เพื่อแบ่งวันที่เป็นสัดส่วน $temp_data1=$data['datadate']; if($temp_data2==null){ $temp_data2=$temp_data1; $data_show=1; }else{ if($temp_data1==$temp_data2){ $data_show=0; $temp_data2=$temp_data1; }else{ $temp_data2=$temp_data1; $data_show=1; } } // เก็บค่าวันที่ของรายการข้อมูลไว้ในตัวแปร สำหรับเปรียบเทียบ $arr_dateCheck[$i]=$data['datadate']; // ถ้าไม่ใช้ข้อมูลรายการแรก และ ข้อมูลวันที่รายการก่อนหน้า ไม่เท่ากับรายการที่กำลังแสดง // นั่นหมายถึงจุดที่เราจะกำหนดว่า เป็นรายการสุดท้ายของวันที่หนึ่งๆ if($i>1 && $arr_dateCheck[$i-1]!=$data['datadate']){ // กำหนด key วันที่ที่จะเช็ค $dateKeyCheck=date("dmY",strtotime($arr_dateCheck[$i-1])); $show_row_end=1; // ให้แสดง หรือแทรกแถวที่ต้องการได้ } // ส่วนของการเก็บข้อมูลไว้ใน array เพื่อใช้งานผลรวม if(!isset($data_price[$dateKey])){ // ถ้าไม่มีตัวแปร $data_price[$dateKey]=array(); // ให้กำหนด array_push($data_price[$dateKey],$data['totalAmount']); // และเพิ่มค่า }else{ array_push($data_price[$dateKey],$data['totalAmount']); // เพิ่มค่าใน array } ?> <?php // แทรกแถวที่ต้องการกรณีปกติ กรณีนี้ รายการสุดท้ายจะไม่ขึ้น เราจะเพิ่มการแทรกไว้ด้านหลัง // ของข้อมูลแทน if($show_row_end==1){?> <?php // รวมค่าข้อมูลแต่ละวัน แล้วเพิ่มเข้าไปใน array รายการค่าสะสม array_push($aggre_price,array_sum($data_price[$dateKeyCheck])); ?> <tr class="bg-warning"> <td class="text-right">รวมรายวัน</td> <td></td> <td><?=array_sum($data_price[$dateKeyCheck])?></td> </tr> <tr class="bg-info"> <td class="text-right">รวมสะสม</td> <td></td> <td><?=array_sum($aggre_price)?></td> </tr> <?php } ?> <tr> <td> <?php if($data_show==1){?> <?=$data['datadate']?> <?php } ?> </td> <td>ยอดจากการขายตั๋ว</td> <td><?=$data['totalAmount']?></td> </tr> <tr> <td></td> <td>ยอดจากการเช่าหน้ากากดำน้ำ</td> <td></td> </tr> <tr> <td></td> <td>ยอดจากค่าปรับ</td> <td></td> </tr> <?php if( // สำหรับแทรก กรณีเป็นรายการสุดท้ายในตาราง $i==$total){?> <?php // รายการสุดท้าย กำหนด key เช็คเป็นค่าที่รูปแบบตรงกัน $dateKeyCheck=date("dmY",strtotime($data['datadate'])); // รวมค่าข้อมูลแต่ละวัน แล้วเพิ่มเข้าไปใน array รายการค่าสะสม array_push($aggre_price,array_sum($data_price[$dateKeyCheck])); ?> <tr class="bg-warning"> <td class="text-right">รวมรายวัน</td> <td></td> <td><?=array_sum($data_price[$dateKeyCheck])?></td> </tr> <tr class="bg-info"> <td class="text-right">รวมสะสม</td> <td></td> <td><?=array_sum($aggre_price)?></td> </tr> <?php } ?> <?php $i++; } ?> </tbody> </table> </div> </body> </html>
คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ