# Populating a Matrix Table with ColdFusion

by Ron Kurtus (26 December 2002)

Taking information from a database and linearly populating the rows of a table is relatively simple in Macromedia ColdFusion. It is more difficult to populate a table that is a matrix, with both columns and rows. The method is similar to populating a simple table, except that you, must define the number of rows and then loop through the matrix.

Questions you may have include:

• How is a simple table populated?
• How do you populate a matrix?
• What does the output look like?

This lesson will answer those questions.

## Simple table

The method to simply populate the rows of a table in a given sequence is:

<CFQUERY NAME="list" DATASOURCE="xyz" DBTYPE="ODBC">
select * from table_name
order by seq_no
</CFQUERY>

<TABLE>
<CFOUTPUT QUERY="list">
<TR> <TD>#seq_no#: #name#</TD></TR>
</CFOUTPUT>
</TABLE>

This is pretty straightforward.

## Populate matrix

To populate a matrix table of 3 columns by a number of rows determined by the amount of data you have, you first make the same query as in the simple case. The data in this table is ordered by a sequence number. You could also order the data by ID value.

<CFQUERY NAME="list" DATASOURCE="xyz" DBTYPE="ODBC">
select * from table_name
order by seq_no
</CFQUERY>

### Define number of rows

Find the number of records in your table. Then set the maximum rows as the integer of the number of records + 2, divided by 3. If the number of columns was 5, the maximum rows would be the integer of the number of records + 4, divided by 5.

<CFSET max_seq = #set_count.recordcount#>
<CFSET max_rows = INT((#max_seq# +2)/3)>

### Loop through matrix

First set a variable x = 0. Loop through the number of rows and then the columns.

<CFSET x = 0>

<TABLE>
<CFLOOP INDEX="seq_no" FROM="1" TO="#max_rows#">
<TR>
<CFLOOP INDEX="sequence" FROM="1" TO="3">
<CFSET x = x + 1>
<CFQUERY NAME="populate" DATASOURCE="xyz">
SELECT * FROM logo_info
WHERE sequence = #x#
ORDER BY sequence
</CFQUERY>
<TD>
<CFOUTPUT QUERY="populate"> #seq_no#: #name#</CFOUTPUT>
</TD>
</CFLOOP>
</TR>
</CFLOOP>
</TABLE>

## Output

The output table would look something like:

 1: Joe 2: Harry 3: Betty 4: Mary 5: Bill 6: Jose 7: Sue

This is an example where the maximum rows is the integer of (7 + 2)/3 = 3

## Summary

You can populate a table that is a matrix, with both columns and rows, by defining the maximum number of rows, looping through the rows, plus looping through the columns for each row.

Maintain a healthy attitude toward your work

## Resources and references

Ron Kurtus' Credentials

### Websites

ColdFusion Resources

### Books

Top-rated books on ColdFusion Do you have any questions, comments, or opinions on this subject? If so, send an email with your feedback. I will try to get back to you as soon as possible.

## Students and researchers

www.school-for-champions.com/coldfusion/
populate_matrix.htm

## Where are you now?

School for Champions

ColdFusion topics

## Also see

### Let's make the world a better place

Be the best that you can be.

Use your knowledge and skills to help others succeed.

Don't be wasteful; protect our environment.

### Live Your Life as a Champion:

Seek knowledge and gain skills

Do excellent work

Be valuable to others

Have utmost character

#### Be a Champion!

The School for Champions helps you become the type of person who can be called a Champion.