ถาม code การแสดงข้อมูลครับ item 001=((5+8+9)-6)*0.07=1.12item 002=(10-3)*0.07=0.49 คือผมต้องการให้มันออกมาแสดงแบบด้านล่างครับ
ก็คุณมีข้อมูลแล้วนิครับ
เวลา query ข้อมูลออกมานั้นก็นำมาหาค่าธรรมดาตามสูตรของคุณ
โดยการเช็คเงื่อนไขถ้าเป็น 001 ก็สูตรคำนวนอย่างหนึ่ง 002 ก็ทำอีกอย่างหนึ่ง
Date :
2010-06-28 13:16:55
By :
oxygenyoyo
มันไม่ใช่แค่นั้นครับ คือมันดึงมาจากฐานข้อมูลครับ มันไม่ใช่แค่เท่านั้นมันอาจจะเป็น เช่น
001 3 ตัว
002 4 ตัว
003 5 ตัว อย่างนี้ครับ
Date :
2010-06-28 13:21:56
By :
e_tawee
คือคุณวนมาจะกี่แถวกี่ตัวแต่ช่วงที่คุณวนนั้นคุณก็show ไปด้วยไม่ใช่หรอครับ.
Code (PHP)
while($record = mysql_fetch_array($query))
{
$var1 = $record['name'];
..
if($status == "001")
{
//คำนวนไรก็ว่าไปเก็บค่าไว้
} else if ($status == "002"){
//คำนวนไรก็ว่าไปเก็บค่าไว้
} else if ....
}
echo ค่าต่างๆที่ทำการ set ไว้แล้ว
}
Date :
2010-06-28 13:25:20
By :
oxygenyoyo
แล้วถ้ามันมีสัก 1000 record ของตัว item ล่ะครับ
Date :
2010-06-28 13:30:45
By :
e_tawee
คือผมไม่เข้าใจว่าคุณกังวลหรือติดปัญหาอะไรกันแน่อ่ะครับ
มี 1000 ก็วนค่าออกมาแบบแบ่งหน้าก็ได้นิครับถ้ากลัวมันจะเยอะ
รบกวนอธิบายให้เคลียร์กว่านี้หน่อยครับ ... ?
Date :
2010-06-28 13:37:51
By :
oxygenyoyo
item 001=((5+8+9)-6)*0.07=1.12
item 002=(10-3)*0.07=0.49
คือผมต้องการให้มันออกมาแสดงแบบด้านล่างครับ เช่น
no item money discount vat
1 001 5 6 1.12
2 001 8 6 1.12
3 001 9 6 1.12
4 002 10 3 0.49
5 003 2 4 0.7
6 003 8 4 0.7
... ไปเรื่อยๆ
ผมต้องการคือ เช่น 001 สูตรที่คิดคือ ((5+8+9)-6)*0.07=1.12 อยากให้ ค่า vat มันเท่ากันตั้ง record แรกถึง record สุดท้ายของ item 001 ครับ
ผมต้องเขียน code ยังไงครับ ช่วยแนะนำด้วยครับ ขอบคุณครับ
Date :
2010-06-28 13:49:46
By :
e_tawee
ขอถามหน่อยครับ
1 001 5 6 1.12
2 001 8 6 1.12
3 001 9 6 1.12
4 002 10 3 0.49
ข้อมูลชุดนี้ดึงมาจาก Table แล้วใช่หรือป่าวครับ แล้วดึงมาทุก colum เลยหรือป่าวครับ
Date :
2010-06-28 13:50:47
By :
SOUL
ตัว vat หลังสุด คำนวน มาแสดงครับ ตัวอื่นดึงมาจาก database ครับ
Date :
2010-06-28 13:52:39
By :
e_tawee
อ๋อเข้าใจแหละ
item 001=((5+8+9)-6)*0.07=1.12
ตัวเลข 5 8 9 เนี้ยคือค่าของ column คุณก็ไม่อธิบายละครับแล้วคนช่วยคุณจะรู้ไหมครับก็บอกไปสิครับว่ามันเป็นอย่างนี้
item 001 = ((ตัวแปร money record 1 + ตัวแปร money record 2 + ตัวแปร money record 3 + ตัวแปร money record n) - ค่า discount ) * 0.07
item 002 = ตัวแปร money record 1 + ตัวแปร money record 2 + ตัวแปร money record 3 + ตัวแปร money record n)*0.07=0.49
แล้วคืออยากรู้ว่าจะเอาค่ามาคำนวนไงเพราะว่าค่า vat มันคือหาทั้งหมดใช่ไหม
ก็หาค่า sum ของ column money แล้วใส่ โดน group by item ก่อนคุณก็จะได้ค่าผมรวมของแต่ละ item แล้วก็เอามาเข้าสูตรต่างๆ
โดยทำเช็คเงื่อนไขเหมือนเดิม
เข้าใจไหมครับถ้าไม่เข้าใจ จะอธิบายแบบละเอียดให้
Date :
2010-06-28 14:09:47
By :
oxygenyoyo
ขอตัวอย่างด้วยครับไม่เข้าใจครับ ขอบคุณครับ
Date :
2010-06-28 14:17:03
By :
e_tawee
อ๋อมันเป็นแบบนีนี่เอง งงกับคำถามของ จขกท อยู่ตั้งนาน เลยไม่รู้จะตอบยังไงดี
สมมุตินะครับสมมุติ
ให้ Field Id เก็บค่า 001,002,003,....
ให้ Field M เก็บค่า 5,8,9,....
ให้ Field N เก็บค่า 6,6,6,....
Code (PHP)
$qr=mysql_db_query($db,"select Id,sum(M) sm,N from table group by Id");
while($rs=mysql_fetch_array($qr))
echo $rs['Id']."=".($rs['sm']-$rs['N'])*0.07."<br>";
ถ้าจะให้เหมือนตัวอย่างของคุณ จขกท ก็
Code (PHP)
$i=1;
$qr=mysql_db_query($db,"select item,sum(money) sm,discount from table group by item");
while($rs=mysql_fetch_array($qr)){
$qr2=mysql_db_query($db,"select * from table where item='".$rs['item']."'");
while($rs2=mysql_fetch_array($qr2)){
echo $i." ".$rs['item']." ".$rs2['money']." "$rs2['discount']." ".($rs['sm']-$rs['discount'])*0.07."<br>"; // 1 001 5 6 1.12 แล้วก็ขึ้นบรรทัดใหม่
++$i;
}
}
ไม่รู้จะโดนป่าว ถ้าไม่โดนก็ขอโทษด้วยนะครับ งง
Date :
2010-06-28 14:19:26
By :
tinthai
Code (PHP)
$host = 'localhost';
$user = 'tong'; // เปลี่ยนตรงนี้ด้วย
$pass = ''; // เปลี่ยนตรงนี้ด้วย
$link = mysql_connect($host,$user,$pass);
$db = mysql_select_db('test');// เปลี่ยนตรงนี้ด้วย
//เริ่มแรกคุณต้องรู้ก่อนว่าแต่ละ item นั้นมีค่ารวม vat เท่าไรเพื่อจะทำการโชว์ค่า vat ตอนที่คุณวนลูป
$sql = "select sum(money) AS sum_money,item FROM test GROUP BY item ORDER BY item"; // เปลี่ยน test เป็นชื่อ table ที่คุณใช้
$query = mysql_query($sql);
while($record = mysql_fetch_array($query))
{
$item[$record['item']] = $record['sum_money'];
}
// ตอนนี้คุณจะได้ item[001] = 22 , item[002] = 10 , item[003] = 10
// เช็คโดยใช้ฟังก์ชั่นนี้ print_r ($item);
echo 'no. | item | money | discount | vat <br />';
$sql_test = "select id,item,money,discount FROM test";
$query_test = mysql_query($sql_test);
while($record_test = mysql_fetch_array($query_test))
{
$id = $record_test['id'];
$item_db = $record_test['item'];
$money = $record_test['money'];
$discount = $record_test['discount'];
if($item_db == '001')
{
$vat = ($item['001'] - $discount)*0.07; // (22-6)*0.07
} else if($item_db == '002')
{
$vat = ($item['002'] - $discount)*0.07; // (10 -3)*0.07
} // else if ... ไปเรื่อยจะเท่าไรก็ได้ แต่แนะนำถ้าเยอะใช้ switch ดีกว่า
echo $id . ' | ' . $item_db . ' | ' . $money . ' | ' . $discount . ' | ' . $vat . '<br />';
}
รันแล้วนะครับได้ชัวร์
สงสัยอะไรถามแล้วกัน
Date :
2010-06-28 14:52:35
By :
oxygenyoyo
แล้วสมมุติมันมีสัก หลาย item ล่ะครับ สมมุติ มีสักหมื่น เราไม่เขียนยาวมากเลยเหรอครับตรง if ส่วนล่างครับมีวิธีอื่นไหมครับ
Date :
2010-06-28 15:53:04
By :
t
ถ้ามันเป็นเลข 001 002 003
ก็ทำการ รันเลขสิ for, while
Date :
2010-06-28 16:00:38
By :
50121680
คุณก็เขียนแยกหน้าออกไปสิครับ
แต่ถ้าคุณกำลังจะถามว่ามีโค้ดให้มัน gen ค่าเองเนี้ยผมคงฝืมือไม่ถึงล่ะครับ
ผมคิดว่ายังไงก็ต้องเขียนแบบนั้น เพราะยังไงสูตรก็ไม่เหมือนกัน
Date :
2010-06-28 16:01:06
By :
oxygenyoyo
ตอบ Gusto
มันมีสูตรที่ไม่เหมือนกันอีกครับแต่ละ item ยังไงก็ต้องเขียนสูตรรองรับ
หมื่นอันก็ต้องเขียนแหละ ผมคิดไม่ออกเหมือนกันว่าจะทำอย่างไร
Date :
2010-06-28 16:02:06
By :
oxygenyoyo
ลองดู 9 บรรทัดนี้มั้ยครับ ไม่ต้องนั่งตรวจสอบ ต่อให้มีเป็นล้าน item ก็ไม่ต้องตรวจสอบ
Code (PHP)
$i=1;
$qr=mysql_db_query($db,"select item,sum(money) sm,discount from table group by item");
while($rs=mysql_fetch_array($qr)){
$qr2=mysql_db_query($db,"select * from table where item='".$rs['item']."'");
while($rs2=mysql_fetch_array($qr2)){
echo $i." ".$rs['item']." ".$rs2['money']." "$rs2['discount']." ".($rs['sm']-$rs['discount'])*0.07."<br>"; // 1 001 5 6 1.12 แล้วก็ขึ้นบรรทัดใหม่
++$i;
}
}
Date :
2010-06-28 16:13:05
By :
tinthai
ขอบคุณครับสำหรับทุกคำตอบ ผมทำได้แล้วครับ
Date :
2010-06-28 16:47:12
By :
e_tawee
คุนดูลุ้นค่ะ ตัวเกร็งละ ^^
กลับมาเขียน PHP แล้วหรอคะพี่อิน
Date :
2010-06-28 16:50:18
By :
blurEyes
Load balance : Server 02