Skip to main content

Handy Perl Functions: Automatically create a form from a database table

Back after a much needed vacation with another perl code snippet. This one creates a simple form using information pulled from the structure of a database table. The form it creates is not meant to be the end product - rather it gets a lot of the "grunt work" done, and you can then edit the resulting form to change fields to drop-downs, remove fields that shouldn't be edited, etc. It will also try to guess at a decent label for each field, based on the table name.

This script uses the same get_fields() function that outlined in my previous post.

As always, I'm sure this isn't the "perfect" code, and of course it can be improved - but it does work, and may perhaps be a useful starting block for someone else...

Usage - pretty simple - run the script and give it a database table name to use. It'll spit the html back out, which you can save in a text file or whatever.


#!/usr/bin/perl

# creates a basic form from the database table specified
use DBI;

# database connection details
my $dsn = "DBI:mysql:database=[YOUR DATABASE];host=localhost";
$dbh = DBI->connect($dsn,"root","");
my $qry = "";
my $html = "";

my $table = $ARGV[0];
if (not $table) {
print "Please specify a table...\n";
exit;
}

my @fields = &get_fields($table);

$html = "
<form action="\[YOUR PROCESSING SCRIPT]\" method="\post\">
<table border="0" cellpadding="4" cellspacing="0">\n";

foreach $_ (@fields) {
my $ucfield = uc $_;
my $name = ucfirst $_;
$name =~ s/_/ /g;

$html .= "
<tbody><tr valign="\top\">
<td align="\right\"><b>$name</b></td>
<td><input name="\$_\" value="\-$ucfield-\" type="\text\"></td>
</tr>\n";
}

$html .= "
<tr>
<td colspan="2" align="\center\"><input value="\Submit\" type="\submit\"></td>
</tr>
</tbody></table>
</form>\n";

print $html;

Comments

Popular posts from this blog

Using FIle FIlters in FileZilla

Here's a handy tip for situations when you want to download a large number of files - but only of a certain type. For example, perhaps you want to download all the PHP files from a largish website, scattered through many subdirectories. Perhaps you're making a backup and don't want any image files, etc. FileZilla (still the best FTP in my opinion) has a handy feature called filename filters - located under the Edit menu. Here you can set various filters that filter out files based on their filename. Took me a minute to figure that out - you're saying show only PHP files, rather you're saying filter out files that do not have ".php" as their suffix. For some reason, that seems a little backwards to me, but whatever. It works quite well. You can also check whether the filter applies only to files, only to directories - or both. In this example, you'd want to check only files, as otherwise you won't see any directories unless they happen to end in...

Great google article

Over on Maximum PC - there were a few things I didn't know you could do with the various Google apps. One is uploading files to google docs - any file. Which ties in well with my previous post about storing passwords - I uploaded a copy of my password safe file to google docs as a backup. Can't hurt, right? Also, I wasn't aware that you could set up forms in google docs that act as surveys, and then store the results in a google docs spreadsheet. This is a little alarming, as a decent amount of my work involves coding up custom surveys similar to this...

Cleaning content from OpenOffice using Perl

Open office is great software for a number of things - I use it as my office software instead of paying a premium for Microsoft office. But one thing it's not so hot at is converting documents to clean HTML. And one of the main things I use it for is adding content to sites that clients send me in word files or excel spreadsheets. Of course, you can always cut and paste, but that loses a lot of formatting. For example, if the content uses a lot of italics, bold text, etc. it can be a huge pain to go back and put all that back in. Another common situation is a client sending some sort of tablular data in a spreadsheet - for example a list of events. It's the kind of data that can change a lot, and it also needs to be in a table with some decent formatting to be usable. Doing it manually is a lot of grunt work. But grunt work is what computers excel at, and I'm not very good at. So I've developed a number of perl scripts to help streamline this kind of job. I'll go ...