สมมติว่า เรามีฐานข้อมูลที่เก็บรายการสั่งซื้อสินค้าชนิดหนึ่ง ของบริษัทและบริษัทมี หลายสาขา ต้องการแสดงข้อมูลการสั่งซื้อ โดยสลับสีตามสาขา  ตัวอย่างข้อมูลในตารางเป็นดังนี้

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 นั่นแหละ

แค่นี้แหละครับ สีมันก็จะแบ่งออกเป็นกลุ่มๆ ตามสาขา