With all the components in place, let's review the new MySimple WACS program in it's entirety. We include the modules, initialise the configuration system, check the authorisation, connect to the database, draft the query, submit it and then loop through the results. Not really that complex now we know what each part does. Anyway here's the finished code....
Example 2.6. Php: Complete Simple Program
<?php // MySimple - sample WACS API program (PHP5) require_once "wacs.php"; require_once "DB.php"; $wacs = new Wacs; // read the Wacs configuration files $wacs->read_conf(); // check the auth(entication and authorisation) of this user $wacs->check_auth( $_SERVER['REMOTE_ADDR'], 1 ); // start the HTML document print "<html>\n"; print "<head>\n"; print "<title>MySimple: Index Of Favourites</title>\n"; print "</head>\n"; print "<body>\n"; // database initialisation // - establish environment variable $dbienv = $wacs->conf_get_attr("database","dbienvvar"); if( ! empty( $dbienv )) { putenv($dbienv."=".$wacs->conf_get_attr("database","dbienvvalue")); } // - connect to the database $dbhandle= DB::connect( $wacs->conf_get_attr("database","phpdbconnect") ); if( DB::iserror($dbhandle)) { die("Can't connect to database\nReason:".$dbhandle->getMessage()."\n"); } $dbhandle->setFetchMode(DB_FETCHMODE_ORDERED); // do db select // 0 1 2 3 $query = "select mname, modelno, mbigimage, mimage from ". $wacs->conf_get_attr("tables","models"). " where mflag = 'S' order by mname"; $cursor = $dbhandle->query( $query ); // output the results print "<ul>\n"; while( $results = $cursor->fetchRow() ) { print "<li>"; print "<a href=\"".$wacs->conf_get_attr("server","cgiurl"); print "wacsmpthumbs/".$results[1]."\">"; print $results[0]."</a></li>\n"; } print "</ul>\n"; // finish off print "</body>\n"; print "</html>\n"; ?>
Example 2.7. Perl: Complete Simple Program
#!/usr/bin/perl # # MySimple - Sample WACS Program (Perl) # use Wacs; use DBI; # read the Wacs configuration files read_conf; # check the auth(entication and authorisation) of this user check_auth( $ENV{"REMOTE_ADDR"}, 1 ); # output the HTML headers print "Content-Type: text/html\n"; print "\n"; print "<html>\n"; print "<head>\n"; print "<title>MySimple: Index Of Favourites</title>\n"; print "</head>\n"; print "<body>\n"; # database initialisation # - establish environment variable $dbienv = conf_get_attr( "database","dbienvvar" ); if( $dbienv ne "" ) { $ENV{$dbienv}= conf_get_attr( "database","dbienvvalue" ); } # - connect to the database $dbhandle=DBI->connect( conf_get_attr("database","dbiconnect"), conf_get_attr("database","dbuser"), conf_get_attr("database","dbpass") ) || die("Can't connect to database\nReason given was $DBI::errstr\n"); # do db select # 0 1 2 3 $query = "select mname, modelno, mbigimage, mimage from ". conf_get_attr("tables","models"). " where mflag = 'S' order by mname"; $cursor = $dbhandle->prepare( $query ); $cursor->execute; print "<ul>\n"; while( @results = $cursor->fetchrow_array ) { print "<li>"; print "<a href=\"".conf_get_attr("server","cgiurl"); print "wacsmpthumbs/".$results[1]."\">"; print $results[0]."</a></li>\n"; } print "<ul>\n"; # finish off print "</body>\n"; print "</html>\n";
Our first WACS application is now complete, so copy the file into the either the web server document tree (for Php) or the web server cgi-bin directory (for perl). When you call up the URL, you should see something like this....
Granted it's fairly plain, but the names are in alphabetical order
and there are links on each name to that girl's model page. If you didn't
see any output, or got an error, you need to check the error log for the
server you're using. With Apache on linux, the usual location of this
is /var/log/httpd/www.mywacserver.com-errorlog
or
something similar to that.
This has been a fairly long and intense chapter, but we obviously had a lot of ground to cover and we really wanted to achieve a usable program before the end of it. This hopefully we've done. We've seen how to include the WACS module and the Database interface module. We've seen how to use read_conf and check_auth to read the configuration files and check the user's credentials. We've then made multiple uses of conf_get_attr to get all of the information together we need to make a connection to the database.
After all that setup procedure, which will become a very familiar template as you program with the WACS API, we looked at creating and sending a query to the database, retrieving the results and formating those results as a simple web page. In the next chapter, we'll look at how to make use of other information stored within the database.