ถ้าเรา while ข้อมูลออกมาได้ 10 20 30 เราจะนำข้อมูลก่อนมาหน้ามาโชว์ยังไง
ทำใน loop เลยก็ได้ครับ ประมาณนี้
Code (PHP)
$arr_test=array(3,33,333,3333,33333);
$old_val=0;
foreach($arr_test as $idx=>$new_val){
echo"<br>data:$new_val==>diff===>".($new_val-$old_val);
$old_val=$new_val;
}
Date :
2015-03-04 00:05:55
By :
ผ่านมา
มีแบบ sql ไหมครับ
Date :
2015-03-04 00:17:59
By :
oreojung
น่าจะประมาณนี้ครับ
Code (SQL)
select id,init,
init-(select max(init) as old_val from tb_name as tmp_tb where tmp_tb.init<tb_name.init) as diff
from tb_name
Date :
2015-03-04 00:27:25
By :
ผ่านมา
Code
$SQLDetail = "SELECT * FROM bill WHERE id = $id ORDER BY id ASC";
mysql_query("SET NAMES TIS620");
$QueryDetail = mysql_query($SQLDetail) or die ("Error Query [".$SQLDetail."]");
?>
<div align="center">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" width="25%" height="25">ประจำเดือน</td>
<td align="center" width="20%" height="25">ปี พ.ศ.</td>
<td align="center" width="30%" height="25">จำนวน (หน่วย)</td>
<td align="center" width="25%" height="25">รวมเป็นเงิน</td>
</tr>
<?php
while($GetDetail = mysql_fetch_array($QueryDetail))
{
?>
<tr>
<td align="center" height="20"><?php if ($GetDetail['month'] == 1) { echo "มกราคม"; }
elseif ($GetDetail['month'] == 2) { echo "กุมภาพันธ์"; }
elseif ($GetDetail['month'] == 3) { echo "มีนาคม"; }
elseif ($GetDetail['month'] == 4) { echo "เมษายน"; }
elseif ($GetDetail['month'] == 5) { echo "พฤษภาคม"; }
elseif ($GetDetail['month'] == 6) { echo "มิถุนายน"; }
elseif ($GetDetail['month'] == 7) { echo "กรกฎาคม"; }
elseif ($GetDetail['month'] == 8) { echo "สิงหาคม"; }
elseif ($GetDetail['month'] == 9) { echo "กันยายน"; }
elseif ($GetDetail['month'] == 10) { echo "ตุลาคม"; }
elseif ($GetDetail['month'] == 11) { echo "พฤศจิกายน"; }
elseif ($GetDetail['month'] == 12) { echo "ธันวาคม"; }
?></td>
<td align="center" height="20"><?php echo $GetDetail["year"] + 543 ?></td>
<td align="center" height="20"><?php echo $GetDetail["unit"] ?></td>
<td align="center" height="20"><?php echo $GetDetail["unit"] * 7 ?> บาท</td>
</tr>
<?php } ?>
ช่วยหน่อยครับ งงมาก 555
Date :
2015-03-04 01:02:12
By :
oreojung
Code (SQL)
select
tb1.month old_month, tb1.init as old_unit,
tb2.month new_month, tb2.init as new_unit,
(tb2.init - tb1.init) as unit
from bill as tb1
left join bill as tb2
on tb1.month = (tb2.month-1)
where tb2.month is not null
order by tb2.month
ข้อสำคัญของโค๊ดชุดนี้ ต้องมีรายการค่าไฟ ทุกเดือน เรียงลำดับกัน ถ้าข้าม ข้อมูลจะขาดหายไป
ประวัติการแก้ไข 2015-03-04 07:53:40
Date :
2015-03-04 07:53:12
By :
Chaidhanan
Code
$transaction_id = $_GET['id'];
$SQLDetail = "select
tb1.month old_month, tb1.unit as old_unit,
tb2.month new_month, tb2.unit as new_unit,
(tb2.unit - tb1.unit) as unit,
tb2.month as month,
tb2.year as year,
tb2.unit as unit_elec
from electricity_bill as tb1
left join electricity_bill as tb2
on tb1.month = (tb2.month-1)
where tb2.month is not null AND tb2.transaction_id = $transaction_id
order by tb1.id";
$QueryDetail = mysql_query($SQLDetail) or die ("Error Query [".$SQLDetail."]");
?>
<div align="center">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" width="25%" height="25">ประจำเดือน</td>
<td align="center" width="20%" height="25">ปี พ.ศ.</td>
<td align="center" width="30%" height="25">จำนวน (หน่วย)</td>
<td align="center" width="25%" height="25">รวมเป็นเงิน</td>
</tr>
<?php
while($GetDetail = mysql_fetch_array($QueryDetail))
{
?>
<tr>
<td align="center" height="20"><?php if ($GetDetail['month'] == 1) { echo "มกราคม"; }
elseif ($GetDetail['month'] == 2) { echo "กุมภาพันธ์"; }
elseif ($GetDetail['month'] == 3) { echo "มีนาคม"; }
elseif ($GetDetail['month'] == 4) { echo "เมษายน"; }
elseif ($GetDetail['month'] == 5) { echo "พฤษภาคม"; }
elseif ($GetDetail['month'] == 6) { echo "มิถุนายน"; }
elseif ($GetDetail['month'] == 7) { echo "กรกฎาคม"; }
elseif ($GetDetail['month'] == 8) { echo "สิงหาคม"; }
elseif ($GetDetail['month'] == 9) { echo "กันยายน"; }
elseif ($GetDetail['month'] == 10) { echo "ตุลาคม"; }
elseif ($GetDetail['month'] == 11) { echo "พฤศจิกายน"; }
elseif ($GetDetail['month'] == 12) { echo "ธันวาคม"; }
?></td>
<td align="center" height="20"><?php echo $GetDetail["year"] + 543 ?></td>
<td align="center" height="20"><?php echo $GetDetail["unit_elec"] ?> = <?php echo $GetDetail["unit"] ?></td>
<td align="center" height="20"><?php echo $GetDetail["unit"] * $Information["electricity_bill"] ?> บาท</td>
</tr>
<?php } ?>
</table>
</div>
Output
ประจำเดือน ปี พ.ศ. จำนวน (หน่วย) รวมเป็นเงิน
มกราคม 2558 0010 = 10 70 บาท
กุมภาพันธ์ 2558 0053 = 43 301 บาท
มกราคม 2558 0010 = 10 70 บาท
กุมภาพันธ์ 2558 0053 = 27 189 บาท
SQL
id Ascending transaction_id room month year unit
1 1 101 0 2015 0000
2 1 101 1 2015 0010
3 2 102 0 2015 0000
4 2 102 1 2015 0026
5 1 101 2 2015 0053
6 2 102 2 2015 0032
ประวัติการแก้ไข 2015-03-04 18:59:34 2015-03-04 19:01:50
Date :
2015-03-04 18:58:10
By :
oreojung
ตัวอย่างที่ผมให้ไปต้องไปประยุกต์กับข้อมูลจริงด้วยนะครับ
Code (SQL)
select
tb2.year, tb2.month,
tb1,init as old_init, tb2.init,
tb2.init - tb1.init as unit_use
from bill tb2
left join bill tb1
on (tb2.year * 12 + tb2.month) = (tb1.year * 12 + tb1.month +1)
where tb2.year = ปีที่ต้องการ
ตรง where ก็เปรียบเที่ยบ จากสิ่งที่ต้องการจริง
Date :
2015-03-04 19:55:14
By :
Chaidhanan
มันแสดงผลแบบนี้อ่ะครับ เลยมึน ๆ งง ๆ เลยอ่ะครับ
Output
SQL
Code
<?php
$transaction_id = $_GET['id'];
$SQLDetail = "SELECT
tb2.year, tb2.month,
tb1.unit AS old_unit, tb2.unit,
tb2.unit - tb1.unit AS unit_use
FROM electricity_bill tb2
LEFT JOIN electricity_bill tb1
ON (tb2.year * 12 + tb2.month) = (tb1.year * 12 + tb1.month +1)
WHERE tb2.transaction_id = $transaction_id";
mysql_query("SET NAMES TIS620");
$QueryDetail = mysql_query($SQLDetail) or die ("Error Query [".$SQLDetail."]");
?>
<div align="center">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" width="25%" height="25">ประจำเดือน</td>
<td align="center" width="20%" height="25">ปี พ.ศ.</td>
<td align="center" width="30%" height="25">จำนวน (หน่วย)</td>
<td align="center" width="25%" height="25">รวมเป็นเงิน</td>
</tr>
<?php
while($GetDetail = mysql_fetch_array($QueryDetail))
{
?>
<tr>
<td align="center" height="20"><?php echo $GetDetail['month'] ?></td>
<td align="center" height="20"><?php echo $GetDetail["year"] + 543 ?></td>
<td align="center" height="20"><?php echo $GetDetail["unit"] ?></td>
<td align="center" height="20"><?php echo $GetDetail["unit"] * 7 ?> บาท</td>
</tr>
<?php } ?>
</table>
</div>
Date :
2015-03-04 22:28:59
By :
oreojung
Code (SQL)
SELECT
tb2.room, tb2.year, tb2.month,
coalesce(tb1.unit,0) AS old_unit, tb2.unit,
tb2.unit - coalesce(tb1.unit,0) AS unit_use
FROM electricity_bill tb2
LEFT JOIN electricity_bill tb1
ON (tb2.year * 12 + tb2.month) = (tb1.year * 12 + tb1.month +1)
and tb2.room=tb1.room
WHERE tb2.transaction_id = 1
order by tb2.year, tb2,month
ลืม and tb2.room=tb1.room
ประวัติการแก้ไข 2015-03-05 08:43:42
Date :
2015-03-05 08:42:37
By :
Chaidhanan
ผมอยากดึงข้อมูล เดือนล่าสุด กับเดือนก่อน มาแสดงอ่ะครับ
แสดงตรงในรูปอ่ะครับ แล้วนำหน่วยที่คำนวนได้ไป คำนวนกับราคาต่อหน่วยอ่ะครับ
Date :
2015-03-21 03:12:22
By :
oreojung
ถ้าเอาเดือนก่อนสุดท้าย มาโชว์ด้วยได้ไหมครับ แบบไม่ใช้ limit 2 อ่ะครับ เป็นแบบแทนตัวแปรอ่ะครับ
ประวัติการแก้ไข 2015-03-21 03:34:51
Date :
2015-03-21 03:32:08
By :
oreojung
เอ งงครับ แล้วมันต่างกันอย่างไงครับ แถมยากกว่าด้วย 555
แบบกำหนดเดือน
WHERE tb2.transaction_id = 1 and concat( year, month) <= '$year$month'
ประวัติการแก้ไข 2015-03-21 04:20:23
Date :
2015-03-21 04:17:21
By :
Chaidhanan
พอดี จะให้มันโชว์ในบิลอ่ะครับ
New กับ Old
0084 - 0054 ประมาณนี้อ่ะครับ ลองใช้ Limit 2 ตัว Unit use มันติดมาด้วย ทั้ง 2 เดือน
Date :
2015-03-21 04:29:53
By :
oreojung
อ้อ เวลาแสดงผล ช่องเดือนเก่าก็ไม่ต้องใส่ตัวแปรลงไป ก็ได้นะครับ เราเป็นคนกำหนดการแสดงเองนะครับ
Date :
2015-03-21 04:33:11
By :
Chaidhanan
มีตัวอย่างโค้ดไหมครับ งงกับการโชว์เดือนเก่ามา 555
Date :
2015-03-21 04:37:21
By :
oreojung
เอาโค๊ดที่ทำมาดูดีกว่าครับ (บอกตรงๆ ครับ ขีเกียจคิด 5555)
Date :
2015-03-21 04:41:24
By :
Chaidhanan
Load balance : Server 01