ajout de fuctions CRUD generiques
[mtweb] / mw / app / data / modules / sql / mw_data_crud.php
1 <?php
2
3   class mw_data_crud extends mw_data{
4
5     # ----------------------------------------------------------------------------------------
6     #                                                                                   insert
7     #
8
9     function data_insert($params = array()){
10       $sgbd = $this->sgbd();
11       $table_name = isset($params["table_name"]) ? $params["table_name"] : "";
12       if(!$table_name) return false;
13       $values = (isset($params["values"]) && is_array($params["values"])) ? $params["values"] : false;
14       if(!$values) return false;
15       $return_insert_id = isset($params["return_insert_id"]) ? $params["return_insert_id"] : false;
16       $attributs_names = "";
17       $attributs_values = "";
18       foreach($values as $attribut_name => $attribut_value){
19         $attributs_names .= ($attributs_names ? ", " : "")."`".$attribut_name."`";
20         $attributs_values .= ($attributs_values ? ", " : "").$this->eq($attribut_value);
21       }
22       $attributs_names = $attributs_names ? "(".$attributs_names.")" : "";
23       $attributs_values = $attributs_values ? " VALUES (".$attributs_names.")" : "";
24       try{
25         $sgbd->query("INSERT INTO `#--".$table_name."`".$attributs_names.$attributs_values);
26         $res = $return_insert_id ? $sgbd->insert_id() : true;
27       }
28       catch(Exception $e) { $res = false; }
29       return $res;
30     }
31
32     # ----------------------------------------------------------------------------------------
33     #                                                                                     read
34     #
35
36     function data_read($params = array()){
37       $sgbd = $this->sgbd();
38       $table_name = isset($params["table_name"]) ? $params["table_name"] : "";
39       $index_name = isset($params[""]) ? $params["index_name"] : "";
40       $index_value = isset($params[""]) ? $params["index_value"] : "";
41       if(!$table_name || !$index_name || !$index_value) return false;
42       $item = array();
43       try{
44         $sql = "SELECT * from `#--".$table_name."` WHERE `".$index_name."`=".$this->eq($index_value)." LIMIT 1";
45         $rst = $sgbd->query($sql);
46         if($v_rst = $sgbd->fetch_assoc($rst)) $item = $v_rst;
47         $sgbd->free_result($rst);
48       }
49       catch(Exception $e) { $item = false; }
50       return $item;
51     }
52
53     # ----------------------------------------------------------------------------------------
54     #                                                                                     list
55     #
56
57     function data_list($params = array()){
58       $sgbd = $this->sgbd();
59       $table_name = isset($params["table_name"]) ? $params["table_name"] : "";
60       if(!$table_name) return false;
61       $index_name = isset($params["index_name"]) ? $params["table_index"] : "";
62       $select = "SELECT `#--".$table_name."`.*";
63       $from = " FROM `#--".$table_name."`";
64       $where = isset($params["where"]) ? " WHERE ".$params["where"] : "";
65       $order = isset($params["order_by"]) ?
66         " ORDER BY ".$params["order_by"].(isset($params["order"]) ? " ".$params["order"] : "")
67       : "";
68       $limit = isset($params["limit"]) ?
69         " LIMIT ".$params["limit"].(isset($params["offset"]) ? " OFFSET ".$params["offset"] : "")
70       : "";
71       $list = array("list" => array(), "total" => 0);
72       try{
73         $sql = "SELECT count(*) as n FROM(".$select.$from.$where.") res";
74         $rst = $sgbd->query($sql);
75         if($v_rst = $sgbd->fetch_assoc($rst)) $list["total"] = $v_rst["n"];
76         $sgbd->free_result($rst);
77         if($list["total"] > 0){
78           $sql = "SELECT * FROM(".$select.$from.$where.$order.$limit.") res";
79           $rst = $sgbd->query($sql);
80           while($v_rst = $sgbd->fetch_assoc($rst)){
81             if($index_name) $list["list"][$v_rst[$index_name]] = $v_rst;
82             else $list["list"][] = $v_rst;
83           }
84           $sgbd->free_result($rst);
85         }
86       }
87       catch(Exception $e) { $list = false; }
88       return $list;
89     }
90
91     # ----------------------------------------------------------------------------------------
92     #                                                                                   update
93     #
94
95     function data_update($params = array()){
96       $sgbd = $this->sgbd();
97       $table_name = isset($params["table_name"]) ? $params["table_name"] : false;
98       $values = (isset($params["values"]) && is_array($params["values"])) ? $params["values"] : false;
99       $index_name = isset($params[""]) ? $params["index_name"] : false;
100       $index_value = isset($params[""]) ? $params["index_value"] : false;
101       if(!$table_name || !$index_name || !$index_value || !$values) return false;
102       try{
103         $sql = "UPDATE `#--".$table_name."`";
104         $set = "";
105         foreach($values as $attribut_name => $attribut_value){
106           $set .= ($set ? ", " : "")."`".$attribut_name."`=".$this->eq($attribut_value);
107         }
108         $set = $set ? " SET ".$set : "";
109         $where = " WHERE `".$index_name."`=".$this->eq($index_value);
110         $sgbd->query($sql);
111       }
112       catch(Exception $e) { return false; }
113       return true;
114     }
115
116     # ----------------------------------------------------------------------------------------
117     #                                                                                   delete
118     #
119
120     function data_delete($params = array()){
121       $sgbd = $this->sgbd();
122       try{
123         $sql = "DELETE FROM `#--".$table_name."` WHERE `".$index_name."`=".$this->eq($index_value);
124         $sgbd->query($sql);
125       }
126       catch(Exception $e) { return false; }
127       return true;
128     }
129
130   }
131
132 ?>