PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

สอบถาม เรื่อง รวมค่าที่ต้องการในตาราง

สอบถาม เรื่อง รวมค่าที่ต้องการในตาราง

ช่องสีเหลือ= ต้องการรวม จาก HNสีฟ้า  จากวันที่ ช่องสีแดง
ช่องม่วง=ต้องการรวมค่า จากEMTสีเขียว  จากวันที่ ช่องสีแดง
จะมีช่องที่จะรวมอีก อันนี้ ยกตัวอย่างมา
---------------------------------------------------------
ขอแนะนำหน่อยครับบบ

โดย:  Baby IP: 1.179.131.xxx วันที่: 07-06-2016 เวลา: 12:07:13

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ


  • ( หรือ สามารถทำการ สมัครสมาชิก และล็อกอิน ด้วย ปุ่ม Log in with Facebook ด้านล่าง )
 ความคิดเห็นที่ 18
  1. $sql = "  
  2. SELECT a.*,  
  3.     (SELECT SUM(b.acute1) FROM product_er b   
  4.     WHERE b.datemeet=a.datemeet GROUP BY b.datemeet) as acute1_1   
  5. FROM product_er a WHERE a.datemeet LIKE '".$s_month."%'  
  6. ORDER BY a.datemeet ASC,a.wage ASC  
  7. ";  
  8. $c_sql=mysql_db_query($dbname,$sql);   
  9. if($c_sql){  
  10.     while($f_room=mysql_fetch_array($c_sql)) {  
  11.         if($nr++%2==1) $trclass='BgSky'else $trclass='BgSky2';   
  12.           
  13.   //แทรกตารางตรงนี้น่ะ
  14.     }  
  15. }
  16. ข้อมูลก็ยังไม่ออกครับ ขอแนะนำหน่อยครับบ


โดย:  Baby IP: 1.179.131.xxx วันที่: 13-06-2016 เวลา: 15:01:10
 ความคิดเห็นที่ 17
กรณี error ก็น่าจะมาจากไม่มีข้อมูลตามคำส่ัง sql ส่วนในคำส่ัง sql ต้องตรวจสอบว่ามีการส่งค่ามาถูกต้องไหม
อีกอยางรูปแบบการใช้งานคำส่ัง mysql_db_query ไม่แนะนำให้ใช้ ควรเปลี่ยนมาใช้ mysqli แทน
ดูไว้เป็นแนวทาง 
มาใช้ mysqli แทน mysql แบบเดิม ใน php กันอย่างง่าย 
http://www.ninenik.com/content.php?arti_id=527 via @ninenik

คำสั่ง sql ควรเขียนแบบติดกันเลย ไม่ควรแยกแล้วต่อเป็น string เช่น

ใช้เป็น 
$sql="
/// เขียนคำส่ัง sql ในนี้ได้เลย ขึ้นบรรทัดใหม่จัดรูปแบบได้เลย
";

ไม่ควรใช้แบบ 
$sql="";
$sql .="";
เพราะจะทำให้อ่านคำสั่ง sql ยาก แต่ถ้าถนัดก็ไม่เป็นไร

ตัวอย่าง

$sql = "
SELECT a.*,
	(SELECT SUM(b.acute1) FROM product_er b 
	WHERE b.datemeet=a.datemeet GROUP BY b.datemeet) as acute1_1 
FROM product_er a WHERE a.datemeet LIKE '".$s_month."%'
ORDER BY a.datemeet ASC,a.wage ASC
";
$c_sql=mysql_db_query($dbname,$sql); 
if($c_sql){
	while($f_room=mysql_fetch_array($c_sql)) {
		if($nr++%2==1) $trclass='BgSky'; else $trclass='BgSky2'; 
		

	}
}


ตัวอย่างกรณีตรวจสอบเงื่อนไขการส่งค่ามาด้วย และการต่อ คำส่ัง sql อีกรุปแบบ

$more_sql="";
if(isset($s_month) && $s_month!=""){
	$more_sql=" AND a.datemeet LIKE '".$s_month."%' ";
}

$sql = "
SELECT a.*,
	(SELECT SUM(b.acute1) FROM product_er b 
	WHERE b.datemeet=a.datemeet GROUP BY b.datemeet) as acute1_1 
