สมมติว่า เรามีฐานข้อมูลที่เก็บรายการสั่งซื้อสินค้าชนิดหนึ่ง ของบริษัทและบริษัทมี หลายสาขา ต้องการแสดงข้อมูลการสั่งซื้อ โดยสลับสีตามสาขา ตัวอย่างข้อมูลในตารางเป็นดังนี้
Date | Branch | Product | Amount | Unit | Price/Unit | Total |
---|---|---|---|---|---|---|
2007-11-22 | บริการรามอินทรา | ผ้าปิดจมูกขาว | 3 | โหล | 35 | 105 |
2007-11-20 | บริการรามอินทรา | ผ้าปิดจมูกขาว | 1 | โหล | 35 | 35 |
2007-10-31 | บริการรามอินทรา | ผ้าปิดจมูกขาว | 1 | โหล | 35 | 35 |
2007-12-04 | บริการหลังการขายสุรวงศ์ | ผ้าปิดจมูกขาว | 5 | โหล | 35 | 175 |
2007-11-13 | บริการหลังการขายสุรวงศ์ | ผ้าปิดจมูกขาว | 5 | โหล | 35 | 175 |
2007-10-27 | บริการหลังการขายสุรวงศ์ | ผ้าปิดจมูกขาว | 5 | โหล | 35 | 175 |
2007-12-03 | บริการหลังการขายเพชร | ผ้าปิดจมูกขาว | 10 | โหล | 35 | 350 |
2007-11-03 | บริการหลังการขายเพชร | ผ้าปิดจมูกขาว | 10 | โหล | 35 | 350 |
2007-10-04 | บริการหลังการขายเพชร | ผ้าปิดจมูกขาว | 1 | โหล | 35 | 35 |
2007-11-07 | บริการอู่สี | ผ้าปิดจมูกขาว | 2 | โหล | 35 | 70 |
ต้องการให้แถวของบริการรามอินทรา เป็นสีหนึ่ง และบริการหลังการขายสุรวงศ์เป็นอีกสี สลับไปเรื่อยๆ ดูโค้ดนะครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | <?php $hostname_connection = "localhost"; $database_connection = "inventory"; $username_connection = "root"; $password_connection = ""; $connection = mysql_pconnect($hostname_connection, $username_connection, $password_connection) or trigger_error(mysql_error(),E_USER_ERROR); mysql_query("SET NAMES UTF8") ; mysql_select_db($database_connection, $connection); $query_rs_report_order_detail = "SELECT * FROM tbl_order_detail"; $rs_report_order_detail = mysql_query($query_rs_report_order_detail, $connection) or die(mysql_error()); $row_rs_report_order_detail = mysql_fetch_assoc($rs_report_order_detail); $totalRows_rs_report_order_detail = mysql_num_rows($rs_report_order_detail); ?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Colored Row</title> </head> <body> <table > <tr> <th>Date</th> <th>Branch</th> <th>Product</th> <th>Amount</th> <th>Unit</th> <th>Price/Unit</th> <th>Total</th> </tr> <?php do { $iLoop = ($old_record == $row_rs_report_order_detail['department_name'])? $iLoop : ++$iLoop ; $bgcolor = (($iLoop%2)==0)?"#FFFFFF":"#EEEEEE"; ?> <tr bgcolor="<?php echo $bgcolor ;?>"> <td><?php echo $row_rs_report_order_detail['order_detail_date']; ?></td> <td><?php echo $row_rs_report_order_detail['department_name']; ?></td> <td><?php echo $row_rs_report_order_detail['product_group_name']; ?></td> <td><?php echo $row_rs_report_order_detail['order_detail_amount']; ?></td> <td><?php echo $row_rs_report_order_detail['unit_name']; ?></td> <td><?php echo $row_rs_report_order_detail['order_detail_price']; ?></td> <td> <?php echo number_format($row_rs_report_order_detail['order_detail_amount'] * $row_rs_report_order_detail['order_detail_price'] ); ?> </td> </tr> <?php $old_record = $row_rs_report_order_detail['department_name'] ; } while ($row_rs_report_order_detail = mysql_fetch_assoc($rs_report_order_detail)); ?> </table> </body> </html> |
ความสำคัญอยู่ตรงนี้
1.
41 42 | $iLoop = ($old_record == $row_rs_report_order_detail['department_name'])? $iLoop : ++$iLoop ; $bgcolor = (($iLoop%2)==0)?"#FFFFFF":"#EEEEEE"; |
ตรวจสอบว่าข้อมูลแถวปัจจุบัน เป็นสาขาใหม่หรือยัง ถ้าเป็นสาขาใหม่ ให้เพิ่มค่าใน $iLoop เข้าไปอีก 1 แต่ถ้าไม่ใช่ ก็ให้คงค่าเดิมไว้ หลังจากได้ค่าแล้ว ก็เอาไปหาค่าสี เพื่อกำหนดให้กับ bgcolor ของ tr
2.
59 | $old_record = $row_rs_report_order_detail['department_name'] ; |
ก่อนจะไป Loop ต่อไป ให้เก็บ ชื่อสาขาไว้ในตัวแปรหนึ่งก่อน เพื่อเอาไว้ทดสอบ ข้อ 1 นั่นแหละ
แค่นี้แหละครับ สีมันก็จะแบ่งออกเป็นกลุ่มๆ ตามสาขา
minddezign says:
28/07/2552 at 28/07/2552
อ่านอันนี้แล้วผมเอาไปประยุกต์ได้ เพิ่งเข้าใจแหล่ะครับ ขอบคุณครับ
administrator says:
28/07/2552 at 28/07/2552
ผมนึกว่า จะไม่มีใครสนใจโพสต์ตัวนี้เสียแล้ว
zerguuu says:
21/02/2554 at 21/02/2554
ขอบคุณเช่นกันค่ะ ช่วยได้เยอะเลยค่ะ
เต๋า says:
12/01/2555 at 12/01/2555
มีประโยชน์มากๆ ขอบคุณครับ หามาตั้งนานได้เอาไปประยุกต์ใช้
เต๋า says:
12/01/2555 at 12/01/2555
มีคำถามครับลองเอาไปประยุกต์ใช้ แต่ข้อมูลเริ่มต้นมันมาเริ่มที่แถวที่ 2 น่ะครับ ไม่ทราบว่าต้องดูที่ตรงไหนเหรอครับ ขอบคุณครับ
Mahtan Nana says:
12/01/2556 at 12/01/2556
พอจะมีตัวอย่างโค๊ดโปรแกรม ของการแสดงข้อมูลจากหลายตาราง โดยมาแสดงในหน้าฟอร์มเดียวกันไหมค่ะ ช่วยแนะนำหน่อยนะค่ะ ขอบคุณล่วงหน้านะค่ะ
วัชรเมธน์ ชิษณุคุปต์ ศรีเนธิโรทัย says:
14/01/2556 at 14/01/2556
ใช้คำสั่ง INNER JOIN อ่านได้ที่โพสต์นี้ครับ http://www.select2web.com/mysql/how-to-use-inner-join.html