Gossamer Forum
Home : Products : DBMan : Installation :

Pls. ignore!!!!

Quote Reply
Pls. ignore!!!!
My database was run well before. I wanted to include file uploads for photos. I followed the instruction in fileupload2 and ran into some problems. I think I made some kind of mistake in the html.pl file. Not sure. I tried adding a record--not filling out all fields and never received the usual Dbman error for skipping fields. Instead I received DBman Internal Error. Could you please Help.
I made changes with db.cgi, default.cfg, html.pl

Html.pl changes:

# User-friendly html.pl
#
# Save this file as -- html.pl -- and use it instead of the script by the same name
# that comes with the DBMan archive. Be sure to read the notes that accompany the
# script which follow the copyright information.
#
# ----------------------
# DBMan
# ----------------------
# Database Administrator
#
# File: html.pl
# Description: This file contains all the HTML that the program generates.
# Author: Alex Krohn
# Email: alex@gossamer-threads.com
# Web: http://www.gossamer-threads.com/
# Version: 2.04
#
# COPYRIGHT NOTICE:
#
# Copyright 1997 Gossamer Threads Inc. All Rights Reserved.
#
# This program is being distributed as shareware. It may be used and
# modified free of charge for personal, academic, government or non-profit
# use, so long as this copyright notice and the header above remain intact.
# Any commercial use should be registered. Please also send me an email,
# and let me know where you are using this script. By using this program
# you agree to indemnify Gossamer Threads Inc. from any liability.

#
# Selling the code for this program without prior written consent is
# expressly forbidden. Obtain permission before redistributing this
# program over the Internet or in any other medium. In all cases
# copyright and header must remain intact.
#
# Please check the README file for full details on registration.
# =====================================================================
#
#
# Notes on the "user-friendly html.pl":
#
# Look closely at the sections marked "HTML Globals," and "Page Layout" to
# set up your database to appear the way you would like it to.
# You can also edit the "Record Layout" section to create your own forms and
# page displays.
# In each of the rest of the subroutines, you will have several variables you can set
# to your liking:
# $page_title
# $submit_button -- only on pages with forms -- the text of the submit button
# $reset_button -- only on pages with forms -- the text of the reset button
# Also, the form definitions have been moved a little so it is easier to know what you
# can and cannot edit. To clarify things even more, each subroutine has the area where
# you can enter any text you want to for that page. Enter or edit your own text between
# # <-- Start page text -->
# print qq|
# and
# |;
# # <-- End page text -->
#
# If you have more than one DBMan database on your site and you would like to have all
# the pages coordinate, you can cut the "HTML Globals" and "Page Layout" sections from
# each of your html.pl scripts and place the sections in a separate file. Name the file
# format.pl
# and upload it into the same directory as the other DBMan scripts. Set the permissions
# to 644 [-rw-r--r--]. Uncomment (that is, delete the # at the beginning of the line)
# the next line in each of your html.pl scripts.
# require $db_script_path . "/format.pl";

##########################################################
## HTML Globals ##
##########################################################
# Put any globals you like in here for your html pages.
$html_title = 'Onlinegreet.com';

# Add your email address. Be sure to leave the \ before the @
$admin_email = 'isadore@onlinegreet.com';

# Set your font preferences below

# font face for pages
$face = "font face=Verdana, Arial, Helvetica";
# size of normal text
$font = "$face size=2";
# an alternate color font
$font_color = "$font color=#003399";
# size of title text
$font_title = "$face size=4";
# color of error messages
$error_color = "font color=red";
# large font for error messages
$font_error = "$face size=4 color=red";

##########################################################
## Page Layout ##
##########################################################

sub html_page_top {
# --------------------------------------------------------
# This is where you define what all of your web pages will look like.
# You can change the background color, add a background image (be sure to use the
# complete URL to your background image and not a relative URL), define the color of
# normal text and links -- all just as you would do with a regular html page.
# Be sure to leave in the first line -- &html_print_headers -- and to put your html
# formatting between "print qq|" and "|;"

&html_print_headers;

print qq|
<html><head><title>$html_title: $page_title</title></head>
<body bgcolor="#FFFFFF">
<table width="63%" border="0">
<tr>
<td width="44%">
<h1><img src="http://www.activitypost.com/images/heading.gif" width="270" height="36"></h1>
</td>
<td width="10%"><img src="http://www.activitypost.com/thumbnails/baby.jpg" width="72" height="72"></td>
<td width="9%"><img src="http://www.activitypost.com/thumbnails/birthday.jpg" width="72" height="72"></td>
<td width="9%"> <img src="http://www.activitypost.com/thumbnails/together.jpg" width="72" height="72"></td>
<td width="9%"><img src="http://www.activitypost.com/thumbnails/family.jpg" width="72" height="72"></td>
<td width="9%"><img src="http://www.activitypost.com/thumbnails/couple.jpg" width="72" height="72"></td>
<td width="10%"><img src="http://www.activitypost.com/thumbnails/wed.jpg" width="72" height="72"></td>
</tr>
</table>
<p> </p>
<table borders=0 align="center" valign="top">
<tr><td align="center"><font size="2">$html_title: $page_title</font></td></tr>
<tr><td align="center">$page_title

|;

}

