|  | 
	                
  
    | 
	 
        ขอสอบถามเกี่ยวกับ การรวมค่าตัวเลขใน array หลายมิติครับ     |  
    |  |  
 
	
		|  |  |  |  |  
		|  |  | 
          
            | อยากให้รวม ค่า ดังภาพครับ ลองใช้ฟังค์ชั่นแล้ว มัยไม่ขึ้นครับ
 
 
  
 
 Code (PHP)
 
 <?php
include("config/config.inc.php"); //connect database
$month_check=$_REQUEST["month_check"];
$year_check=$_REQUEST["year_check"];
$Txt_dateStart=date("d-m-Y",strtotime($dateStart));
$Txt_dateStop=date("d-m-Y",strtotime($dateStop));
if ($month_check=="01") {
      $Text_month="มกราคม";
} elseif ($month_check=="02") {
      $Text_month="กุมพาพันธ์";
} elseif ($month_check=="03") {
      $Text_month="มีนาคม";
} elseif ($month_check=="04") {
  $Text_month="เมษายน";
} elseif ($month_check=="05") {
    $Text_month="พฤษภาคม";
} elseif ($month_check=="06") {
  $Text_month="มิถุนายน";
} elseif ($month_check=="07") {
  $Text_month="กรกฎาคม";
} elseif ($month_check=="08") {
  $Text_month="สิงหาคม";
} elseif ($month_check=="09") {
  $Text_month="กันยายน";
} elseif ($month_check=="10") {
  $Text_month="ตุลาคม";
} elseif ($month_check=="11") {
  $Text_month="พฤศจิกายน";
} elseif ($month_check=="12") {
  $Text_month="ธันวาคม";
}
?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>รายงาน Production ประจำเดือน <?php echo $Text_month;?> <?php echo $year_check;?>  </title>
    <!-- Tell the browser to be responsive to screen width -->
  <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
  <!-- Bootstrap 3.3.7 -->
  <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css">
  <!-- Font Awesome -->
  <link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.min.css">
  <!-- Ionicons -->
  <link rel="stylesheet" href="bower_components/Ionicons/css/ionicons.min.css">
  <!-- Theme style -->
  <link rel="stylesheet" href="dist/css/AdminLTE.min.css">
  <!-- AdminLTE Skins. Choose a skin from the css/skins
       folder instead of downloading all of them to reduce the load. -->
  <link rel="stylesheet" href="dist/css/skins/_all-skins.min.css">
  <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
  <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
  <!--[if lt IE 9]>
  <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
  <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
  <![endif]-->
      <!-- Favicon -->
   <link rel="shortcut icon" href="img/fv_mme.png">
  <!-- Google Font -->
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic">
</head>
<body>
<div class="wrapper">
  <!-- Main content -->
  <section class="invoice">
    <!-- title row -->
    <!-- title row -->
    <div class="row">
      <div class="col-xs-12">
          <img src="img/fv_mme.png"class="pull-left" width="55"></img>    ใบรายงานสรุปเที่ยว
          <br>   ห้างหุ้นส่วนจำกัด แม่เมาะวิศวกรรมเหมืองแร่
          <small class="pull-right">ประจำวันที่ : <?php echo $Text_month;?> <?php echo $year_check;?> <input type="button" class="btn btn-success btn-sm" name="Button" value="Print" 
            onclick="javascript:this.style.display='none';window.print();"></small>
        <hr>
      </div>
      <!-- /.col -->
    </div>
<?php 
$allEquipData = array();
$sql2="SELECT * from equipment where Equip_category='รถรับ' order by Equip_id ASC";
$resultA=mysql_db_query ($objDB, $sql2);
while($arr2=mysql_fetch_array($resultA)){
$allEquipData[$arr2['Equip_id']] = $arr2['Equip_codename'];
}
/*
echo "<pre>";
print_r($allEquipData);
echo "</pre>";
*/
//เรียกข้อมูลการจองของเดือนที่ต้องการ
 $allReportData = array();
 $strSQL = "SELECT production.*,equipment.*,
DAY(`Prod_date`) AS dayToday,
SUM(Oil)as Total_Oil_dt,
SUM(Prod_trip)as Total_Trip_dt,
SUM(Prod_bcm) as Total_BCM_dt,
SUM(Total_kilo) as Total_kilo_dt 
FROM `production` 
left join equipment on production.Equip_id=equipment.Equip_id
";
 $strSQL.= "WHERE `Prod_date` LIKE '$year_check-$month_check%' AND Equip_category='รถรับ' ";