FROM product_er a WHERE 1 $more_sql 
ORDER BY a.datemeet ASC,a.wage ASC
";
$c_sql=mysql_db_query($dbname,$sql); 
if($c_sql){
	while($f_room=mysql_fetch_array($c_sql)) {
		if($nr++%2==1) $trclass='BgSky'; else $trclass='BgSky2'; 
		

	}
}




โดย:  Ninenik IP: 183.88.65.xxx วันที่: 13-06-2016
 ความคิดเห็นที่ 16
<?

$sql = "SELECT a.*,(SELECT SUM(b.acute1) FROM product_er b WHERE b.datemeet=a.datemeet GROUP BY b.datemeet) as acute1_1 FROM product_er a WHERE a.datemeet LIKE '$s_month%'";
$sql .="FROM product_er a";
$sql .="ORDER BY a.datemeet ASC,a.wage ASC";
$c_sql=mysql_db_query($dbname,$sql);
while($f_room=mysql_fetch_array($c_sql) or die( $sql . "<br>".mysql_error())) {
if($nr++%2==1) $trclass='BgSky'; else $trclass='BgSky2';
?>


<?}?>
ไม่แสดงข้อมูล ครับ แสดงแต่ SELECT บรรทัดแรก ครับ

โดย:  Baby IP: 1.179.131.xxx วันที่: 13-06-2016 เวลา: 11:54:23
 ความคิดเห็นที่ 15
อันนี้ codeเดิมที่ทำอยู่
 
<?php
$nr=1;
$num=0;
$per=$_SESSION['Flname'];
$sql = "select * from product_er where month(datemeet)='$s_month' and year(datemeet)='$s_year' ";
$sql .= ($time!='') ? " and time='$time' " : '';
$sql .= ($wage!='') ? " and wage='$wage' " : '';
$sql .= " ORDER BY datemeet ASC,wage ASC  ";
 
$c_sql=mysql_db_query($dbname,$sql);
 
