|
|
|
ขอคำแนะนำครับ เมื่อสั่งให้ SUM (ในกรณีที่ไม่มีรายการ) เขียนCode ให้อ่านค่าว่าง (' ') ไม่มีผล |
|
|
|
|
|
|
|
มันว่าง 2 ช่องรึป่าวครับ ลองลบดู
ไม่ก้ลองใช้ empty($Pack)
|
|
|
|
|
Date :
2016-11-02 07:21:01 |
By :
Luz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. ทำไม SQL ไปอยู่ใน value ของ input อันนี้งงก็เลยถามเฉยๆครับ
2. เปลี่ยนจาก SUM(amount) เป็น SUM(amount) AS sum_amount
3. เปลี่ยน $Pack = $row['SUM(amount)']; เป็น $Pack = $row['sum_amount'];
4. ที่เขียนเช็คเงื่อนไข if ($Pack== ' ') { ใน ' ' มันมีการเว้นว่างไว้ การเว้นว่างเท่ากับกด space 1 เคาะ แต่การ SUM จะได้แค่ 0 กับค่าตามจำนวน ดังนั้นจะต้องเขียนใหม่เป็น if ($Pack > 0) {
|
|
|
|
|
Date :
2016-11-02 07:49:38 |
By :
{Cyberman} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองปรับเป็นแบบนี้ดูครับ จะได้ไม่งง code php กับ html จะได้ไม่ปนกัน
Code (PHP)
<?php
function sumAmount(){
$query = "SELECT chargedby, SUM(amount) AS amount FROM ots_table WHERE chargedby ='Paid' and customeragency like '%$Centara-hh%' GROUP BY chargedby";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
$Pack = $row['amount'];
if ($Pack>'0')
{
echo 'ยังไม่ได้จ่าย';
}else{
echo 'จ่ายแล้ว';
}
}
}
$sumAmount = sumAmount();
?>
<table><tr>
<td bgcolor="#FAEBD7" width="159">
<input type="text" name="Package" id="Package" style="width:150px;font-size:16px; color:#FFFF;" value="<?php $sumAmount?>"/></td></tr></table>
</body>
|
|
|
|
|
Date :
2016-11-02 08:14:40 |
By :
thesin18598 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (SQL)
sum( coalesce(amount,0)) as sum_amount
การใช้คำสั่ง sum จะต้อง บวก ที่มีค่าเท่านั้น ถ้ามีค่าใดค่าหนึ่งเป็น null ก็จะทำให้ทั้งหมดเป็น null ไปด้วย
ดังนั้นต้องตรวจสอบและแปลงค่าก่อนถึงจะ นำไปบวก
ุ
|
ประวัติการแก้ไข 2016-11-03 23:21:54 2016-11-03 23:22:28
|
|
|
|
Date :
2016-11-03 23:17:17 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
echo SQL แล้วไปรันใน phpMyAdmin ให้ดูหน่อยครับ ว่าผลลัพธ์เป็นแบบไหน
ทำไมตรวจสอบทั้งค่าว่าง และ 0 ตามที่หลายๆท่านแนะนำถึงใช้ไม่ได้กับกรณีนี้
เพราะปกติทุกคนก็เขียนแบบเดียวกันครับ
ปล. เอาหน้าผลบัพธ์ด้วยจะยิ่งดีครับ จะได้เห็นภาพกันชัดๆ
|
ประวัติการแก้ไข 2016-11-04 06:45:44
|
|
|
|
Date :
2016-11-04 06:44:39 |
By :
{Cyberman} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($Pack== ' ')
เปลี่ยน เป็น
if ($Pack==0')
สาเหตุ มันเป็นค่า วรรค เมื่อนำมาเปรียบเทียบ มันมีค่า
วรรค ไม่เท่ากับ 0
แต่ '' (singlequote ติดกัน) มีค่าเท่ากับ 0
'' == 0 --> true
'' ===0 --> false
' ' == 0 --> false (วรรค ไม่เท่ากับ 0)
ใช้ condition ให้ถูกต้อง
ค่า sum(amount) result ที่ได้จะเป็น ค่าตัวเลข ไม่เป็นค่า วรรค
|
ประวัติการแก้ไข 2016-11-04 08:10:37
|
|
|
|
Date :
2016-11-04 08:09:55 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SELECT SUM(CAST(field_name AS DECIMAL(10,3))) AS sum_amount FROM table
|
|
|
|
|
Date :
2016-11-04 11:24:20 |
By :
fossil31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แก้ที่ ฟิว ที่เก็บข้อมุลครับ เวลา insert เข้า ให้ insert ข้อมูลเป็น 0 แทนที่จะจะเป็นค่าว่าง ลองดูนะครับ
|
|
|
|
|
Date :
2016-11-05 08:14:44 |
By :
thesin18598 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองให้มันเช็ค mysql_num_rows หรือยังครับ
ประมาณ $numrows = mysql_num_rows($result);
if (!$numrows)
{
echo 'ยังไม่จ่าย';
}
น่าจะได้นะครับ
ต่อจากบรรทัด
$result = mysql_query($query) or die(mysql_error());
แต่ถ้ายังไม่ได้ ต้อง select * from table ที่จะดึงข้อมูล แล้ว numrows เพื่อเช็คว่ามันมีค่าหรือเปล่า
|
ประวัติการแก้ไข 2016-11-05 11:01:33 2016-11-05 11:08:26
|
|
|
|
Date :
2016-11-05 11:00:13 |
By :
Pla2todkrob |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ยังอยากเห็นหน้า phpMyAdmin ที่เอา SQL ไปรัน
และหน้าแสดงผลลัพธ์ที่บอกว่ามีแต่จ่ายอย่างเดียวอยู่นะครับ ^^"
|
|
|
|
|
Date :
2016-11-05 15:42:16 |
By :
{Cyberman} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|