sub html_page_bottom {
# --------------------------------------------------------
# Here is where you finish off your web pages. If you have not paid for the script,
# be sure to leave the Gossamer Threads logo in place.
# The second "print qq" statement is where you end off any tables or other formatting
# that you started in the "page_top" subroutines. It makes it easier to see what
# to do if you maintain the indenting of lines.

print qq|
<table border=0 width=100%>
<tr>
<td align=left><$font>Copyright 1998
<A HREF="http://www.gossamer-threads.com">Gossamer Threads Inc.</A></font></td>
<td align=right>
<a href="http://www.gossamer-threads.com/scripts/dbman/">
<img src="http://www.gossamer-threads.com/images/powered.gif"
border=0 width=100 height=31 alt="Database Powered by Gossamer Threads Inc."></a>
</td></tr>
</table>
|;

print qq|
<table><tr><td></td></tr></table>
</td></tr>
</table>
<p> </p><p> </p>
</body>
</html>
|;
}

sub html_print_headers {
# --------------------------------------------------------
# Print out the headers if they haven't already been printed.

if (!$html_headers_printed) {
print "Content-type: text/html\n\n";
$html_headers_printed = 1;
}
}

sub html_footer {
# --------------------------------------------------------
# Print the menu.
#
# We only print options that the user have permissions for.
#

print qq!<P align=center><$font>!;
print qq!| <A HREF="$db_script_link_url">Home</A> !;
print qq!| <A HREF="$db_script_link_url&add_form=1">Add</A> ! if ($per_add);
print qq!| <A HREF="$db_script_link_url&view_search=1">View</A> ! if ($per_view);
print qq!| <A HREF="$db_script_link_url&delete_search=1">Delete</A> ! if ($per_del);
print qq!| <A HREF="$db_script_link_url&modify_search=1">Modify</A> ! if ($per_mod);
print qq!| <A HREF="$db_script_link_url&view_records=1&$db_key=*">List All</A> ! if ($per_view);
print qq!| <A HREF="$db_script_link_url&admin_display=1">Admin</A> ! if ($per_admin);
print qq!| <A HREF="$db_script_link_url&logoff=1">Log Off</A> !;
print qq!|</font></p>!;

}

sub html_search_options {
# --------------------------------------------------------
# Search options to be displayed at the bottom of search forms.
#
print qq~
<P>
<$font><STRONG>Search Options:</STRONG>

<INPUT TYPE="CHECKBOX" NAME="ma"> Match Any
<INPUT TYPE="CHECKBOX" NAME="cs"> Match Case
<INPUT TYPE="CHECKBOX" NAME="ww"> Whole Words
<INPUT TYPE="CHECKBOX" NAME="re"> Reg. Expression<BR>
<INPUT TYPE="TEXT" NAME="keyword" SIZE=15 MAXLENGTH=255> Keyword Search <FONT SIZE=-1> (will match against all fields)</FONT><BR>
<INPUT TYPE="TEXT" NAME="mh" VALUE="$db_max_hits" SIZE=3 MAXLENGTH=3> Max. Returned Hits<BR>
Sort By:
<SELECT NAME="sb">
<OPTION>---
~; for (my $i =0; $i <= $#db_cols; $i++) { print qq~<OPTION VALUE="$i">$db_cols[$i]</OPTION>\n~ if ($db_form_len{$db_cols[$i]} >= 0); } print qq~
</SELECT>
Sort Order:
<SELECT NAME="so">
<OPTION VALUE="ascend">Ascending
<OPTION VALUE="descend">Descending
</SELECT>


<strong>Search Tips:</strong>

    - use '*' to match everything in a field)<BR>
    - put a '>' or '<' at the beginning to to do range searches.<BR></font>
~;
}

##########################################################
## Record Layout ##
##########################################################

