# Creating an Update Form

An update form is similar to an insert form, but there are two key differences:

- An update form contains a reference to the primary key of the record that is being updated.

  A primary key is a field or combination of fields in a database table that uniquely identifies each record in the table. For example, in a table of employee names and addresses, only the Employee_ID would be unique to each record.

- Because the purpose of an update form is to update existing data, the update form is usually populated with existing record data. The easiest way to designate the primary key in an update form is to include a hidden input field with the value of the primary key for the record you want to update. The hidden field indicates to ColdFusion which record to update.

| To create an update form:

1. Create a new page in Studio.
2. Edit the page so that it appears as follows:

       <CFQUERY NAME="GetRecordtoUpdate"
           DATASOURCE="CompanyInfo">
           SELECT *
               FROM Employees
               WHERE Employee_ID = #URL.Employee_ID#
       </CFQUERY>

       <HTML>
       <HEAD>
           <TITLE>Update Form</TITLE>
       </HEAD>
       <BODY>

       <CFOUTPUT QUERY="GetRecordtoUpdate">
       <FORM ACTION="UpdatePage.cfm" METHOD="Post">
       <INPUT TYPE="Hidden" NAME="Employee_ID"
           VALUE="#Employee_ID#"><BR>
           First Name:
           <INPUT TYPE="text" NAME="FirstName" VALUE="#FirstName#"><BR>
           Last Name:
           <INPUT TYPE="text" NAME="LastName" VALUE="#LastName#"><BR>
           Department Number:
           <INPUT TYPE="text" NAME="Department_ID"
       VALUE="#Department_ID#"><BR>
           Start Date:
           <INPUT TYPE="text" NAME="StartDate" VALUE="#StartDate#"><BR>
           Salary:
           <INPUT TYPE="text" NAME="Salary" VALUE="#Salary#"><BR>
           Contractor:
           <INPUT TYPE="Submit" VALUE="Update Information">
       </FORM>
       </CFOUTPUT>

       </BODY>
       </HTML>

3. Save the page. as `updatedorm.cfm`.
4. View `updateform.cfm` in a browser.

### Code Review

Code | Description
--- | ---
    <CFQUERY NAME="GetRecordtoUpdate"
        DATASOURCE="CompanyInfo">
        SELECT *
            FROM Employees
            WHERE Employee_ID = #URL.Employee_ID#
    </CFQUERY>
| Query the CompanyInfo datasource and return the records in which the employee ID matches what was entered in the URL.
    <CFOUTPUT QUERY="GetRecordtoUpdate">
| Display the results of the GetRecordtoUpdate query.
    <FORM ACTION="EmployeeUpdate.cfm" METHOD="Post">
| Create a form whose variables will be process on the EmployeeUpdate.cfm action page.
    <INPUT TYPE="Hidden" NAME="Employee_ID"
        VALUE="#Employee_ID#"><BR>
| Use a hidden input field to pass the employee ID to the action page.
    First Name: <INPUT TYPE="text" NAME="FirstName"
    VALUE="#FirstName#"><BR>
    Last Name: <INPUT TYPE="text" NAME="LastName"
    VALUE="#LastName#"><BR>
    Department Number: <INPUT TYPE="text"
    NAME="Department_ID" VALUE="#Department_ID#"><BR>
    Start Date: <INPUT TYPE="text" NAME="StartDate"
    VALUE="#StartDate#"><BR>
    Salary: <INPUT TYPE="text" NAME="Salary"
    VALUE="#Salary#"><BR>
    Contractor: <INPUT TYPE="checkbox" name="Contract"
    value="Yes" checked>Yes<BR><BR>

        <INPUT TYPE="Submit" VALUE="Update Information">
    </FORM>
    </CFOUTPUT>
| Populate the fields of the update form.