/[cvs]/nfo/php/libs/com.newsblob.phphtmllib/widgets/data_list/PEARSQLDataListSource.inc
ViewVC logotype

Annotation of /nfo/php/libs/com.newsblob.phphtmllib/widgets/data_list/PEARSQLDataListSource.inc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (hide annotations)
Thu May 6 16:27:50 2004 UTC (20 years, 4 months ago) by jonen
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +5 -5 lines
 updated all to v2.4.1 - Apr 01, 2004

1 jonen 1.1 <?php
2    
3     /**
4     * This file contains the SQLDataListSource child class
5     * that uses the PEAR DB object to talk to the DB.
6     *
7     * @author Walter A. Boring IV <waboring@buildabetterweb.com>
8     * @package phpHtmlLib
9     */
10    
11     /**
12     * This requires the SQLDataListSource
13     * parent class
14     *
15     */
16     include_once($phphtmllib."/widgets/data_list/SQLDataListSource.inc");
17    
18     /**
19     * Have to have PEAR and DB included
20     * the pear dir must be in the
21     * include path.
22     */
23     require_once("PEAR.php");
24     require_once("DB.php");
25    
26     /**
27     * This SQLDataListSource child class interacts with
28     * with the specific DB via the php PEAR DB abstraction
29     * objects.
30     *
31     * How to use?
32     * in the DataList child's get_data_source() method
33     * you pass in the already connected PEAR DB object
34     * in to the constructor. PEARSQLDataListSource
35     * takes care of the rest.
36     *
37 jonen 1.2 * @author Walter A. Boring IV <waboring@buildabetterweb.com>
38     * @package phpHtmlLib
39 jonen 1.1 */
40     class PEARSQLDataListSource extends SQLDataListSource {
41    
42     /**
43     * This var holds the Database object
44     * that is used to do the sql queries
45     * It is assumed that the db is already
46     * connected to, and the object provides
47     * 2 methods:
48     * query() - execute a sql query
49     */
50     var $_db = NULL;
51    
52     /**
53     * this holds the query result from the
54     * PEAR::DB->query() call
55     *
56     */
57     var $_result = NULL;
58    
59    
60     /**
61     * The constructor is used to pass in the
62     * PEAR DB object that has already been
63     * created and connected to the db.
64     *
65     * @param PEAR::DB object - MUST BE CONNECTED
66     */
67     function PEARSQLDataListSource( &$db ) {
68     $this->set_db_object( $db );
69     }
70    
71     /**
72     * Set the DB object we will use
73     * to talk to the DB.
74     *
75 jonen 1.3 * @param object - $db the babw_db object.
76 jonen 1.1 */
77     function set_db_object( &$db ) {
78     $this->_db = &$db;
79     }
80    
81 jonen 1.3 /**
82     * This is the function that does the data fetching,
83     * and sorting if needed.
84     * If the source is a sql database, this is where the
85     * query gets called. This function doesn't actually read the
86     * data from the DB yet. That is what get_next_data_row()
87     * does.
88     *
89     * @return boolean - the query passed/failed.
90     */
91 jonen 1.1 function do_query() {
92     $this->_result = $this->_db->query($this->_query);
93     if (DB::isError($this->_result)) {
94     $msg = $this->_result->getMessage();
95 jonen 1.4 $query = $this->_query;
96     user_error("PEARSQLDataListSource::do_query($query) - query failed : ".$msg);
97 jonen 1.3 return false;
98     } else {
99     return true;
100     }
101 jonen 1.1 }
102    
103    
104    
105     /**
106     * This function gets the next data row
107     * from the query()
108     *
109     * @return array()
110     */
111     function get_next_data_row() {
112     return $this->_result->fetchRow(DB_FETCHMODE_ASSOC);
113     }
114    
115     /**
116     * This function builds the limit
117     * clause portion of a DB query.
118     *
119     * @return string - the limit portion of
120     * the query.
121     */
122     function build_limit_clause($offset, $limit) {
123     if ($this->get_limit() != -1 ) {
124     if ($offset == '' || $offset == "none") {
125     $offset = 0;
126     }
127     switch(get_class($this->_db)) {
128     case "db_mysql":
129     $clause = " LIMIT $offset, $limit ";
130     break;
131     case "db_pgsql":
132 jonen 1.4 $clause = " LIMIT $limit OFFSET $offset ";
133 jonen 1.1 break;
134     default:
135     $clause = " LIMIT $offset, $limit ";
136     break;
137     }
138     return $clause;
139     } else {
140     return NULL;
141     }
142     }
143    
144     /**
145     * find the number of rows to be returned
146     * from a query from a table and where clause
147     *
148     * @param string $table - the table to count from
149     * @param string $where_clause - a where clause
150     *
151     * @return int the # of rows
152     */
153     function count($tables, $where_clause='', $count_clause='*') {
154     $query = "select count(".$count_clause.") as COUNT from ".$tables." ".$where_clause;
155 jonen 1.4 $result = $this->_db->getOne($query);
156 jonen 1.3 if (DB::isError($result)) {
157 jonen 1.1 $msg = $result->getMessage();
158     user_error("PEARSQLDataListSource::count() - query failed : ".$msg);
159 jonen 1.3 return 0;
160     } else {
161 jonen 1.4 return $result;
162 jonen 1.3 }
163 jonen 1.1 }
164    
165     }
166    
167     ?>

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed