User Authentication With patUser (part 2) - Asking For More
(Page 3 of 13 )
Now, let's make some additions to the patUser-provided schema for the "users" table. You might remember that the original schema looked like this:
#
# Table structure for table 'users'
#
CREATE TABLE users (
uid int(10) unsigned NOT NULL auto_increment,
username varchar(20) NOT NULL default '',
passwd varchar(20) NOT NULL default '',
email varchar(200) default NULL,
nologin tinyint(1) NOT NULL default '0',
first_login datetime default NULL,
last_login datetime default NULL,
count_logins int(10) unsigned NOT NULL default '0',
count_pages int(10) unsigned NOT NULL default '0',
time_online int(11) NOT NULL default '0',
PRIMARY KEY (uid),
KEY username (username)
) TYPE=MyISAM;
Let's alter this to include some additional fields, for age, sex and
telephone number:
CREATE TABLE users (
uid int(10) unsigned NOT NULL auto_increment,
username varchar(20) NOT NULL default '',
passwd varchar(20) NOT NULL default '',
email varchar(200) default NULL,
age tinyint(4) NOT NULL default '0',
sex char(1) NOT NULL default '',
tel varchar(50) NOT NULL default '',
nologin tinyint(1) NOT NULL default '0',
first_login datetime default NULL,
last_login datetime default NULL,
count_logins int(10) unsigned NOT NULL default '0',
count_pages int(10) unsigned NOT NULL default '0',
time_online int(11) NOT NULL default '0',
PRIMARY KEY (uid),
KEY username (username)
) TYPE=MyISAM;
While we're at it, let's also insert a few records into the new table:
INSERT INTO users (uid, username, passwd, email, age, sex, tel) VALUES (1,
'joe', 'joe', NULL, 19, 'M', '123 4567'); INSERT INTO users (uid, username,passwd, email, age, sex, tel) VALUES (2, 'sarah', 'sarah', NULL, 35, 'F','543 18238'); INSERT INTO users (uid, username, passwd, email, age, sex,tel) VALUES (3, 'john', 'john', 'john@some.domain.com', 22, 'M', '8532377'); INSERT INTO users (uid, username, passwd, email, age, sex, tel)VALUES (4, 'william', 'william', 'william@somewhere.com', 31, 'M', '1232372');
As before, I can retrieve this information via an SQL query,
mysql> SELECT uid, username, age, sex, tel FROM users;
+-----+----------+-----+-----+-----------+| uid | username | age | sex | tel |+-----+----------+-----+-----+-----------+| 1 | joe | 19 | M | 123 4567 || 2 | sarah | 35 | F | 543 18238 || 3 | john | 22 | M | 853 2377 || 4 | william | 31 | M | 123 2372 |+-----+----------+-----+-----+-----------+4 rows in set (0.00 sec)
or have patUser do it for me via its getUsers() function:
<?php
// include classesinclude("../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 table$u->setAuthTable("users");// get user list$list = $u->getUsers(array("uid", "username", "age", "sex", "tel"));// print as tableecho "<h2>Users</h2>";echo "<table border=1>";echo "<tr>";echo "<td><b>UID</b></td>";echo "<td><b>Username</b></td>";echo "<td><b>Age</b></td>";echo "<td><b>Sex</b></td>";echo "<td><b>Tel</b></td>";echo "</tr>";// iterate over listforeach ($list as $l){ echo "<tr>"; echo "<td>" . $l['uid'] . "</td>"; echo "<td>" . $l['username'] . "</td>"; echo "<td>" . $l['age'] . "</td>"; echo "<td>" . $l['sex'] . "</td>"; echo "<td>" . $l['tel'] . "</td>"; echo "</tr>";}echo "</table>";?>
In this case, I've told getUsers() to retrieve a few extra fields from the database - specifically, the "age", "sex" and "tel" fields. You'll remember these are not standard patUser fields, but have been added by me for illustrative purposes.
Here's the output:

Next: Drilling Deeper >>
More PHP Articles
More By icarus, (c) Melonfire