User Authentication With patUser (part 2) - Accounting For Change (
Page 6 of 13 )
The default patUser-supplied database schema for the "groups" table includes
only two group attributes: its name, and a unique group ID. Most of the time,
this is sufficient; however, in case you need to add more attributes, patUser
can be easily tweaked to work with this extra data.
Let's alter the
default "groups" table to include some additional fields, for description and
location:
#
# Table structure for table `groups`
#
CREATE TABLE groups (
gid int(11) NOT NULL auto_increment,
name varchar(50) default NULL,
dsc varchar(255) NOT NULL default '',
loc varchar(255) NOT NULL default '',
UNIQUE KEY gid (gid)
) TYPE=MyISAM;
While we're at it, let's also insert a few records into the new table:
INSERT INTO groups (gid, name, dsc, loc) VALUES (1, 'Accounts', 'Billing and
finance activities', 'AZ'); INSERT INTO groups (gid, name, dsc, loc) VALUES
(2, 'Administration', 'Administrative activities', 'CA'); INSERT INTO groups
(gid, name, dsc, loc) VALUES (3, 'Operations', 'Logistics and operations',
'CA');
As before, I can retrieve this information via an SQL query,
mysql> SELECT * FROM groups;
+-----+----------------+--------------------------------+-----+
| gid | name | dsc | loc |
+-----+----------------+--------------------------------+-----+
| 1 | Accounts | Billing and finance activities | AZ |
| 2 | Administration | Administrative activities | CA |
| 3 | Operations | Logistics and operations | CA |
+-----+----------------+--------------------------------+-----+
3 rows in set (0.00 sec)
or have patUser do it for me via its getGroups() function:
<?php
// include classes
include("../include/patDbc.php");
include("../include/patUser.php");
// initialize database layer
$db = new patMySqlDbc("localhost", "db211", "us111", "secret");
// initialize patUser
$u = new patUser(true);
// connect patUser to database
$u->setAuthDbc($db);
// set tables
$u->setAuthTable("users");
$u->setGroupTable("groups");
// get group list
$list = $u->getGroups(array("gid", "name", "dsc", "loc"));
// print as table
echo "<h2>Groups</h2>";
echo "<table border=1>";
echo "<tr>";
echo "<td><b>GID</b></td>";
echo "<td><b>Name</b></td>";
echo "<td><b>Description</b></td>";
echo "<td><b>Location</b></td>";
echo "</tr>";
// iterate over list
foreach ($list as $l)
{
echo "<tr>";
echo "<td>" . $l['gid'] . "</td>";
echo "<td>" . $l['name'] . "</td>";
echo "<td>" . $l['dsc'] . "</td>";
echo "<td>" . $l['loc'] . "</td>";
echo "</tr>";
}
echo "</table>";
?>