3 class mw_data_crud extends mw_data{
5 # ----------------------------------------------------------------------------------------
9 function call_data_crud($method_name, $arguments){
11 $sgbd = $this->sgbd();
12 // add_<table_name>(array $values)
14 (substr($method_name, 0, 4) == "add_")
15 && ($table_name = substr($method_name, 4))
16 && ($sgbd->table_exists("#--".$table_name))
18 $r = $this->data_insert(
20 "values" => $arguments[0],
21 "table_name" => $table_name
25 // get_<table_name>(string $index_name, string $index_value)
27 (substr($method_name, 0, 4) == "get_")
28 && ($table_name = substr($method_name, 4))
29 && ($sgbd->table_exists("#--".$table_name))
31 $r = $this->data_read(
33 "table_name" => $table_name,
34 "index_name" => $arguments[0],
35 "index_value" => $arguments[1]
39 // list_<table_name>(array $params)
41 (substr($method_name, 0, 5) == "list_")
42 && ($table_name = substr($method_name, 5))
43 && ($sgbd->table_exists("#--".$table_name))
45 $params = $arguments[0];
46 $params["table_name"] = $table_name;
47 $r = $this->data_list($params);
49 // set_<table_name>(string index_name, string index_value, array $values)
51 (substr($method_name, 0, 4) == "set_")
52 && ($table_name = substr($method_name, 4))
53 && ($sgbd->table_exists("#--".$table_name))
55 $r = $this->data_update(
57 "table_name" => $table_name,
58 "index_name" => $arguments[0],
59 "index_value" => $arguments[1],
60 "values" => $arguments[2]
64 // del_<table_name>(string $index_name, string $index_value)
66 (substr($method_name, 0, 4) == "del_")
67 && ($table_name = substr($method_name, 4))
68 && ($sgbd->table_exists("#--".$table_name))
70 $r = $this->data_delete(
72 "table_name" => $table_name,
73 "index_name" => $arguments[0],
74 "index_value" => $arguments[1]
81 # ----------------------------------------------------------------------------------------
85 function data_insert($params = array()){
86 $sgbd = $this->sgbd();
87 $table_name = isset($params["table_name"]) ? $params["table_name"] : "";
88 if(!$table_name) return false;
89 $values = (isset($params["values"]) && is_array($params["values"])) ? $params["values"] : false;
90 if(!$values) return false;
91 $return_insert_id = isset($params["return_insert_id"]) ? $params["return_insert_id"] : false;
92 $attributs_names = "";
93 $attributs_values = "";
94 foreach($values as $attribut_name => $attribut_value){
95 $attributs_names .= ($attributs_names ? ", " : "")."`".$attribut_name."`";
96 $attributs_values .= ($attributs_values ? ", " : "").$this->eq($attribut_value);
98 $attributs_names = $attributs_names ? "(".$attributs_names.")" : "";
99 $attributs_values = $attributs_values ? " VALUES (".$attributs_values.")" : "";
101 $sgbd->query("INSERT INTO `#--".$table_name."`".$attributs_names.$attributs_values);
102 $res = $return_insert_id ? $sgbd->insert_id() : true;
104 catch(Exception $e) { $res = false; }
108 # ----------------------------------------------------------------------------------------
112 function data_read($params = array()){
113 $sgbd = $this->sgbd();
114 $table_name = isset($params["table_name"]) ? $params["table_name"] : "";
115 $index_name = isset($params["index_name"]) ? $params["index_name"] : "";
116 $index_value = isset($params["index_value"]) ? $params["index_value"] : "";
117 if(!$table_name || !$index_name || !$index_value) return false;
120 $sql = "SELECT * from `#--".$table_name."` WHERE `".$index_name."`=".$this->eq($index_value)." LIMIT 1";
121 $rst = $sgbd->query($sql);
122 if($v_rst = $sgbd->fetch_assoc($rst)) $item = $v_rst;
123 $sgbd->free_result($rst);
125 catch(Exception $e) { $item = false; }
129 # ----------------------------------------------------------------------------------------
133 function data_list($params = array()){
134 $sgbd = $this->sgbd();
135 $table_name = isset($params["table_name"]) ? $params["table_name"] : "";
136 if(!$table_name) return false;
137 $index_name = isset($params["index_name"]) ? $params["index_name"] : "";
138 $select = "SELECT `#--".$table_name."`.*";
139 $from = " FROM `#--".$table_name."`";
140 $where = isset($params["where"]) ? " WHERE ".$params["where"] : "";
141 $order = isset($params["order_by"]) ?
142 " ORDER BY ".$params["order_by"].(isset($params["order"]) ? " ".$params["order"] : "")
144 $limit = isset($params["limit"]) ?
145 " LIMIT ".$params["limit"].(isset($params["offset"]) ? " OFFSET ".$params["offset"] : "")
147 $list = array("list" => array(), "total" => 0);
149 $sql = "SELECT count(*) as n FROM(".$select.$from.$where.") res";
150 $rst = $sgbd->query($sql);
151 if($v_rst = $sgbd->fetch_assoc($rst)) $list["total"] = $v_rst["n"];
152 $sgbd->free_result($rst);
153 if($list["total"] > 0){
154 $sql = "SELECT * FROM(".$select.$from.$where.$order.$limit.") res";
155 $rst = $sgbd->query($sql);
156 while($v_rst = $sgbd->fetch_assoc($rst)){
157 if($index_name) $list["list"][$v_rst[$index_name]] = $v_rst;
158 else $list["list"][] = $v_rst;
160 $sgbd->free_result($rst);
163 catch(Exception $e) { $list = false; }
167 # ----------------------------------------------------------------------------------------
171 function data_update($params = array()){
172 $sgbd = $this->sgbd();
173 $table_name = isset($params["table_name"]) ? $params["table_name"] : false;
174 $values = (isset($params["values"]) && is_array($params["values"])) ? $params["values"] : false;
175 $index_name = isset($params["index_name"]) ? $params["index_name"] : false;
176 $index_value = isset($params["index_value"]) ? $params["index_value"] : false;
177 if(!$table_name || !$index_name || !$index_value || !$values) return false;
179 $sql = "UPDATE `#--".$table_name."`";
181 foreach($values as $attribut_name => $attribut_value){
182 $set .= ($set ? ", " : "")."`".$attribut_name."`=".$this->eq($attribut_value);
184 $set = $set ? " SET ".$set : "";
185 $where = " WHERE `".$index_name."`=".$this->eq($index_value);
186 $sgbd->query($sql.$set.$where);
188 catch(Exception $e) { return false; }
192 # ----------------------------------------------------------------------------------------
196 function data_delete($params = array()){
197 $sgbd = $this->sgbd();
198 $table_name = isset($params["table_name"]) ? $params["table_name"] : false;
199 $index_name = isset($params["index_name"]) ? $params["index_name"] : false;
200 $index_value = isset($params["index_value"]) ? $params["index_value"] : false;
201 if(!$table_name || !$index_name || !$index_value) return false;
203 $sql = "DELETE FROM `#--".$table_name."` WHERE `".$index_name."`=".$this->eq($index_value);
206 catch(Exception $e) { return false; }