sub html_record_form {
# --------------------------------------------------------
# The form fields that will be displayed each time a record is
# edited (including searching). You don't want to put the
# <FORM> and </FORM tags, merely the <INPUT> tags for each field.
# The values to be displayed are in %rec and should be incorporated
# into your form. You can use &build_select_field, &build_checkbox_field
# and &build_radio_field to generate the respective input boxes. Text and
# Textarea inputs can be inserted as is. If you turn on form auto
# generation, the program will build the forms for you (all though they may
# not be as nice). See the README for more info.

my (%rec) = @_;
my $font = $font_color;
($db_auto_generate and print &build_html_record_form(%rec) and return);

print qq|
<TABLE WIDTH="450" CELLPADDING=0 CELLSPACING=0 BORDER=1 BGCOLOR="#FFFFCC">|;
if($per_admin) {
print qq|
<TR><TD ALIGN="Right" VALIGN="TOP"><$font>ID:</FONT></TD><TD VALIGN="TOP"> <INPUT TYPE="TEXT" NAME="ID" VALUE="$rec{'ID'}" SIZE="3" MAXLENGTH="3"></TD></TR>|;
}
else {
print qq|<input type="hidden" name="ID" value="$rec{'ID'}">|;
}
print qq|
<TR><TD ALIGN="Right" VALIGN="TOP"><$font>Name:</FONT></TD><TD VALIGN="TOP"> <INPUT TYPE="TEXT" NAME="Name" VALUE="$rec{'Name'}" SIZE="40" MAXLENGTH="255"></TD></TR>
<TR><TD ALIGN="Right" VALIGN="TOP"><$font>Date:</FONT></TD><TD VALIGN="TOP"> <INPUT TYPE="TEXT" NAME="Date" VALUE="$rec{'Date'}" SIZE="12" MAXLENGTH="12"></TD></TR>
<TR><TD ALIGN="Right" VALIGN="TOP"><$font>Category:</FONT></TD><TD VALIGN="TOP"> |; print &build_select_field ("Category", "$rec{'Category'}"); print qq|</TD></TR>
<TR><TD ALIGN="Right" VALIGN="TOP"><$font>Message:</FONT></TD><TD VALIGN="TOP"> <TEXTAREA NAME="Message" ROWS="4" COLS="40" WRAP="VIRTUAL" MAXLENGTH="255">$rec{'Message'}</TEXTAREA></TD></TR>
|;
if ($form_upload) {
print qq|
<TR><TD>Browse Picture:</TD>
<TD><INPUT TYPE="FILE" NAME="Filename" SIZE="50"></TD></TR>|;
}
print qq|

</TABLE>
|;
}

sub html_record {
# --------------------------------------------------------
# How a record will be displayed. This is used primarily in
# returning search results and how it is formatted. The record to
# be displayed will be in the %rec hash.

my (%rec) = @_; # Load any defaults to put in the VALUE field.
$rec{$db_key} =~ s/<.?B>//g;
### Wherever you want your graphic to print out, use the following:

|; # to close off a previous print qq| statement
opendir (GRAPHIC, "$SAVE_DIRECTORY") or &cgierr("unable to open directory in delete records: $SAVE_DIRECTORY. Reason: $!");
@files = readdir(GRAPHIC);
closedir (GRAPHIC);
$file_test = $rec{$db_key};
foreach $file (@files) {
if ($file =~ /^$file_test\./) {
print qq|<img src= "$SAVE_DIRECTORY_URL/$file">|;
$graphic_found=1;
}
}
print qq|
|;
unless ($graphic_found) {
print qq|<img src="http://www.activitypost.com/images/graphic.gif">|;
}
print qq|
($db_auto_generate and print &build_html_record(%rec) and return);

print qq|
<TABLE WIDTH="450" CELLPADDING=0 CELLSPACING=0 BORDER=1 BGCOLOR="#FFFFCC">|;
if($per_admin) {
print qq|
<TR><TD ALIGN="Right" VALIGN="TOP"><$font>ID:</FONT></TD><TD VALIGN="TOP">  $rec{'ID'}</TD></TR>|;
}
print qq|
<TR><TD ALIGN="Right" VALIGN="TOP"><$font>Name:</FONT></TD><TD VALIGN="TOP"> $rec{'Name'}</TD></TR>
<TR><TD ALIGN="Right" VALIGN="TOP"><$font>Date:</FONT></TD><TD VALIGN="TOP"> $rec{'Date'}</TD></TR>
<TR><TD ALIGN="Right" VALIGN="TOP"><$font>Category:</FONT></TD><TD VALIGN="TOP"> $rec{'Category'}</TD></TR>
<TR><TD ALIGN="Right" VALIGN="TOP"><$font>Message:</FONT></TD><TD VALIGN="TOP"> $rec{'Message'}</TD></TR>
</TABLE>
|;
}

