Web News

Intel Signs Up Vendors for Classmate PC in India
Intel Corp. has tied with three large Indian PC vendors to assemble the Classmate PC, a PC specially designed for schools. The three vendors -- HCL Infosystems Ltd...

Intel ropes in ILFS to take computers to rural India
Intel has roped in Infrastructure Leasing and Financial Services (IL&FS) Ltd to take personal computers to rural India through community service centers (CSCs)...

Intel quad-core processors benefit Indian enterprises
Indian enterprises have begun adopting Intel's quad-core Xeon processors in their desktops and mainstream servers for making optimum use of their IT...

Intel's offer to lower operational costs
Intel Corp has launched a new processor technology to help small and medium businesses to reduce their operational costs. The company's Indian subsidiary...



Recent WebProNews Articles

Microsoft Joins Ask In Call For Privacy
Search engines have faced mounting scrutiny over their data retention and privacy practices, and Microsoft and Ask likely wish to head off potential increases in federal...

Firms Fire Over Blogs, Social Networks
If you’re reading this while at work, be careful - you may look off-topic. But it’s what you write that could really upset your employer, and a new study found that companies...

Ask Readies AskEraser Privacy Controls
Ask.com will take its research with privacy advocates at the Center for Democracy & Technology into a new product for their search engine. The AskEraser product...

Is Link Authority Dead (Dying)?
After extensive gaming, Google's algorithm (it is assumed) shifted from using the quantity of links as an indicator of source authority, to measuring the...


07.23.07


Coldfusion: AutoSuggest Example

By Raymond Camden

I've added autosuggest to ColdFusionBloggers.org and thought I'd talk a bit about how I did it (and about the problems I ran into).

First off - using autosuggest is extremely simple. All you have to do is take a standard input tag and switch it to a cfinput tag instead. Then just add the autosuggest attribute and your done. Thats it. Well, ok, you have to hook up the autusuggest to either a static list of suggestions, or to a dynamic data source.

For ColdFusionBloggers.org I decided the autusuggest would be based on previous searches. I added a logSearch() method to my entries CFC. This logged the search term and the time. I then added a method to return results based on what you type in the search box:

><cffunction name="getSearchHelp" access="remote" returnType="array" output="false">
   <cfargument name="term" type="string" required="true">

   <cfquery name="q" datasource="#variables.dsn#">
   select distinct searchterm
   from search_log
   where searchterm like <cfqueryparam cfsqltype="cf_sql_varchar" value="#left(arguments.term,255)#%">
   limit 0,10
   </cfquery>

   <cfreturn listToArray(valueList(q.searchTerm))>

</cffunction>


Learn How We Increased Conversion By 816% and Become A Certified Online Testing Professional™ Click Here

Notice I used #term#% for my search, not %#term#%. Why? Remember that autusuggest is based on what you type. If you type "R", you should see suggestions that start with R.

Then I ran into my first problem. Notice the datasource is variables.dsn. My Application.cfc file had created and initialized an instance of entries.cfc. Guess what happened when I hooked up ColdFusion directly to the CFC? Because I was accessing the CFC directly, variables.dsn wasn't set properly. I fixed it by changing to application.dsn, which worked, but I wanted a nicer solution.

The cool thing about binds in ColdFusion 8 is that you can link to CFCs, JavaScript functions, and random URLs. So my cfinput which had been using a CFC:

<cfinput name="search_query" autosuggest="cfc:components.entries.getSearchHelp
({cfautosuggestvalue})" maxResultsDisplay="10">

Was switched to this version:

<cfinput name="search_query" autosuggest="url:searchhelpproxy.cfm?term={cfautosuggestvalue}" maxResultsDisplay="10" showAutoSuggestLoadingIcon="false" size="10" />

I then added searchhelpproxy.cfm:

><cfif structKeyExists(url, "term") and len(trim(url.term))>
   <cfinvoke component="#application.entries#" method="getSearchHelp" term="#url.term#" returnVariable="result">
   <cfoutput>#serializeJSON(result)#</cfoutput><cfabort>
</cfif>


This file simply invokes the method I built but uses the Application scoped CFC instead. Notice that I have to format the result into JSON. Also note that Ben has blogged about some nice modifications made to autosuggest and cfselect bound controls.

If I have to do this again, I'll most likely create a more generic file that can handle different operations.

One last issue. I noticed that when I used the autusuggest control, it broke my layout a bit. I've pinged Adobe about this, but for now I've tried to make it work better by adding some style to my cfinput. In general I do not see a good reason why this should have any impact on layout, but maybe I did something wrong.

I've updated the code base again. You can download it on the FAQ at the site.

Comments

About the Author: Raymond Camden, ray@camdenfamily.com
http://ray.camdenfamily.com

Raymond Camden is Vice President of Technology for roundpeg, Inc. A long time ColdFusion user, Raymond has worked on numerous ColdFusion books and is the creator of many of the most popular ColdFusion community web sites. He is an Adobe Community Expert, user group manager, and the proud father of three little bundles of joy.

About DevWebPro India
DevWebPro India is for professional developers ... those who build and manage applications and sophisticated websites. DevWebPro India delivers via news and expert advice New Strategies In Development.

DevWebPro India is brought to you by:

SecurityConfig.com NetworkingFiles.com
NetworkNewz.com WebProASP.com
DatabaseProNews.com SQLProNews.com
ITcertificationNews.com SysAdminNews.com
LinuxProNews.com WirelessProNews.com
CProgrammingTrends.com NetworkNewz.com


-- DevWebPro India is an iEntry, Inc. publication --
iEntry, Inc. 2549 Richmond Rd. Lexington KY, 40509
2007 iEntry, Inc.  All Rights Reserved  Privacy Policy  Legal

archives | advertising info | news headlines | free newsletters | comments/feedback | submit article


New Strategies In Development DevWebPro India News Archives About Us Feedback DevWebPro India Home Page About Article Archive News Downloads WebProWorld Forums Jayde iEntry Advertise Contact