| By James Edmunds | Article Rating: |
|
| April 17, 2006 12:30 PM EDT | Reads: |
13,233 |
In Table 3 note that we get a "state_ab" result for every state, as well as the coordinates needed on our map, but for those states that are only found in "tbl_states" and not in "biocenters" we get a row with no data in the "city" field, a condition that we'll use to trigger a different result than those that do have cities defined.
Our next group level defined by the ORDER BY of the query, and called by the "group" attribute, is "status," and, finally, "city," which we'll call twice, once nested inside of each of the two possible values for "status."
You can see how this information is used by following the program listing for "MainMap.CFM" abridged from the actual site to include only the code we need to illustrate the process used to populate the map display (see Listing 1).
The first item of business once we've called the query is to offset our map coordinates to account for the spot on the page where the containing div will display it. Then we begin a rather detailed grouped output that's used to set styles for the items that will display on the raw map.
Because we used a left outer join in our "getmapinfo" query, at the level of the group="state_ab" the parameter #state_ab# will be a list of the 51 states (including the District of Columbia) whether or not there are join matches. We'll evaluate each of these rows to see whether there's a city defined (because we asked for "SELECT distinct," those cities that have more than one match will be listed only once). The rows with no city defined (meaning there are no plasma centers in that state) are used to create one kind of div, "#state_ab#_set," and those that do have at least one city defined have created for them some additional offset information, the div "#state_ab#abbrev" and the additional "div #state_ab#detail."
That first <cfoutput>, in the <style> section of the <head> block, used only the topmost group of the query, since all we needed to do was list the states and evaluate if, based on whether they had data in their #city# fields, they needed merely the div that will write the abbreviation in place on the map; or, if they did have centers present, the richer pair of divs that we'll use to provide rollover display and links.
Digging in at All Three Levels
In the body of the
page, however, we use a <cfoutput> that employs the "group"
attribute at all three of the levels offered by the query's "ORDER BY"
clause.
Once again, the <cfoutput> begins by being grouped on "state_ab" and we evaluate whether a given #state_ab# has city data associated with it, our tip-off that there's at least one plasma center in that state. For those with no city, we write the div that writes the state abbreviation in white onto the map and we're done with that state.
But for those states with city data, we write a link that will pass the #state_ab# parameter to a page that will show the detailed information, and then after we pull the #state_full# state name to head the rollover div, we have a nested <cfoutput> that is grouped on "status," so we can differentiate between centers that are already open and those in the preparation stages. Here's a case in which we use the next level of the <cfoutput> grouping twice, once for each of our two possible values of "status."
The result is a map that highlights those states that have biocenters in them, which provides those states with a link to a detail page for drilling down and summarizes the centers in the state grouped by open status in a rollover div that shows when the mouse hovers on the link.
Grouped Newspaper Columns
I'll pass along one more example of the use of the "group" attribute that I find particularly useful (Figure 1). There are times that I like to display query results in newspaper-like columns (Table 4).
Because this grouping of the data all happens on the output side, we
can operate the logic that determines how a column will be distributed
at whichever levels of the nested <cfoutputs> that helps us make
an attractive display. In the case of listing the states and cities
with biocenters in them, I wanted the cities to stay grouped with their
states. First I set up the query "GetSoonAndOpenCenters" with the ORDER
BY state_full, city clause, a sub-query that counts the distinct
instances of state_full, and output it as shown in Listing 2.
Note that rather than use the query's rowcount as the trigger for jumping to a new column with the <td> tag, we set up a incrementer based on the "state_full" count and put the evaluation trigger for the column change at the end of each iteration of that outer <cfoutput> group. The result is a reasonably evenly distributed three-column display that keeps the cities grouped in their state.
In all of these examples, the utility of the "group" attribute rests with the fact that it resides on the output side of our data handling, giving us multiple ways of distributing and displaying the results of a given query. This includes adding styling, conditional branches in the various nested output levels, and the association of our choice of styling with each sublevel of the output. Sometimes it reminds me of my dear mom, who used to stress to me in my school years that getting in with the right group was the key to success!.
Published April 17, 2006 Reads 13,233
Copyright © 2006 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By James Edmunds
James Edmunds is a freelance Internet developer and arts administration consultant living in New Iberia, Louisiana. After a career in journalism that included writing for national publications such as Newsweek and serving as editor for an alternative weekly newspaper he founded in southern Louisiana, James began to pursue a second career working with arts groups. Though he had no technology background, his interest in harnessing the power of the Internet to serve the interests of the arts led him into Internet development, an arena in which he has now gone beyond the arts to serve a general business clientele.
![]() |
SYS-CON Brasil News Desk 04/17/06 01:33:05 PM EDT | |||
In a previous article for ColdFusion Developers Journal I described a ColdFusion component (CFC) that I wrote to report on what search terms visitors used on a site's search facility when visiting the Web sites I managed (February 11, 2005 - http://cfdj.sys-con.com/read/48234.htm). |
||||
- Adobe’s Aiming ColdFusion at Multiple Clouds
- Cloud Computing Journal: Adobe to Deliver ColdFusion in the Cloud
- Adobe May Cooperate with Apple to Transplant Flash Player to iPhone
- Adobe Flex Developer Earns $100K in New York City
- Adobe LiveCycle Enterprise Suite 2 for Cloud Computing
- Adobe Betas Target RIAs and Cloud Computing
- Adobe Cans Another 9% of its Workforce
- Moyea DVD4Web Converter V2.0 Converts DVD to FLV Fast and Synchronously with Watermarks
- Adobe Fiddles with its Web Apps
- Adobe & Salesforce Cut Cloud Deal
- Hosting.com Launches ColdFusion 9 in the Cloud
- The Real Time Infrastructure Ultimatum
- Adobe’s Aiming ColdFusion at Multiple Clouds
- Eval JavaScript in a Global Context
- Fig Leaf Software to Exhibit at Government IT Conference & Expo
- Cloud Computing Journal: Adobe to Deliver ColdFusion in the Cloud
- Is Microsoft as Free as Open Source?
- Adobe Reader Sued
- The Planet Named “Bronze Sponsor” of Cloud Computing Expo
- Microsoft Expression Web Has Got Game
- Adobe May Cooperate with Apple to Transplant Flash Player to iPhone
- Adobe Flex Developer Earns $100K in New York City
- Bruce Chizen Joins Voyager Capital as Venture Partner
- My Top Seven Wishes From Adobe MAX 2009
- The Next Programming Models, RIAs and Composite Applications
- Where Are RIA Technologies Headed in 2008?
- Constructing an Application with Flash Forms from the Ground Up
- AJAX World RIA Conference & Expo Kicks Off in New York City
- CFEclipse: The Developer's IDE, Eclipse For ColdFusion
- Personal Branding Checklist
- Adobe Flex 2: Advanced DataGrid
- Has the Technology Bounceback Begun?
- Building a Zip Code Proximity Search with ColdFusion
- i-Technology Viewpoint: We Need Not More Frameworks, But Better Programmers
- The Asynchronous CFML Gateway
- Web Services Using ColdFusion and Apache CXF



