##########################################################
## Home Page ##
##########################################################

sub html_home {
# --------------------------------------------------------
# The database manager home page.

$page_title = "Main Menu";
&html_page_top;

# < -- Start page text -- >
print qq|
<$face size="1"><b>
Permissions:
|;
print " View " if ($per_view);
print " Add " if ($per_add);
print " Delete " if ($per_del);
print " Modify " if ($per_mod);
print " Admin " if ($per_admin);
print " None " if (!($per_view || $per_add || $per_del || per_mod));
print qq|</b></font>
<P><$font>
This database has been set up so any user can view any other users information, but you can
only modify and delete your own records. If you have admin access, you can of course do anything
you like.


<em>Enjoy!</em> and let me <a href="mailto:alex\@gossamer-threads.com">know</a> if you have any comments!
</font></p>
|;
# < -- End page text -->

&html_footer;
&html_page_bottom;
}



##########################################################
## Adding ##
##########################################################

sub html_add_form {
# --------------------------------------------------------
# The add form page where the user fills out all the details
# on the new record he would like to add. You should use
# &html_record_form to print out the form as it makes
# updating much easier. Feel free to edit &get_defaults
# to change the default values.
$form_upload = 1;
$page_title = "Add a New Record";
&html_page_top;

$submit_button = "Add Record";
$reset_button = "Reset Form";

# < -- Start page text -- >
print qq|

|;
# < -- End page text -->

print qq|
<FORM ENCTYPE="multipart/form-data" action="$db_script_url" method="POST">
<input type=hidden name="db" value="$db_setup">
<input type=hidden name="uid" value="$db_uid">|;

&html_record_form (&get_defaults);

print qq|
<p><center>
<INPUT TYPE="SUBMIT" NAME="add_record" VALUE="$submit_button"> 
<INPUT TYPE="RESET" VALUE="$reset_button">
</center></p></form>
|;

&html_footer;
&html_page_bottom;
}

sub html_add_success {
# --------------------------------------------------------
# The page that is returned upon a successful addition to
# the database. You should use &get_record and &html_record
# to verify that the record was inserted properly and to make
# updating easier.

$page_title = "Record Added";
&html_page_top;

# < -- Start page text -- >
print qq|
<P><$font>The following record was successfully added to the database:</FONT>
|;
# < -- End page text -->

&html_record(&get_record($in{$db_key}));

&html_footer;
&html_page_bottom;
}

sub html_add_failure {
# --------------------------------------------------------
# The page that is returned if the addition failed. An error message
# is passed in explaining what happened in $message and the form is
# reprinted out saving the input (by passing in %in to html_record_form).
$form_upload = 1;
my ($message) = $_[0];

$page_title = "Unable to Add Record";
&html_page_top;

$submit_button = "Add Record";
$reset_button = "Reset Form";

# < -- Start page text -- >
print qq|
<$font>There were problems with the following fields:
<FONT COLOR="red"><B>$message</B></FONT>
<P>Please fix any errors and submit the record again.</p></font>
|;
# < -- End page text -->

print qq|
<FORM ENCTYPE="multipart/form-data" action="$db_script_url" method="POST">
<input type=hidden name="db" value="$db_setup">
<input type=hidden name="uid" value="$db_uid">|;

&html_record_form (%in);

print qq|
<p><center>
<INPUT TYPE="SUBMIT" NAME="add_record" VALUE="$submit_button"> 
<INPUT TYPE="RESET" VALUE="$reset_button">
</center></p></form>
|;

&html_footer;
&html_page_bottom;
}

##########################################################
## Viewing ##
##########################################################

sub html_view_search {
# --------------------------------------------------------
# This page is displayed when a user requests to search the
# database for viewing.
# Note: all searches must use GET method.
#

$page_title= "Search the Database";
&html_page_top;

$submit_button = "View Records";
$reset_button = "Reset Form";

# < -- Start page text -- >
print qq|

|;
# < -- End page text -->

print qq|
<form action="$db_script_url" method="GET">
<input type=hidden name="db" value="$db_setup">
<input type=hidden name="uid" value="$db_uid">
|;

&html_record_form();

&html_search_options;

print qq|
<p><center>
<INPUT TYPE="SUBMIT" NAME="view_records" VALUE="$submit_button"> 
<INPUT TYPE="RESET" VALUE="$reset_button">
</center></p></form>
|;

&html_footer;
&html_page_bottom;
}

