We help IT Professionals succeed at work.

We've partnered with Certified Experts, Carl Webster and Richard Faulkner, to bring you two Citrix podcasts. Learn about 2020 trends and get answers to your biggest Citrix questions!Listen Now

x

coldfusion Form

Medium Priority
193 Views
Last Modified: 2013-12-24

 I have read only access to this database(on a different server) that I am pulling data from via DATASOURCE customer..  I get all the custid in the dropdown on the form but it does not populate customername, etc when custid changes.  

I get the output though when I just do <cfoutput> #customerlist.customerID#,#customerlist.customerName#</cfoutput> etc in the code
-----------
however when I do the samething from a local database everything works fine..any ideas?

-------code below

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<cfset DATASOURCE="Customer">
<CFQUERY name="Customerlist" datasource="#DATASOURCE#">
Select * from CustomerTable
</CFQUERY>

     <title>Untitled</title>
<script language="JavaScript" type="text/javascript">
function listItem(custID, custName, custAge, custLoc, custAdd, custCity, custZip, custCntry){
          this.custID=custID;
          this.custName=custName;
          this.custAge=custAge;
          this.custLoc=custLoc;
          this.custAdd=custAdd;
          this.custCity=custCity;
          this.custZip=custZip;
          this.custCntry=custCntry;
     }


function populateCustInfo(customerID){    
     
for(x=0; x < arrItems.length; x++){
               if(arrItems[x].custID==customerID){
                  document.getElementById('txtCustomerName').value=arrItems[x].custName;
                    document.getElementById('txtCustomerAge').value=arrItems[x].custAge;
                    document.getElementById('txtCustomerLocation').value=arrItems[x].custLoc;
                    document.getElementById('txtCustomerAddress').value=arrItems[x].custAdd;
                    document.getElementById('txtCustomerCity').value=arrItems[x].custCity;
                    document.getElementById('txtCustomerZip').value=arrItems[x].custZip;
                    document.getElementById('txtCustomerCountry').value=arrItems[x].custCntry;
                    }
}
}
var arrItems = new Array();
arrItems[arrItems.length]= new listItem('0','','','','','','','');
<cfoutput query="customerList">
arrItems[arrItems.length]= new listItem
('#customerID#','#customerName#','#customerAge#','#customerLocation#','#customerAddress#','#customerCity#','#customerZipcode#','#customerCountry#');
</cfoutput>

 
</script>
</head>

<body>
<form name="myForm" method ="post" action="customerAction.cfm">
<select name="selCustId" onchange="populateCustInfo(this.value)">
<option value="0">Select</option>
<cfoutput query="customerList">
<option value="#customerId#">#customerName#</option></cfoutput>
</select>
custid
<p>
  <input type="text" value="" name="txtCustomerName">
  custname
</p>
<p>&nbsp;</p>
<p>  <input type="text" value="" name="txtCustomerAge">
  custage
</p>
<p>    <input type="text" value="" name="txtCustomerLocation">
  custloc
</p>
<p>  <input type="text" value="" name="txtCustomerAddress">
  custaddr
</p>
<p>  <input type="text" value="" name="txtCustomerCity">
  custaddress
</p>
<p>  <input type="text" value="" name="txtCustomerZip">
  custcity
</p>
<p>  <input type="text" value="" name="txtCustomerCountry">custcount </p>
<p>&nbsp;</p>
<input type="submit" value="submit" name="submit">
<input type="reset" value="reset" name="reset">

</form>
</body>
</html>
Comment
Watch Question

CERTIFIED EXPERT
Commented:
"I get all the custid in the dropdown on the form but it does not populate customername, etc when custid changes.  "

unless you use ajax (or load all of the customer info for every customerid) you can't do this without a trip to the server and back






Not the solution you were looking for? Getting a personalized solution is easy.

Ask the Experts

Author

Commented:
I am not sure how to do this.  can you pls. get me started?
CERTIFIED EXPERT

Commented:
one of the easiest implementations of AJAX is called JSMX found here.. http://www.lalabird.com/

there sample code you can play with...

If that's more than you want to do you can simply do something like this:
have the customer ID select box the only part visible on the page until the customerid is selected and then post the form back to the same page which then shows the full customer detail...


<CFQUERY name="GETCustomerID" datasource="#DATASOURCE#">
Select CustomerID, CustName from CustomerTable
</CFQUERY>

<cfparam name="form.customerid" default ="">
<!--- set this so the page does throw an error when loads with no customerid --->
<form name="myForm" method ="post" action="THISPAGEName.cfm"> <!--- points the post back to this same page --->
<select Name="CustomerID">
<option value="">-- Select Customer --</option>
<cfloop query="CustomerList">
<option value="#GETcustomerID.customerID#">#GETcustomerID.custName#</option>
</cfloop>

<input type="submit" Value="Lookup Customer">
</form>

<cfif form.CustomerID NEQ ""><!--- then we've selected a customer so show it's info --->

<CFQUERY name="CustomerInfo" datasource="#DATASOURCE#">
Select * from CustomerTable where CustomerID = #form.customerID#
</CFQUERY>


Info for #CustomerInfo.customerID#<br>

<p>
  <input type="text" value="#CustomerInfo.custname#" name="txtCustomerName">

</p>
<p>&nbsp;</p>
<p>  <input type="text" value="#CustomerInfo.custage#" name="txtCustomerAge">

</p>
<p>    <input type="text" value="#CustomerInfo.custloc#" name="txtCustomerLocation">
 
</p>
<p>  <input type="text" value=" #CustomerInfo.custaddr#" name="txtCustomerAddress">

</p>
<p>  <input type="text" value="#CustomerInfo.custcity" name="txtCustomerCity">
 
</p>
<p>  <input type="text" value="#CustomerInfo.custzip" name="txtCustomerZip">

</p>
<p>  <input type="text" value="#CustomerInfo.custcountry#" name="txtCustomerCountry">custcount </p>
<p>&nbsp;</p>
<input type="submit" value="submit" name="submit">
<input type="reset" value="reset" name="reset">

</form>
</cfif>






Access more of Experts Exchange with a free account
Thanks for using Experts Exchange.

Create a free account to continue.

Limited access with a free account allows you to:

  • View three pieces of content (articles, solutions, posts, and videos)
  • Ask the experts questions (counted toward content limit)
  • Customize your dashboard and profile

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.