id; } function setId($id) { $this->id = $id; } function getName($htmlentities=false) { if( $htmlentities ) return htmlentities($this->name); else return $this->name; } function setName($name) { $this->name = $name; } } class UsersDAO { function &factory($row) { $user = new UserVO(); $user->setId($row['id']); $user->setName($row['name']); return $user; } function &open($id) { // $user = factory a SELECT result or new UserVO if none is selected return $user; } function save(&$user) { //check if anything is ok if( $user->getId() ){ //we already have an Id, so UPDATE the User // UPDATE user SET name = $user->getName() WHERE id = $user->getId() }else{ //we don't have an Id yet, so INSERT the new User // INSERT INTO user(id,name) values(null, $user->getName()) $user->setId(mysql_insert_id()); } } function delete(&$user) { // DELETE FROM user WHERE id = $user->getId() } } class ListUsers { var $res; function ListUsers() { $this->res = myQuery('SELECT id, name FROM user ORDER BY name'); //many other queries may be implemented here! } function getNumRows() { if( is_resource($this->res) ) return mysql_num_rows($this->res); else return false; } function next() { if( !is_resource($this->res) ) return false; if( $row = mysql_fetch_assoc($this->res) ){ return UsersDAO::factory($row); }else{ return false; } } } ?> Listing users: next()){ ?> getName(true);?> Delete } ?> Creating a new user: setName($_POST['nome']); if( UsersDAO::save($user) ) $user = new UserVO(); //new object so we can fill an empty form again } //write errors and sucessful messages $form_action = 'adm_user_new.php'; $form_submit = 'Create new user'; require 'form_user.php'; // this form will be used both for creating and editing an user ?> ... and so on!