As I discussed in the previous section, the blog processor aggregates a simple MySQL wrapping class to have at its disposal the required capacity for handling all the database-related operations. As you’ll imagine, this functionality is easily achieved by coding a new pair of classes, which are shown below. Take a look at their respective definitions, please: // define 'MySQL' class class MySQL{ private $conId; private $host; private $user; private $password; private $database; private $result; const OPTIONS=4; public function __construct($options=array()){ if(count($options)!=self::OPTIONS){ throw new } foreach($options as $parameter=>$value){ if(!$value){ throw new } $this-> } $this->connectDB(); } // connect to MySQL private function connectDB(){ if(!$this->conId=mysql_connect($this- throw new } if(!mysql_select_db($this- throw new } } // run query public function query($query){ if(!$this->result=mysql_query throw new } return new Result($this,$this->result); } } // define 'Result' class class Result { private $mysql; private $result; public function __construct(&$mysql,$result){ $this->mysql=&$mysql; $this->result=$result; } // fetch row public function fetchRow(){ return mysql_fetch_assoc($this->result); } // count rows public function countRows(){ if(!$rows=mysql_num_rows($this->result)){ throw new } return $rows; } // count affected rows public function countAffectedRows(){ if(!$rows=mysql_affected_rows($this- throw new } return $rows; } // get ID form last-inserted row public function getInsertID(){ if(!$id=mysql_insert_id($this->mysql- throw new } return $id; } // seek row public function seekRow($row=0){ if(!is_int($row)||$row<0){ throw new } if(!mysql_data_seek($this->result,$row)){ throw new } } } All right, I think that the two classes listed above should be quite familiar to you, since I’ve been using them as part of different code samples in several PHP tutorials. With reference to these classes, you can see they offer a group of comprehensive methods for connecting to MySQL, running queries and handling result sets, which can be used inside the “BlogProcessor” class. Quite simple, right? Obviously this isn’t rocket science, so let’s move on to the next section. We'll learn how to provide all the input forms included with the blog processor with a basic JavaScript validation mechanism, which adds a useful feature to the whole application. To see how these client-side verification routines will be integrated with the blog application, please click on the link below and keep reading.
blog comments powered by Disqus |
|
|
|
|
|
|
|