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,037

HOME > PHP > PHP Forum > PHP Mysql สอบถามการดึงให้เป็นไปตามรูปแบบฟอร์มนี้ (กำลังจะถึง due date) ขอบคุณมากค่ะ



 

PHP Mysql สอบถามการดึงให้เป็นไปตามรูปแบบฟอร์มนี้ (กำลังจะถึง due date) ขอบคุณมากค่ะ

 



Topic : 095484



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



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




ยาวหน่อยนะคะ ช่วยดูหน่อยค่ะ

จากข้อมูลตัวอย่าง นี้คือโคดค่ะ
Code (PHP)
//โคดดึงข้อมูลจาก database

<?
	include("mysql_connect.php");
	$objDB = mysql_select_db("utilization_rate");
	$strSQLmonth = "SELECT MonthId,month FROM month ORDER BY MonthId"; //select ข้อมูลสำหรับแสดงผลเป็นหัวตาราง
	$objQuerymonth = mysql_query($strSQLmonth) or die ("Error Query [".$strSQLmonth."]  " );
	$item_id=array();
	$item=array();
	$i=0;
	while ($objResultmonth = mysql_fetch_array($objQuerymonth))
	{
	$item_id[$i] = $objResultmonth['MonthId']; // เก็บ id สำหรับกำหนดเงื่อนไขในการวนลูปแนวกว้าง
	$item[$i]=$objResultmonth['month']; //เก็บตัวแปร item สำหรับแสดงผลหัว column
	$i++;
	}
	mysql_free_result($objQuerymonth); //
	
	$strSQLrate= "SELECT DISTINCT (rate.AssetNo),description FROM rate RIGHT JOIN asset ON asset.AssetNo = rate.AssetNo ORDER BY rate.RateId";//select ข้อมูล AssetNo,description จากตาราง rate โดยมีการตรวจสอบกับตาราง asset ซึ่งเป็นการ lookup table
	$objQueryrate = mysql_query($strSQLrate) or die ("Error Query [".$strSQLrate."]  " );
	$num_rows = mysql_num_rows($objQueryrate); //นับจำนวนแถวว่ามีข้อมูลหรือไม่
?>
<?
if($num_rows>0){ //ถ้ามีก็ให้แสดงผลตารางข้อมูล
?>
<table width="1000" cellpadding="1" cellspacing="1">
<tr  bgcolor="#999999">
<td align="center"><strong>รายการ</strong></td>
<?
for($i=0;$i<count($item_id);$i++){
?>
<td align="center"><strong><?=$item[$i] //แสดงผลหัวคอลัมน์?></strong></td> 
<?
}
?>
</tr>
<?
 while ($objResultrate = mysql_fetch_array($objQueryrate)) { //วนลูปแสดงผลข้อมูลมิติที่ 1 ตามแนวตั้ง/แถว
?>
<tr  bgcolor="#dcddc0">
<td align="left">&nbsp;<?=$objResultrate['description'] //แสดงผลชื่อรายการ?></td>
<?
/*วนลูปแสดงผลข้อมูลมิติที่ 2 ตามแนวขวาง /คอลัมน์*/
for($i=0;$i<count($item_id);$i++){ //วนลูปให้เท่ากับจำนวน item,

$strSQLpercent = "SELECT percent FROM rate WHERE  AssetNo={$objResultrate['AssetNo']} AND month='{$item[$i]}' AND year='2556'"; //วนลูปหาค่าในแต่ละเซลล์ของตารางตามค่าในคีย์หลักของแถว และคอลัมน์
$objQuerypercent = mysql_query($strSQLpercent) or die ("Error Query [".$strSQLpercent."]  " );

$objResultpercent = mysql_fetch_array($objQuerypercent); //แน่ใจว่าในแต่ละเซลล์มีค่าเดียว จึงไม่ต้องวนลูป ทำ mysql_fecth_array เพราะถึงวนลูปค่าที่ได้ก็มีแค่ค่าเดียวเหมือนกัน
?>
<td align="center"><?=number_format($objResultpercent['percent'])?></td>
<?
mysql_free_result($objQuerypercent); //คืนค่าเมื่อไม่ได้ใช้แล้ว
}//end while
?>
<?
}
?>
<?
}
?>
</tr>
</table>
<!-------------------------------------->