$strSQL.= "GROUP by equipment.Equip_id,dayToday";
              $result=mysql_db_query ($objDB,$strSQL);
              while($objResult=mysql_fetch_array($result)){
   $allReportData[$objResult['Equip_id']][$objResult['dayToday']] = $objResult['Total_Oil_dt'];
              }
$allEquipTotal = array();
$sql3="SELECT production.*,equipment.*,
DAY(`Prod_date`) AS dayToday,
SUM(Oil)as Total_Oil_dt,
SUM(Prod_trip)as Total_Trip_dt,
SUM(Prod_bcm) as Total_BCM_dt,
SUM(Total_kilo) as Total_kilo_dt 
FROM `production` 
left join equipment on production.Equip_id=equipment.Equip_id
WHERE `Prod_date` LIKE '$year_check-$month_check%' AND Equip_category='รถรับ'
GROUP by equipment.Equip_id,dayToday
";
$resultA=mysql_db_query ($objDB, $sql3);
while($arr2=mysql_fetch_array($resultA)){
$Total_sum=$Total_sum+$arr2['Total_Oil_dt'];
$allEquipTotal[$arr2['Equip_id']] = $Total_sum;
}
/*
echo "<pre>";
print_r($allEquipTotal);
echo "</pre>";
*/
      
?>
 <!-- Table row -->
      <div class="row">
        <div class="col-xs-12 table-responsive">
            <div class="box-header with-border">
              <h3 class="box-title">สรุปเติมน้ำโซล่า รถรับ</h3>
            </div>
          <table class="table table-striped table-condensed table-bordered">
            <thead>
            <tr>
              <th class="text-center">เครื่องจักร</th>
              <?php
              $timeDate = strtotime($year_check.'-'.$month_check."-01");  //เปลี่ยนวันที่เป็น timestamp
              $lastDay = date("t", $timeDate);       //จำนวนวันของเดือน
              //echo "$timeDate";
              //สร้างหัวตารางตั้งแต่วันที่ 1 ถึงวันที่สุดท้ายของดือน
              for($day=1;$day<=$lastDay;$day++){
               echo '<th>' . substr("0".$day, -2) . '</th>';
              } ?>
              <th>Total</th>
            </tr>
   <?php 
//วนลูปเพื่อสร้างตารางตามจำนวนรายการใน Array
foreach($allEquipData as $empCode=>$empName){
 echo '<tr>';//เปิดแถวใหม่ ตาราง HTML
  echo '<td>'. $empName .'</td>';
  //เรียกข้อมูลขอแต่ละเครื่องจักร ในเดือนนี้
 for($j=1;$j<=$lastDay;$j++){
  //ตรวจสอบว่าวันที่แต่ละวัน $j ของ เครื่องแต่ละรหัส  $EquipCode มีข้อมูลใน  $allReportData หรือไม่ ถ้ามีให้แสดงจำนวนในอาร์เรย์ออกมา ถ้าไม่มีให้เป็น 0
  $numBook = isset($allReportData[$empCode][$j]) ? '<div>'.$allReportData[$empCode][$j].'</div>' : 0;
  echo "<td class='number'>", $numBook, "</td>";
 }
echo "<td class='number'>", array_sum($allReportData), "</td>";
echo '</tr>';//ปิดแถวตาราง HTML
}
echo "</table>";
/*
echo "<pre>";
print_r($allReportData);
echo "</pre>";
*/
?>
        </div>
      </div>
        <!-- /.col -->
  </section>
  <!-- /.content -->
</div>
<!-- ./wrapper -->
</body>
</html>
 
 
 Tag : PHP
 
 
 |  
            | 
 ประวัติการแก้ไข
 2019-07-12 10:46:42
 2019-07-12 10:47:57
 |  
            | 
              
                |  |  |  |  
                |  | 
                    
                      | Date :
                          2019-07-12 10:35:32 | By :
                          bondsanti | View :
                          989 | Reply :
                          7 |  |  |  
                |  |  |  |  |  
            |  |  
		            |  |  
		|  |  |  |  |  
  
    | 
 
        
          |  |  |  |  |  
          |  |  | 
            
              | ้ิเอาโค้ดมาแปะครับ เพราะพี่ ๆเขาจะได้ช่วยถูก
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2019-07-12 10:44:58 | By :
                            nobetaking |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
 
        
          |  |  |  |  |  
          |  |  | 
            
              |  ตอบความคิดเห็นที่ : 1 เขียนโดย : nobetaking เมื่อวันที่ 2019-07-12 10:44:58 
 รายละเอียดของการตอบ ::Code (PHP)
 <?php
