I am currently trying to find a way to omit any results from a search where the field is blank. The simple method would be to use a <cfif len(example) neq 0>#example#</cfif>
but this then means my query is pulling out results unnecessarily.
<cfquery datasource="#datasource#" name="search">
<cfif URL.for eq "names">
Select artist_id, artist_name
From artists
Where approved = 1
And active = 1
<cfif StructKeyExists("URL.search")>
<cfif URL.find eq "contains">
And name LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#URL.search#%">
<cfelseif URL.find eq "matches">
And name = <cfqueryparam cfsqltype="cf_sql_varchar" value="#URL.search#">
</cfif>
</cfif>
Order By name Asc
<cfelseif URL.for eq "locations">
<cfif URL.sort eq "town-az" or URL.sort eq "town-za">
Select Distinct town
<cfelseif URL.sort eq "county-az" or URL.sort eq "county-za">
Select Distinct county
<cfelseif URL.sort eq "country-az" or URL.sort eq "country-za">
Select Distinct country
</cfif>
From artists
Where approved = 1
And active = 1
<cfif StructKeyExists("URL.search")>
<cfif URL.find eq "contains">
<cfif URL.sort eq "town-az">
And town LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#URL.search#%">
Order By town Asc
<cfelseif URL.sort eq "town-za">
And town LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#URL.search#%">
Order By town Desc
<cfelseif URL.sort eq "county-az">
And county IS NOT NULL
And county LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#URL.search#%">
Order By county Asc
<cfelseif URL.sort eq "county-za">
And county IS NOT NULL
And county LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#URL.search#%">
Order By county Desc
<cfelseif URL.sort eq "country-az">
And country LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#URL.search#%">
Order By country Asc
<cfelseif URL.sort eq "country-za">
And country LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#URL.search#%">
Order By country Desc
</cfif>
<cfelseif URL.find eq "matches">
<cfif URL.sort eq "town-az">
And town = <cfqueryparam cfsqltype="cf_sql_varchar" value="#URL.search#">
Order By town Asc
<cfelseif URL.sort eq "town-za">
And town = <cfqueryparam cfsqltype="cf_sql_varchar" value="#URL.search#">
Order By town Desc
<cfelseif URL.sort eq "county-az">
And county IS NOT NULL
And county = <cfqueryparam cfsqltype="cf_sql_varchar" value="#URL.search#">
Order By county Asc
<cfelseif URL.sort eq "county-za">
And county IS NOT NULL
And county = <cfqueryparam cfsqltype="cf_sql_varchar" value="#URL.search#">
Order By county Desc
<cfelseif URL.sort eq "country-az">
And country = <cfqueryparam cfsqltype="cf_sql_varchar" value="#URL.search#">
Order By country Asc
<cfelseif URL.sort eq "country-za">
And country = <cfqueryparam cfsqltype="cf_sql_varchar" value="#URL.search#">
Order By country Desc
</cfif>
</cfif>
</cfif>
</cfif>
</cfquery>
The town
and country
fields are mandatory fields upon signing up, so these fields are no issue, however I have not made the county/state field a mandatory field, so values will be NULL if a user does not enter a county or state. As stated above, I could simply use the len()
method to only display results that have characters, but this means my query is pulling NULL results which it does not need to pull out. I have already included AND county IS NOT NULL
but this seems to make no difference at all. Would anybody be able to point me in the right direction? Thanks.