//โคดสำหรับคำนวณตามไตรมาส
<?
$strSQLsum= "SELECT  a.AssetNo, a.description,r.period1,r.period2,r.period3,r.period4

FROM asset a

LEFT JOIN

( SELECT AssetNo, SUM(IF(month IN('มกราคม', 'กุมภาพันธ์', 'มีนาคม') AND year='2556', `percent`, 0))/3  AS 'period1',
SUM(IF(month IN('เมษายน', 'พฤษภาคม', 'มิถุนายน') AND year='2556', `percent`, 0))/3  AS 'period2',
SUM(IF(month IN('กรกฎาคม', 'สิงหาคม', 'กันยายน') AND year='2556', `percent`, 0))/3  AS 'period3',
SUM(IF(month IN('ตุลาคม', 'พฤศจิกายน', 'ธันวาคม') AND year='2556', `percent`, 0))/3  AS 'period4'

FROM  rate 
GROUP by AssetNo
) r
ON r.AssetNo=a.AssetNo";


$objQuerysum = mysql_query($strSQLsum) or die ("Error Query [".$strSQLsum."]  " );
?>
&nbsp;
&nbsp;
&nbsp;
&nbsp;
<table width="1000" cellpadding="1" cellspacing="1">
<tr  bgcolor="#999999">
<th>Asset No</th>
<th>Description</th>
<th>ไตรมาสที่ 1</th>
<th>ไตรมาสที่ 2</th>
<th>ไตรมาสที่ 3</th>
<th>ไตรมาสที่ 4</th>
</tr>
<?
 while ($objResultsum = mysql_fetch_array($objQuerysum)) 
{
?>
<tr bgcolor="#dcddc0">
<td><?=$objResultsum['AssetNo']?></td>
<td><?=$objResultsum['description']?></td>
<td><?=$objResultsum['period1']?></td>
<td><?=$objResultsum['period2']?></td>
<td><?=$objResultsum['period3']?></td>
<td><?=$objResultsum['period4']?></td>
</tr>
<?
}
?>
</table>


รายงานที่ดึงมาหน้า web
report

แต่หนูต้องการให้ รายงาน เป็นตามแบบฟอร์มนี้ค่ะ
need

หนูจะแทรกผล sum ไตรมาส ในทุกๆ สามเดือน ตามแบบฟอร์มได้อย่างไร ขอแนวคิดค่ะ

ขอบคุณมากๆ ค่ะ จะถึง due date แล้ว



Tag : PHP, MySQL









ประวัติการแก้ไข
2013-05-21 11:41:01
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-05-21 10:18:22 By : shushu View : 1691 Reply : 4
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

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

ตอนนี้ติดตรงไหนครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-22 06:22:37 By : mr.win
 


 

No. 2



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



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


คิออยากให้ตารางมันรวมกันนะค่ะ
ตามแบบฟอร์มอะค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-22 08:15:39 By : shushu
 

 

No. 3



โพสกระทู้ ( 1,994 )
บทความ ( 10 )



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