include("config/config.inc.php"); //connect database
$month_check=$_REQUEST["month_check"];
$year_check=$_REQUEST["year_check"];
$Txt_dateStart=date("d-m-Y",strtotime($dateStart));
$Txt_dateStop=date("d-m-Y",strtotime($dateStop));
if ($month_check=="01") {
      $Text_month="มกราคม";
} elseif ($month_check=="02") {
      $Text_month="กุมพาพันธ์";
} elseif ($month_check=="03") {
      $Text_month="มีนาคม";
} elseif ($month_check=="04") {
  $Text_month="เมษายน";
} elseif ($month_check=="05") {
    $Text_month="พฤษภาคม";
} elseif ($month_check=="06") {
  $Text_month="มิถุนายน";
} elseif ($month_check=="07") {
  $Text_month="กรกฎาคม";
} elseif ($month_check=="08") {
  $Text_month="สิงหาคม";
} elseif ($month_check=="09") {
  $Text_month="กันยายน";
} elseif ($month_check=="10") {
  $Text_month="ตุลาคม";
} elseif ($month_check=="11") {
  $Text_month="พฤศจิกายน";
} elseif ($month_check=="12") {
  $Text_month="ธันวาคม";
}
?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>รายงาน Production ประจำเดือน <?php echo $Text_month;?> <?php echo $year_check;?>  </title>
    <!-- Tell the browser to be responsive to screen width -->
  <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
  <!-- Bootstrap 3.3.7 -->
  <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css">
  <!-- Font Awesome -->
  <link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.min.css">
  <!-- Ionicons -->
  <link rel="stylesheet" href="bower_components/Ionicons/css/ionicons.min.css">
  <!-- Theme style -->
  <link rel="stylesheet" href="dist/css/AdminLTE.min.css">
  <!-- AdminLTE Skins. Choose a skin from the css/skins
       folder instead of downloading all of them to reduce the load. -->
  <link rel="stylesheet" href="dist/css/skins/_all-skins.min.css">
  <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
  <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
  <!--[if lt IE 9]>
  <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
  <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
  <![endif]-->
      <!-- Favicon -->
   <link rel="shortcut icon" href="img/fv_mme.png">
  <!-- Google Font -->
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic">
</head>
<body>
<div class="wrapper">
  <!-- Main content -->
  <section class="invoice">
    <!-- title row -->
    <!-- title row -->
    <div class="row">
      <div class="col-xs-12">
          <img src="img/fv_mme.png"class="pull-left" width="55"></img>    ใบรายงานสรุปเที่ยว
          <br>   ห้างหุ้นส่วนจำกัด แม่เมาะวิศวกรรมเหมืองแร่
          <small class="pull-right">ประจำวันที่ : <?php echo $Text_month;?> <?php echo $year_check;?> <input type="button" class="btn btn-success btn-sm" name="Button" value="Print" 
            onclick="javascript:this.style.display='none';window.print();"></small>
        <hr>
      </div>
      <!-- /.col -->
    </div>
<?php 
$allEquipData = array();
$sql2="SELECT * from equipment where Equip_category='รถรับ' order by Equip_id ASC";
$resultA=mysql_db_query ($objDB, $sql2);
while($arr2=mysql_fetch_array($resultA)){
$allEquipData[$arr2['Equip_id']] = $arr2['Equip_codename'];
}
/*
echo "<pre>";
print_r($allEquipData);
echo "</pre>";
*/
//เรียกข้อมูลการจองของเดือนที่ต้องการ
 $allReportData = array();
 $strSQL = "SELECT production.*,equipment.*,
DAY(`Prod_date`) AS dayToday,
SUM(Oil)as Total_Oil_dt,
SUM(Prod_trip)as Total_Trip_dt,
SUM(Prod_bcm) as Total_BCM_dt,
SUM(Total_kilo) as Total_kilo_dt 
FROM `production` 
left join equipment on production.Equip_id=equipment.Equip_id
";
 $strSQL.= "WHERE `Prod_date` LIKE '$year_check-$month_check%' AND Equip_category='รถรับ' ";