while($f_room=mysql_fetch_array($c_sql)) {
 
if($nr++%2==1) $trclass='BgSky'; else $trclass='BgSky2';
 
?>
อันนี้ ผมแทรก codeใหม่เข้าไป แต่มันขึ้น error จุดนี้ครับ while($f_room=mysql_fetch_array($c_sql)) { //Warning: mysql_fetch_array(): 

  <?php
$nr=1;
$num=0;
$per=$_SESSION['Flname'];
 
 
$sql = "SELECT a.*,(SELECT SUM(b.acute1) FROM product_er b WHERE b.datemeet=a.datemeet GROUP BY b.datemeet) as acute1_1";
$sql .="FROM product_er a";
$sql .="WHERE a.month(datemeet)='$s_month'";
$sql .="ORDER BY a.datemeet ASC,a.wage ASC";
 
$c_sql=mysql_db_query($dbname,$sql);
 
while($f_room=mysql_fetch_array($c_sql)) {
 
if($nr++%2==1) $trclass='BgSky'; else $trclass='BgSky2';
?>


โดย:  Baby IP: 1.179.131.xxx วันที่: 13-06-2016 เวลา: 09:28:10
 ความคิดเห็นที่ 14
ขอพระคุณอบ่างสูงครับ 

โดย:  Baby IP: 1.179.131.xxx วันที่: 10-06-2016 เวลา: 15:53:41
 ความคิดเห็นที่ 13
SELECT a.*,  
(SELECT COUNT(b.date_day) FROM tbl_date b WHERE b.date_day=a.date_day GROUP BY b.date_day) as num,  
(SELECT SUM(b.date_val) FROM tbl_date b WHERE b.date_day=a.date_day GROUP BY b.date_day) as sumval,  
(SELECT SUM(b.date_val2) FROM tbl_date b WHERE b.date_day=a.date_day GROUP BY b.date_day) as sumval2  
FROM tbl_date a 
WHERE a.date_day LIKE '2016-06%'
ORDER BY a.date_day ASC  


ดูเนื้อหานี้เป็นแนวทาง

การเก็บข้อมูลวันที่ ในฐานข้อมูล กับคำสั่ง sql ในการค้นหา  
http://www.ninenik.com/content.php?arti_id=262 via @ninenik


โดย:  Ninenik IP: 183.88.82.xxx วันที่: 10-06-2016
 ความคิดเห็นที่ 12
ผมต้องการเพิ่ม รับค่า เดือน กับ ปี //แต่อัน จุด where  ยังผิดอยู่ ขอแนะนำหน่อยครับ

SELECT a.*,(SELECT SUM(b.acute1) FROM product_er b WHERE b.datemeet=a.datemeet GROUP BY b.datemeet) as sumval
where a.month(datemeet)='2016-07-04' and a.year(datemeet)='2016-07-04'
FROM product_er a
ORDER BY a.datemeet ASC,wage ASC
 


โดย:  Baby IP: 1.179.131.xxx วันที่: 10-06-2016 เวลา: 14:21:51
 ความคิดเห็นที่ 11
ลองดูแนวทาง และผลลัพธ์จากตัวอย่างนี้ ไปประยุกต์ดู


SELECT a.*,
(SELECT COUNT(b.date_day) FROM tbl_date b WHERE b.date_day=a.date_day GROUP BY b.date_day) as num,
(SELECT SUM(b.date_val) FROM tbl_date b WHERE b.date_day=a.date_day GROUP BY b.date_day) as sumval,
(SELECT SUM(b.date_val2) FROM tbl_date b WHERE b.date_day=a.date_day GROUP BY b.date_day) as sumval2
FROM tbl_date a ORDER BY a.date_day ASC




date_id date_day Ascending 1 date_val date_val2 num sumval sumval2
1 2016-06-01 2 3 3 9 11
2 2016-06-01 3 1 3 9 11
3 2016-06-01 4 7 3 9 11
4 2016-06-03 4 1 4 17 8
5 2016-06-03 5 2 4 17 8
6 2016-06-03 2 2 4 17 8
7 2016-06-03 6 3 4 17 8

 


โดย:  Ninenik IP: 183.88.82.xxx วันที่: 09-06-2016
 ความคิดเห็นที่ 10


แสดงข้อมูลแล้วครับ  //แต่แบบนี้ครับบ  เช่น ช่องHN กรอบ ฟ้า ไปรวม ช่อง รวมstaffต่อวัน สีฟ้า เหมือนกับว่า มัน + ไปเรื่อยๆ ครับ
ถ้า ผมต้องการ ให้ แสดง ผลรวมทั้ง3 ช่องเลยได้ไหมครับบ

โดย:  Baby IP: 1.179.131.xxx วันที่: 08-06-2016 เวลา: 16:16:55
 ความคิดเห็นที่ 9
แทรกได้เลย 
 
$aggr_arr=array();  
while($f_room=mysql_fetch_array($c_sql)) {
        $dateKey=date("dmY",strtotime($f_room['ฟิลวันที่']));   
        if(!isset($aggr_arr[$dateKey])){  
            $aggr_arr[$dateKey]=array();  
            $aggr_arr[$dateKey]['HR']=0;  
        }  
        $aggr_arr[$dateKey]['HR']+=$f_room['ฟิลของhr'];  
.........


โดย:  Ninenik IP: 183.88.82.xxx วันที่: 08-06-2016
 ความคิดเห็นที่ 8
<?php
$nr=1;
$num=0;
$per=$_SESSION['Flname'];
$sql = "select * from product_er where month(datemeet)='$s_month' and year(datemeet)='$s_year' ";
$sql .= " ORDER BY datemeet ASC,wage ASC  ";
$c_sql=mysql_db_query($dbname,$sql);
 
while($f_room=mysql_fetch_array($c_sql)) {
 
 
if($nr++%2==1) $trclass='BgSky'; else $trclass='BgSky2';
$total=++$num;
?>


แต่ผมมี วนลูปข้อมูลอยู่แล้ว  สามารถ แซบได้เลยไหมครับ ขอแนะนำหน่อย ครับบ


โดย:  Baby IP: 1.179.131.xxx วันที่: 08-06-2016 เวลา: 15:15:45
 ความคิดเห็นที่ 7
โค้ดที่แนะนำเป็นโค้ดประยุกต์ สิ่งที่ต้องทำก็คือแค่ วนลูปข้อมูลให้แสดงเหมือนเดิมก่อน 
แล้วค่อยเพิ่มส่วนประยุกต์ที่แนะนำไป ถ้าเข้าใจหลักการน่าไม่มีปัญหา 

โดย:  Ninenik IP: 183.88.82.xxx วันที่: 08-06-2016
 ความคิดเห็นที่ 6
<?php  
  
$aggr_arr=array();        
while($rs['datemeet']){  
$dateKey=date("dmY",strtotime($rs['datemeet']));   
if(!isset($aggr_arr[$dateKey])){  
$aggr_arr[$dateKey]=array();  
$aggr_arr[$dateKey]['HR']=0;  
}  
$aggr_arr[$dateKey]['HR']+=$rs['hr'];  
?>  
<td align="center"><?=$f_data['sumhn']?></td><?/*รวมstaffต่อวัน*/?>
<?}?>




ตารางกับ ข้อมูล หายไป ไม่แสดง ครับ


โดย:  Baby IP: 1.179.131.xxx วันที่: 08-06-2016 เวลา: 14:03:12
 ความคิดเห็นที่ 5
<?php  
  
$aggr_arr=array();        
while($rs['datedata']){  
$dateKey=date("dmY",strtotime($rs['datedata']));   
if(!isset($aggr_arr[$dateKey])){  
$aggr_arr[$dateKey]=array();  
$aggr_arr[$dateKey]['HR']=0;  
}  
$aggr_arr[$dateKey]['HR']+=$rs['hr'];  
?>  
 
 <td><?echo $aggr_arr[$dateKey]['HR'];?></td>  
 
<?php        }  ?>
ตารางและข้อมูล ไม่แสดง ครับ 


โดย:  Baby IP: 1.179.131.xxx วันที่: 07-06-2016 เวลา: 15:36:21
 ความคิดเห็นที่ 4
ถ้า สมมติ $rs['datedata'] เป้นวันที่ เป็นรูปแบบ 0000-00-00
$rs['hr'] เป้น ข้อมูลสีฟ้า

ข้อมูลสีเหลือง ก็น่าจะประมาณนี้

<?php

$aggr_arr=array();      
while($rs['xxxx']........){
        $dateKey=date("dmY",strtotime($rs['datedata'])); 
        if(!isset($aggr_arr[$dateKey])){
            $aggr_arr[$dateKey]=array();
            $aggr_arr[$dateKey]['HR']=0;
        }
        $aggr_arr[$dateKey]['HR']+=$rs['hr'];
?>
    <tr >
      <td><?=$rs['datedata']?></td>
      <td><?=$rs['hr']?></td>
      <td><?=$aggr_arr[$dateKey]['HR']?></td>
    </tr>
<?php		}  ?>

ตรงค่าสีม่วงก็คำเหมือนกัน เพิ่มตัวแปรเข้าไป เพิ่มค่า EMT เข้าไป
 


โดย:  Ninenik IP: 183.88.68.xxx วันที่: 07-06-2016
 ความคิดเห็นที่ 3
พอจะมี ตัวอย่างไหมครับบ

โดย:  Baby IP: 1.179.131.xxx วันที่: 07-06-2016 เวลา: 14:27:29
 ความคิดเห็นที่ 2
  1. $arr_hr['04062559']['hr'][]=22; //keyวันที่ผมต้องการรับค่ามาอีกที กับ hr ต้องเขียนแบบไหนครับ 
  2. $arr_hr['04062559']['hr'][]=10; //เช่น <?=$f_data['datemeet']?> keyวันที่
  3. $arr_hr['04062559']['hr'][]=20; 


โดย:  Baby IP: 1.179.131.xxx วันที่: 07-06-2016 เวลา: 14:22:10
 ความคิดเห็นที่ 1
ไม่แน่ใจว่ารวมแบบไหน แต่ใช้ array ช่วยได้ โดยกำหนด key เป็นวันที่

เช่น

$arr_hr['04062559']['hr'][]=22;
$arr_hr['04062559']['hr'][]=10;
$arr_hr['04062559']['hr'][]=20;

แล้วช่องผลรวมใช้ คำสั่ง array_sum() อีกที

โดย:  Ninenik IP: 183.88.68.xxx วันที่: 07-06-2016