sub html_view_success {
# --------------------------------------------------------
# This page displays the results of a successful search.
# You can use the following variables when displaying your
# results:
#
# $numhits - the number of hits in this batch of results.
# $maxhits - the max number of hits displayed.
# $db_total_hits - the total number of hits.
# $db_next_hits - html for displaying the next set of results.
#

my (@hits) = @_;
my ($numhits) = ($#hits+1) / ($#db_cols+1);
my ($maxhits); $in{'mh'} ? ($maxhits = $in{'mh'}) : ($maxhits = $db_max_hits);

$page_title = "Search Results";
&html_page_top;

# < -- Start page text -- >
print qq|
<p><$font>
Your search returned <b>$db_total_hits</b> matches.</font>
|;
# < -- End page text -->

if ($db_next_hits) { print "
<$font>Pages: $db_next_hits</font>"; }

# Go through each hit and convert the array to hash and send to
# html_record for printing.
for (0 .. $numhits - 1) {
print "<P>";
&html_record (&array_to_hash($_, @hits));
}
if ($db_next_hits) { print "
<$font>Pages: $db_next_hits</font>"; }

&html_footer;
&html_page_bottom;

}

sub html_view_failure {
# --------------------------------------------------------
# The search for viewing failed. The reason is stored in $message
# and a new search form is printed out.

my ($message) = $_[0];

$page_title = "Search Failed";
&html_page_top;

$submit_button = "View Records";
$reset_button = "Reset Form";

# < -- Start page text -- >
print qq|
<$font><P>There were problems with the search. Reason:
<$error_color><B>$message</B></FONT>
<BR>Please fix any errors and submit the record again.</p>
|;
# < -- End page text -->

print qq|
<form action="$db_script_url" method="GET">
<input type=hidden name="db" value="$db_setup">
<input type=hidden name="uid" value="$db_uid">
|;

&html_record_form(%in);

&html_search_options;

print qq|
<p><center>
<INPUT TYPE="SUBMIT" NAME="view_records" VALUE="$submit_button"> 
<INPUT TYPE="RESET" VALUE="$reset_button">
</center></p></form>
|;

&html_footer;
&html_page_bottom;
}

##########################################################
## Deleting ##
##########################################################

sub html_delete_search {
# --------------------------------------------------------
# The page is displayed when a user wants to delete records. First
# the user has to search the database to pick which records to delete.
# That's handled by this form.

$page_title = "Search the Database for Deletion";
&html_page_top;

$submit_button = "Search";
$reset_button = "Reset Form";

# < -- Start page text -- >
print qq|
<$font><P>Search the database for the records you wish to delete or
<A HREF="$db_script_link_url&delete_form=1&$db_key=*">list all</a>:</p>
|;
# < -- End page text -->

print qq|
<form action="$db_script_url" method="GET">
<input type=hidden name="db" value="$db_setup">
<input type=hidden name="uid" value="$db_uid">
|;

&html_record_form();

&html_search_options;

print qq|
<p><center>
<INPUT TYPE="SUBMIT" NAME="delete_form" VALUE="$submit_button"> 
<INPUT TYPE="RESET" VALUE="$reset_button">
</center></p></form>
|;

&html_footer;
&html_page_bottom;
}

sub html_delete_form {
# --------------------------------------------------------
# The user has searched the database for deletion and must now
# pick which records to delete from the records returned. This page
# should produce a checkbox with name=ID value=delete for each record.
# We have to do a little work to convert the array @hits that contains
# the search results to a hash for printing.

my ($status, @hits) = &query("mod");
my ($numhits) = ($#hits+1) / ($#db_cols+1);
my ($maxhits); $in{'mh'} ? ($maxhits = $in{'mh'}) : ($maxhits = $db_max_hits);
my (%tmp);

$page_title = "Delete Record(s)";
&html_page_top;

$submit_button = "Delete Checked Record(s)";
$reset_button = "Reset Form";

if ($status ne "ok") { # There was an error searching!
print qq|<P><$font_error>Error: $status</FONT></P>|;
&html_footer;
&html_page_bottom;
}

else {
# < -- Start page text -- >
print qq|
<p><$font>
Check which records you wish to delete and then press "Delete Records":

Your search returned <b>$db_total_hits</b> matches.</font>
|;
# < -- End page text -->

if ($db_next_hits) { print "
<$font>Pages: $db_next_hits</font>"; }

print qq|
<form action="$db_script_url" method="POST">
<input type=hidden name="db" value="$db_setup">
<input type=hidden name="uid" value="$db_uid">|;

# Go through each hit and convert the array to hash and send to
# html_record for printing. Also add a checkbox with name=key and value=delete.

print "<P>";
for (0 .. $numhits - 1) {
%tmp = &array_to_hash($_, @hits);
print qq|<TABLE BORDER=0><TR><TD><INPUT TYPE=CHECKBOX NAME="$tmp{$db_key}" VALUE="delete"></TD><TD>|;
&html_record (%tmp);
print qq|</TD></TR></TABLE>\n|;
}
print qq|
<p><center>
<INPUT TYPE="SUBMIT" name="delete_records" VALUE="$submit_button"> 
<INPUT TYPE="RESET" VALUE="$reset_button">
</center></p></form>
|;

if ($db_next_hits) { print "
<$font>Pages: $db_next_hits</font>"; }

&html_footer;
&html_page_bottom;
}
}

sub html_delete_success {
# --------------------------------------------------------
# This page let's the user know that the records were successfully
# deleted.

my $message = shift;

$page_title = "Record(s) Deleted";
&html_page_top;

# < -- Start page text -- >
print qq|
<$font>The following records were deleted from the database: '$message'.</font></p>
|;
# < -- End page text -->

&html_footer;
&html_page_bottom;
}

sub html_delete_failure {
# --------------------------------------------------------
# This page let's the user know that some/all of the records were
# not deleted (because they were not found in the database).
# $errstr contains a list of records not deleted.

my ($errstr) = $_[0];

$page_title = "Record(s) Not Deleted";
&html_page_top;

# < -- Start page text -- >
print qq|
<$font>The records with the following keys were not found in the database:
<$error_color>'$errstr'</FONT>.</font></p>
|;
# < -- End page text -->

&html_footer;
&html_page_bottom;
}

##########################################################
## Modifying ##
##########################################################
sub html_modify_search {
# --------------------------------------------------------
# The page is displayed when a user wants to modify a record. First
# the user has to search the database to pick which record to modify.
# That's handled by this form.


$page_title = "Search the Database for Modifying";
&html_page_top;

$submit_button = "Search";
$reset_button = "Reset Form";

# < -- Start page text -- >
print qq|
<$font><P>Search the database for the records you wish to modify or
<A HREF="$db_script_link_url&modify_form=1&$db_key=*">list all</a>:</p>
|;
# < -- End page text -->

print qq|
<form action="$db_script_url" method="GET">
<input type=hidden name="db" value="$db_setup">
<input type=hidden name="uid" value="$db_uid">
|;

&html_record_form();

&html_search_options;

print qq|
<p><center>
<INPUT TYPE="SUBMIT" NAME="modify_form" VALUE="$submit_button"> 
<INPUT TYPE="RESET" VALUE="$reset_button">
</center></p></form>
|;

&html_footer;
&html_page_bottom;
}


sub html_modify_form {
# --------------------------------------------------------
# The user has searched the database for modification and must now
# pick which record to modify from the records returned. This page
# should produce a radio button with name=modify value=ID for each record.
# We have to do a little work to convert the array @hits that contains
# the search results to a hash for printing.

my (%tmp);
my ($status, @hits) = &query("mod");
my ($numhits) = ($#hits+1) / ($#db_cols+1);
if (($numhits == 1) and !$in{'nh'}) { $in{'modify'} = $hits[$db_key_pos]; &html_modify_form_record(); return; }
my ($maxhits); $in{'mh'} ? ($maxhits = $in{'mh'}) : ($maxhits = $db_max_hits);


$page_title = "Modify Record";
&html_page_top;

$submit_button = "Modify Record";
$reset_button = "Reset Form";

if ($status ne "ok") { # Error searching database!
print qq|<P><$font_error>Error: $status</FONT>|;
&html_footer;
&html_page_bottom;
}
else {
# < -- Start page text -- >
print qq|
<p><$font>
Check which record you wish to modify and then press "Modify Records":

Your search returned <b>$db_total_hits</b> matches.</font>
|;
# < -- End page text -->

if ($db_next_hits) { print "
<$font>Pages: $db_next_hits</font>"; }

print qq|
<form action="$db_script_url" method="POST">
<input type=hidden name="db" value="$db_setup">



Always on a mission!!