How to get dynamic query results from an array/structure
I have an edit page that is set up to display phone number fields from the user stored in our database. The properties for the phone number fields are set by a structure of arrays. My problem is that when a user has more than 1 phone number in my database, my structures correctly show this on the form by displaying 2 phone numbers. The problem I am having is that when it shows multiple phone numebrs, it always shows the first result and just repeats it as opposed to dropping the 2nd or 3rd phone number in their respective fields.
array and structure code below:
<!--- Mobile --->
<cfset mobile = StructNew()>
<cfset mobile.dynamic = false>
<cfset mobile.dynamicLabel = '+ Add'>
<cfset mobile.fields = ArrayNew(1)>
<cfif #checkuserv.recordcount# GT '0'>
<cfset mobile.fields[1] = StructNew()>
<cfset mobile.fields[1].required = false>
<cfset mobile.fields[1].label = 'Phone Number 1'>
<cfset mobile.fields[1].displayIcon = false>
<cfset mobile.fields[1].voice = true>
<cfset mobile.fields[1].voiceChecked = true>
<cfset mobile.fields[1].toolTip = "Please choose if you would like to receive a text or voice call on this number">
</cfif>
<cfif #checkuserv.recordcount# IS '2'>
<cfset mobile.fields[2] = StructNew()>
<cfset mobile.fields[2].required = false>
<cfset mobile.fields[2].label = 'Phone Number 2'>
<cfset mobile.fields[2].displayIcon = false>
<cfset mobile.fields[2].toolTip = "Please choose if you would like to receive a text or voice call on this number">
<cfset mobile.fields[2].voice = true>
<cfset mobile.fields[2].voiceChecked = true>
</cfif>
<cfif #checkuserv.recordcount# IS '3'>
<cfset mobile.fields[3] = StructNew()>
<cfset mobile.fields[3].required = false>
<cfset mobile.fields[3].label = 'Phone Number 3'>
<cfset mobile.fields[3].displayIcon = false>
<cfset mobile.fields[3].toolTip = "Please choose if you would like to receive a text or voice call on this number">
<cfset mobile.fields[3].voice = true>
<cfset mobile.fields[3].voiceChecked = true>
</cfif>
Here is the code for my fields that call the array info:
<!--- Voice 1 --->
<cfloop index="i" from="1" to="#ArrayLen(mobile.fields)#">
<cfif i EQ 1 OR NOT mobile.dynamic OR form.mobileDisplayed GTE i>
<cfparam name="form.areacode_#i#" default="">
<cfparam name="form.prefix_#i#" default="">
<cfparam name="form.suffix_#i#" default="">
<div class="fieldBlock phoneBlock" id="phoneBlock#i#">
<label for="areacode_#i#">
<cfif mobile.fields.required><span>*</span></cfif>
<cfif mobile.fields.displayIcon><img src="/images/sm_phone.jpg" /></cfif>
#mobile.fields.label#:
</label>
<div class="inputBlock">
<input type="text" maxlength="3" onKeyUp="numTyped(this, 'prefix_#i#', 3, event)" name="areacode_#i#" id="areacode_#i#" class="areacode" value="#trim(left(checkuserv.sub_user_number, '3'))#" />
<input type="text" maxlength="3" onKeyUp="numTyped(this, 'suffix_#i#', 3, event)" name="prefix_#i#" id="prefix_#i#" class="prefix" value="#trim(mid(checkuserv.sub_user_number, "4", '3'))#" />
<input type="text" maxlength="4" name="suffix_#i#" id="suffix_#i#" class="suffix" value="#trim(mid(checkuserv.sub_user_number, "7", '4'))#" />
<cfif StructKeyExists(mobile.fields, "voice") and mobile.fields.voice>
<div class="voice" id="voice#i#">
<input type="radio" value="0" name="voice_#i#"<cfif Not StructKeyExists(mobile.fields, "voiceChecked") or Not mobile.fields.voiceChecked> checked="checked"</cfif> />
<label>Text</label>
<input type="radio" value="1" name="voice_#i#"<cfif StructKeyExists(mobile.fields, "voiceChecked") and mobile.fields.voiceChecked> checked="checked"</cfif> />
<label>Voice</label>
</div>
</cfif>
<cfif StructKeyExists(mobile.fields, "toolTip") and mobile.fields.toolTip neq "">
<div class="toolTip" id="toolTip_#i#" title="#mobile.fields.toolTip#" onClick="alert('#mobile.fields.toolTip#')">?</div>
</cfif>
</div>
<!--- This number was invalid or if geocoding failed, and they've picked a carrier to override, display the carrier override dropdown--->
<cfif ListFindNoCase(invalidMobileIndexList, i) or ( showMap and IsDefined("form.carrierOverride" & i) )>
<div id="carrierOverrideBox#i#" class="carrierOverrideBlock">
<label>Carrier:</label>
<div class="inputBlock">
<select name="carrierOverride#i#" id="carrierOverride#i#">
<option value="-1">-- Pick your carrier --</option>
<cfloop query="carriers">
<!--- 1111 is voice, 0 is NONE, don't display --->
<cfif Not ListFindNoCase("0,1111", carriers.carrier_id)>
<option value="#Trim(carriers.carrier_id)#"<cfif IsDefined("form.carrierOverride" & i) and form["carrierOverride" & i] eq Trim(carriers.carrier_id)> selected="selected"</cfif>>#Trim(carriers.carrier_title)#</option>
</cfif>
</cfloop>
</select>
<a href="http://www.inspironlogisticscontact.cfm?account_id=#account_id#&carrierOverride=1"
title="Carrier help"
onClick="window.open('http://www.inspironlogisticscontact.cfm?account_id=#account_id#&carrierOverride=1','#account_id#','width=500,height=800,scrollbars=no,screenX=100,screenY=100,top=100,left=100,resizable=1'); return false;"
>?</a>
</div>
</div>
</cfif>
<cfif mobile.dynamic AND i EQ form.mobileDisplayed AND i LT ArrayLen(mobile.fields)>
<div class="dynamicAddBlock dynamicAddMobileBlock" id="dynamicAddmobile_#i#">
<a href="javascript: submitAddField('mobile')">#mobile.dynamicLabel#</a>
</div>
</cfif>
</div>
</cfif>
</cfloop>
<cfif mobile.dynamic>
<input name="mobileDisplayed" id="mobileDisplayed" value="#form.mobileDisplayed#" type="hidden" />
</cfif>
<input name="carrierOverrideActive" id="carrierOverrideActive" value="<cfif carrierOverrideActive>1<cfelse>0</cfif>" type="hidden" />
I have been stuck on this for days, finally turning to the forum today with a few different issues. I hate trying to work within the framwork of other peoples code.
I use coldfusion 8
