I'll Have My People Call Your People

Building a web-based telephone book can be easy, as long as you don't drink too much of Marcel's wine while you work.
Cooking Instructions (Installation)

After all these steps are completed, we have pretty much all the pieces we need to continue with the actual phone book creation and build. If you haven't already done so, obtain the distribution for the phone book from the Salmar web site in the downloads section or from the Linux Journal FTP web site (see Resources).

The tar, gzipped distribution file is designed to extract into the standard Red Hat file structure for the Apache server, namely /home/httpd/html and /home/http/cgi-bin.

cd /home/httpd
tar -xzvf /path_to/phonebook.tar.gz

The file list looks something like this:

If you are running Apache from binaries built from the default source distribution, those directories will likely be /usr/local/apache/htdocs and /usr/local/apache/cgi-bin. If this is the case, you can extract the files to a temporary directory and move the sciphb directories to the appropriate cgi-bin and html/htdocs. Since there is always more than one way to do it, you could create symbolic links like this:
mkdir /home/httpd
ln -s /usr/local/apache/htdocs /home/httpd/html
ln -s /usr/local/apache/cgi-bin /home/httpd/cgi-bin
Everything will work fine from here, but you may want to verify the path to Perl. The .pl files in the cgi-bin/sciphb directory all call Perl from /usr/bin/perl. If necessary, change the first line of these files to reflect the actual path to your Perl binary.

Let this simmer for a few seconds, then change directory to the admin cgi scripts location:

cd /home/httpd/cgi-bin/sciphb/admin

There you will find a file called createphdbs.pl which (strangely enough) will create the databases necessary to use the phone book. This package is quite simple and, I believe, will provide the aspiring chef plenty of inspiration for further development. The scripts are small in number, but going through each script would take far too much space and take great advantage of the hospitality of this fine publication. I would, however, like to show you the PostgreSQL table creation for this on-line directory. Keep in mind that this is just a code morsel (Listing 1) and not the finished product. The first section shows the setup and initial calls using the Perl DBI in order to create the phone database. In particular, pay close attention to the line that begins with

$dbh = DBI->connect("dbi:Pg:dbname=$dbmain",
The dbi:Pg identifies the database interface type (DBD); in this case, Pg stands for PostgreSQL.

Listing 1

Listing 2 is a portion of the actual database creation. Note the $dbh calls throughout. These are what make the DBI environment portable. Once having established the DBD (as in the connect statement above), there should be very little need to modify this code if you were to use another database.

Listing 2

Of course, there is more, but you will have to download the scripts to satisfy your appetite.

Serving Suggestions: Your Completed Phone Book

The phone book has two different interfaces: one for lookups only and another for both lookups and updates. You can, if you wish, use only the administration page if you are content to allow anyone in your organization to update the phone book information. Modifications of the index.html file to pull in the administration page require only a change to the actual page being pulled in. To access the default user interface, use this link: http://your_server/sciphb/.

Figure 3. Adding Users Through the Phonebook's Administration

The administration version of this page (which allows the adding of users, modification of records and deletes) can be accessed by going to this address: http://your_server/sciphb/admin/.

I recommend you keep the user and administration portions separate. Give a few specific users the responsibility of updating the phone book, and the information should continue to make sense.

You might also consider changing the available fields. For instance, the IN/OUT board aspect of the directory may not be for you. Perhaps you need another field. With the scripts provided and a little time, modifying this telephone directory to suit specific needs should be quite simple.

Once again, mes amis, it is closing time. The pleasure of having you here on a regular basis puts, how shall I say, “pressure” on my wine cellar. Ho, ho! I shall have to replenish, non? It is okay, mes amis. Chef Marcel is only kidding. There is always more wine, but the doors, they must close sometime. Until next time, enjoy that on-line telephone book. Remember—you are always welcome here at Chez Marcel. Bon Appétit!

Marcel Gagné (mggagne@salmar.com) lives in Mississauga, Ontario. In real life, he is president of Salmar Consulting Inc., a systems integration and network consulting firm. He is also a pilot, writes science fiction and fantasy and edits TransVersions, a science fiction, fantasy, and horror magazine. He loves Linux and all flavors of UNIX, and will even admit it in public.