Listing 1: add-client.html

<HTML>
<!-- add-client.html, an Embperl document -->
<Head><Title>Add a client</Title></Head>
<Body>
<!-- Perform some initialization -->
[! use Apache::DBI;
   $dbh = DBI->connect("DBI:mysql:test:localhost");
   @colnames = qw(id name address1 address2 city
      state country zip contact_name
      contact_phone1 contact_phone2
      contact_fax initial_contact_date
      dollars_per_hour);
   $colnames = join ', ', @colnames;
!]
[$ if scalar keys %fdat > 0 $]
    <!-- Make sure we avoid setting the ID -->
    [- @insert_colnames = grep !/^id$/, @colnames; -]
    [- $insert_colnames = join ', ',
    @insert_colnames; -]
    <!-- Create the query -->
    [- $values = join '", "', map {$fdat{$_ .
    "-0"}} @insert_colnames -]
    [+ $sql = "INSERT INTO Clients
    ($insert_colnames)
    VALUES (\"$values\")"; +]
    <!-- Send the SQL -->
    [- $sth = $dbh->prepare($sql); -]
    [- $sth->execute; -]
    <!-- If error, print a message -->
    <P><B>[+ $sth->errstr +]</B></P>
[$ endif $]
<!-- Here is the manual HTML part of the file, for entering new clients -->
<H1>Add/Modify Client Information</H1>
<Form method="POST" action="/embperl/add-client.html">
<Table border="2">
<!-- Create table for entering a new client -->
[$ foreach $column @colnames $]
[$ if $column ne "id" $]
    <TR> <TD>
        [+ $column +]
    </TD><TD>
        <input type="text" name="[+ $column +]-0"
                  size="40" maxlength="40" >
    </TD> </TR>
[$ endif $]
[$ endforeach $]
</Table>
<P><input type="submit" value="Add/update values">
   <input type="reset" value="Revert values"></P>
</Form> </Body> </HTML>