cfif

Description

Creates simple and compound conditional statements in CFML. Tests an expression, variable, function return value, or string. Used, optionally, with the cfelse and cfelseif tags.

Syntax

<cfif expression> 
    HTML and CFML tags    <cfelseif expression> 
    HTML and CFML tags 
    <cfelse> 
    HTML and CFML tags 
</cfif>

Usage

If the value of the expression in the cfif tag is true, ColdFusion processes all the code that follows, up to any cfelseif or cfelse tag, and then skips to the cfif end tag. Otherwise, ColdFusion does not process the code that immediately follows the cfif tag, and continues processing at any cfelseif or cfelse tag, or with the code that follows the cfif end tag.

When testing the return value of a function that returns a Boolean, you do not have to define the True condition explicitly. This example uses the IsArray function:

<cfif IsArray(myarray)>

If successful, IsArray evaluates to yes, the string equivalent of the Boolean True. This is preferred over explicitly defining the True condition this way:

<cfif IsArray(myarray) IS True>

This tag requires an end tag.

Example

In this example, variables are shown within number signs. This is not required.

<!--- This example shows the interaction of cfif, cfelse, and cfelseif. ---> 
<!----- First, perform a query to get some data. ----->  
<cfquery name="getCenters" datasource="cfdocexamples">  
    SELECT Center_ID, Name, Address1, Address2, City, State, Country, PostalCode,  
        Phone, Contact 
    FROM Centers  
    ORDER by City, State, Name  
</cfquery>  
<p>CFIF gives us the ability to perform conditional logic based on a condition  
    or set of conditions.</p>  
<p>For example, we can output the list of Centers from the snippets datasource  
    by group and only display them <b>IF</b> City = San Diego.</p>  
<hr>  
<!---- Use CFIF to test a condition when outputting a query. ----->  
<p>The following centers are in San Diego:</p>  
<cfoutput query="getCenters">  
        <cfif Trim(City) is "San Diego">  
            <br><b>Name/Address:</b>#Name#, #Address1#, #City#, #State# 
            <br><b>Contact:</b> #Contact# 
            <br>  
        </cfif>  
</cfoutput>  
<hr>  
<p>If we would like more than one condition to be the case, we can ask for a list of the 
centers in San Diego <b>OR</b> Santa Ana. If the center does not follow this condition, we 
can use CFELSE to show only the names and cities of the other centers.</p> 
<p>Notice how a nested CFIF is used to specify the location of the  
    featured site (Santa Ana or San Diego).</p> 
<!----- Use CFIF to specify a conditional choice for multiple options;  
    also note the nested CFIF. --->  
<p>Complete information is shown for centers in San Diego or Santa Ana.  
    All other centers are listed in italic:</p>  
<cfoutput query="getCenters">  
    <cfif Trim(City) is "San Diego" OR Trim(City) is "Santa Ana">  
        <h4>Featured Center in  
            <cfif Trim(City) is "San Diego">  
                San Diego  
            <cfelse>  
                Santa Ana  
            </cfif>  
            </h4> <b>Name/Address:</b>#Name#, #Address1#, #City#, #State# 
            <br><b>Contact:</b> #Contact#<br>  
    <cfelse>  
        <br><i>#Name#, #City#</i>  
    </cfif>  
</cfoutput>  
<hr>  
<p>Finally, we can use CFELSEIF to cycle through a number of conditions and  
produce varying output. Note that you can use CFCASE and CFSWITCH for a more 
elegant representation of this behavior.  
<!--- Use CFIF in conjunction with CFELSEIF to specify more than one  
    branch in a conditional situation. --->  
<cfoutput query="getCenters">  
    <cfif Trim(City) is "San Diego" OR Trim(City) is "Santa Ana">  
        <br><i>#Name#, #City#</i> (this one is in  
                <cfif Trim(City) is "San Diego">San Diego 
                <cfelse>Santa Ana 
                </cfif>)  
            <cfelseif Trim(City) is "San Francisco">  
                <br><i>#Name#, #City#</i> (this one is in San Francisco)  
            <cfelseif Trim(City) is "Suisun">  
                <br><i>#Name#, #City#</i> (this one is in Suisun)  
            <cfelse> <br><i>#Name#</i>  
                <b>Not in a city we track</b>  
            </cfif>  
</cfoutput>