$strSQL.= "GROUP by equipment.Equip_id,dayToday";
              $result=mysql_db_query ($objDB,$strSQL);
              while($objResult=mysql_fetch_array($result)){
   $allReportData[$objResult['Equip_id']][$objResult['dayToday']] = $objResult['Total_Oil_dt'];
              }
$allEquipTotal = array();
$sql3="SELECT production.*,equipment.*,
DAY(`Prod_date`) AS dayToday,
SUM(Oil)as Total_Oil_dt,
SUM(Prod_trip)as Total_Trip_dt,
SUM(Prod_bcm) as Total_BCM_dt,
SUM(Total_kilo) as Total_kilo_dt 
FROM `production` 
left join equipment on production.Equip_id=equipment.Equip_id
WHERE `Prod_date` LIKE '$year_check-$month_check%' AND Equip_category='รถรับ'
GROUP by equipment.Equip_id,dayToday
";
$resultA=mysql_db_query ($objDB, $sql3);
while($arr2=mysql_fetch_array($resultA)){
$Total_sum=$Total_sum+$arr2['Total_Oil_dt'];
$allEquipTotal[$arr2['Equip_id']] = $Total_sum;
}
/*
echo "<pre>";
print_r($allEquipTotal);
echo "</pre>";
*/
      
?>
 <!-- Table row -->
      <div class="row">
        <div class="col-xs-12 table-responsive">
            <div class="box-header with-border">
              <h3 class="box-title">สรุปเติมน้ำโซล่า รถรับ</h3>
            </div>
          <table class="table table-striped table-condensed table-bordered">
            <thead>
            <tr>
              <th class="text-center">เครื่องจักร</th>
              <?php
              $timeDate = strtotime($year_check.'-'.$month_check."-01");  //เปลี่ยนวันที่เป็น timestamp
              $lastDay = date("t", $timeDate);       //จำนวนวันของเดือน
              //echo "$timeDate";
              //สร้างหัวตารางตั้งแต่วันที่ 1 ถึงวันที่สุดท้ายของดือน
              for($day=1;$day<=$lastDay;$day++){
               echo '<th>' . substr("0".$day, -2) . '</th>';
              } ?>
              <th>Total</th>
            </tr>
   <?php 
//วนลูปเพื่อสร้างตารางตามจำนวนรายการใน Array
foreach($allEquipData as $empCode=>$empName){
 echo '<tr>';//เปิดแถวใหม่ ตาราง HTML
  echo '<td>'. $empName .'</td>';
  //เรียกข้อมูลขอแต่ละเครื่องจักร ในเดือนนี้
 for($j=1;$j<=$lastDay;$j++){
  //ตรวจสอบว่าวันที่แต่ละวัน $j ของ เครื่องแต่ละรหัส  $EquipCode มีข้อมูลใน  $allReportData หรือไม่ ถ้ามีให้แสดงจำนวนในอาร์เรย์ออกมา ถ้าไม่มีให้เป็น 0
  $numBook = isset($allReportData[$empCode][$j]) ? '<div>'.$allReportData[$empCode][$j].'</div>' : 0;
  echo "<td class='number'>", $numBook, "</td>";
 }
echo "<td class='number'>", array_sum($allReportData), "</td>";
echo '</tr>';//ปิดแถวตาราง HTML
}
echo "</table>";
/*
echo "<pre>";
print_r($allReportData);
echo "</pre>";
*/
?>
        </div>
      </div>
        <!-- /.col -->
  </section>
  <!-- /.content -->
</div>
<!-- ./wrapper -->
</body>
</html>
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2019-07-12 10:48:35 | By :
                            bondsanti |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
 
 
        
          |  |  |  |  |  
          |  |  | 
            
              | คิวรี่เอาเฉพาะผลรวมก่อน จัดเก็บเป็น array ไว้ง่ายกว่า Code (PHP)
 
 $rowsTTL = $db->query('select id sum(xyz) ttl from tb_abc where dte between stdte and endte group by id');
$arTTL = []; while( $row = $rowsTTL.fetch_object()){
   $arTTL[$row->id] = $row;
}
 แล้ว เอา $arTTL[ id ]->ttl มาใช้งาน
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2019-07-12 14:53:36 | By :
                            Chaidhanan |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | echo "<td class='number'>", array_sum($allReportData), "</td>"; 
 Sum ตามมิติที่ 1 ครับ เปลี่ยนเป็น
 
 echo "<td class='number'>", array_sum($allReportData[$empCode]), "</td>";
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2019-07-12 16:02:42 | By :
                            birdbird27 |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  |  |