เพิ่ม SUM ของแต่ละเดือนครับ
SELECT  `year_id`, 
SUM(IF(MONTH(`date_pay`) = '01', `amount`, 0)) AS 'Jan',
SUM(IF(MONTH(`date_pay`) = '02', `amount`, 0)) AS 'Feb',
SUM(IF(MONTH(`date_pay`) = '03', `amount`, 0)) AS 'Mar',
SUM(IF(MONTH(`date_pay`) IN('01', '02', '03'), `amount`, 0)) AS 'period1',
SUM(IF(MONTH(`date_pay`) = '04', `amount`, 0)) AS 'Apr',
SUM(IF(MONTH(`date_pay`) = '05', `amount`, 0)) AS 'May',
SUM(IF(MONTH(`date_pay`) = '06', `amount`, 0)) AS 'Jun',
SUM(IF(MONTH(`date_pay`) IN('04', '05', '06'), `amount`, 0)) AS 'period2',
SUM(IF(MONTH(`date_pay`) = '07', `amount`, 0)) AS 'Jul',
SUM(IF(MONTH(`date_pay`) = '08', `amount`, 0)) AS 'Aug',
SUM(IF(MONTH(`date_pay`) = '09', `amount`, 0)) AS 'Sep',
SUM(IF(MONTH(`date_pay`) IN('07', '08', '09'), `amount`, 0)) AS 'period3',
SUM(IF(MONTH(`date_pay`) = '10', `amount`, 0)) AS 'Oct',
SUM(IF(MONTH(`date_pay`) = '11', `amount`, 0)) AS 'Nov',
SUM(IF(MONTH(`date_pay`) = '12', `amount`, 0)) AS 'Dec',
SUM(IF(MONTH(`date_pay`) IN('10', '11', '12'), `amount`, 0)) AS 'period4'
FROM `main_inventory_pay` 
GROUP by year_id


ที่จริงค่า 4 บรรทัดนี้ไม่จำเป็นต้องคำนวณในคำสั่ง SQL ก็ได้
Code (SQL)
SUM(IF(MONTH(`date_pay`) IN('01', '02', '03'), `amount`, 0)) AS 'period1',
SUM(IF(MONTH(`date_pay`) IN('04', '05', '06'), `amount`, 0)) AS 'period2',
SUM(IF(MONTH(`date_pay`) IN('07', '08', '09'), `amount`, 0)) AS 'period3',
SUM(IF(MONTH(`date_pay`) IN('10', '11', '12'), `amount`, 0)) AS 'period4'


ตอนลูปออกมาแสดงก็เพียงแต่นำค่า
Jan + Feb + Mar = Period1
Apr + May + Jun = Period2
Jul + Aug + Sep = Period3
Oct + Nov + Dec = Period4


การหาเปอร์เซ็น (%) ของแต่ละ Period ก็นำมาคูณ 100 หาร 3
Period1_Percent = (Period1 * 100) / จำนวนเต็ม
Period2_Percent = (Period2 * 100) / จำนวนเต็ม
Period3_Percent = (Period3 * 100) / จำนวนเต็ม
Period4_Percent = (Period4 * 100) / จำนวนเต็ม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-22 08:54:43 By : Naizan
 


 

No. 4



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



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


เพิ่มโคด sum ไปในช่วงนี้ไหมค่ะ

Code (PHP)
<?
/*วนลูปแสดงผลข้อมูลมิติที่ 2 ตามแนวขวาง /คอลัมน์*/
for($i=0;$i<count($item_id);$i++){ //วนลูปให้เท่ากับจำนวน item,

$strSQLpercent = "SELECT percent FROM rate WHERE  AssetNo={$objResultrate['AssetNo']} AND month='{$item[$i]}' AND year='2556'"; //วนลูปหาค่าในแต่ละเซลล์ของตารางตามค่าในคีย์หลักของแถว และคอลัมน์
$objQuerypercent = mysql_query($strSQLpercent) or die ("Error Query [".$strSQLpercent."]  " );

$objResultpercent = mysql_fetch_array($objQuerypercent); //แน่ใจว่าในแต่ละเซลล์มีค่าเดียว จึงไม่ต้องวนลูป ทำ mysql_fecth_array เพราะถึงวนลูปค่าที่ได้ก็มีแค่ค่าเดียวเหมือนกัน
?>


ขอบคุณมากกกค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-22 09:25:31 By : shushu
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : PHP Mysql สอบถามการดึงให้เป็นไปตามรูปแบบฟอร์มนี้ (กำลังจะถึง due date) ขอบคุณมากค่ะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 04
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 อัตราราคา คลิกที่นี่