X-Git-Url: http://git.dj3c1t.com/?a=blobdiff_plain;f=mw%2Fapp%2Fdata%2Fmodules%2Fsql%2Fmw_data_sql_crud.php;h=8daf014b6a91203e2c25a4f83a5c345a5c37f3f5;hb=HEAD;hp=0d9abbd8e835f04094833a33b9a0d8ff51b5f47e;hpb=0df77b6e0e0eee4060e73ca0d6955bf232aa23cc;p=mtweb diff --git a/mw/app/data/modules/sql/mw_data_sql_crud.php b/mw/app/data/modules/sql/mw_data_sql_crud.php index 0d9abbd..8daf014 100644 --- a/mw/app/data/modules/sql/mw_data_sql_crud.php +++ b/mw/app/data/modules/sql/mw_data_sql_crud.php @@ -3,10 +3,179 @@ class mw_data_sql_crud extends mw_data{ # ---------------------------------------------------------------------------------------- + # parametres du sgbd + # + + public function set_sgbd_param($key, $value){ + $env = $this->env(); + if(($env->bdd("sgbd") == "pdo_mysql") || ($env->bdd("sgbd") == "mysql")){ + return $this->set_sgbd_mysql_param($key, $value); + } + return false; + } + + public function set_sgbd_mysql_param($key, $value){ + $sgbd = $this->sgbd(); + $sql = "SET ".$key."=\"".$value."\""; + try{ + $sgbd->query($sql); + } + catch(Exception $e){ + return false; + } + return true; + } + + # ---------------------------------------------------------------------------------------- + # create table + # + + public function data_create_table($params){ + $env = $this->env(); + if($env->bdd("sgbd") == "pdo_sqlite"){ + return $this->data_create_sqlite_table($params); + } + return $this->data_create_mysql_table($params); + } + + public function data_create_mysql_table($params){ + $sgbd = $this->sgbd(); + $table_name = isset($params["table_name"]) ? $params["table_name"] : ""; + $fields = isset($params["fields"]) ? $params["fields"] : array(); + $keys = isset($params["keys"]) ? $params["keys"] : array(); + $options = isset($params["options"]) ? $params["options"] : array(); + if(!$table_name || !$fields) return false; + $sql_fields = ""; + $sql_keys = ""; + $sql_options = ""; + foreach($fields as $field_name => $field){ + if(!preg_match("/^[a-z]+[a-z_0-9]*$/", $field_name)) return false; + if(!isset($field["type"])) return false; + $sql_field = ""; + switch($field["type"]){ + case "int": + $value = isset($field["value"]) ? $field["value"] : "11"; + if(!preg_match("/^[0-9]+$/", $value)) return false; + $sql_field .= "`".$field_name."` int(".$value.")"; + break; + case "varchar": + $value = isset($field["value"]) ? $field["value"] : "255"; + if(!preg_match("/^[0-9]+$/", $value)) return false; + $sql_field .= "`".$field_name."` varchar(".$value.")"; + break; + case "text": + $sql_field .= "`".$field_name."` text"; + break; + case "date": + $sql_field .= "`".$field_name."` date"; + break; + case "datetime": + $sql_field .= "`".$field_name."` datetime"; + break; + } + if($sql_field){ + $null = isset($field["null"]) ? $field["null"] : false; + $sql_field .= ($null ? " DEFAULT" : " NOT")." NULL"; + if($null && isset($field["default"])){ + $sql_field .= " DEFAULT ".$this->eq($field["default"]); + } + if(isset($field["autoincrement"]) && $field["autoincrement"]){ + $sql_field .= " AUTO_INCREMENT"; + } + $sql_fields .= ($sql_fields ? ", " : "").$sql_field; + } + } + $key_index = 0; + foreach($keys as $key){ + $key_index++; + $sql_key_fields = ""; + foreach($key["fields"] as $key_field){ + $sql_key_fields .= ($sql_key_fields ? "," : "")."`".$key_field."`"; + } + $sql_key = "KEY `#--".$table_name."_".$key_index."`(".$sql_key_fields.")"; + if(isset($key["primary"]) && $key["primary"]){ + $sql_key = "PRIMARY ".$sql_key; + } + $sql_keys .= ($sql_keys ? ", " : "").$sql_key; + } + foreach($options as $option_name => $option_value){ + switch($option_name){ + case "default_charset": + $sql_options .= " DEFAULT CHARSET=".$option_value; + break; + } + } + $sql = "CREATE TABLE `#--".$table_name."`(".$sql_fields.", ".$sql_keys.")".$sql_options; + try{ + $sgbd->query($sql); + } + catch(Exception $e){ + return false; + } + return true; + } + + public function data_create_sqlite_table($params){ + $sgbd = $this->sgbd(); + $table_name = isset($params["table_name"]) ? $params["table_name"] : ""; + $fields = isset($params["fields"]) ? $params["fields"] : array(); + $keys = isset($params["keys"]) ? $params["keys"] : array(); + $options = isset($params["options"]) ? $params["options"] : array(); + if(!$table_name || !$fields) return false; + $sql_fields = ""; + $sql_keys = ""; + $sql_options = ""; + foreach($fields as $field_name => $field){ + if(!preg_match("/^[a-z]+[a-z_0-9]*$/", $field_name)) return false; + if(!isset($field["type"])) return false; + $sql_field = ""; + switch($field["type"]){ + case "int": + $sql_field .= "`".$field_name."` INTEGER"; + break; + case "varchar": + case "text": + case "date": + case "datetime": + $sql_field .= "`".$field_name."` TEXT"; + break; + } + if($sql_field){ + $null = isset($field["null"]) ? $field["null"] : false; + $sql_field .= ($null ? " DEFAULT" : " NOT")." NULL"; + if($null && isset($field["default"])){ + $sql_field .= " DEFAULT ".$this->eq($field["default"]); + } + $sql_fields .= ($sql_fields ? ", " : "").$sql_field; + } + } + $key_index = 0; + foreach($keys as $key){ + if(isset($key["primary"]) && $key["primary"]){ + $key_index++; + $sql_key_fields = ""; + foreach($key["fields"] as $key_field){ + $sql_key_fields .= ($sql_key_fields ? "," : "")."`".$key_field."`"; + } + $sql_key = "PRIMARY KEY (".$sql_key_fields.")"; + $sql_keys .= ($sql_keys ? ", " : "").$sql_key; + } + } + $sql = "CREATE TABLE `#--".$table_name."`(".$sql_fields.", ".$sql_keys.")".$sql_options; + try{ + $sgbd->query($sql); + } + catch(Exception $e){ + return false; + } + return true; + } + + # ---------------------------------------------------------------------------------------- # description # - function data_desc($params = array()){ + public function data_desc($params = array()){ $sgbd = $this->sgbd(); $table_name = isset($params["table_name"]) ? $params["table_name"] : ""; if(!$table_name) return false; @@ -21,7 +190,7 @@ # insert # - function data_insert($params = array()){ + public function data_insert($params = array()){ $sgbd = $this->sgbd(); $table_name = isset($params["table_name"]) ? $params["table_name"] : ""; if(!$table_name) return false; @@ -48,7 +217,7 @@ # read # - function data_read($params = array()){ + public function data_read($params = array()){ $sgbd = $this->sgbd(); $table_name = isset($params["table_name"]) ? $params["table_name"] : ""; $index_name = isset($params["index_name"]) ? $params["index_name"] : ""; @@ -69,7 +238,7 @@ # update # - function data_update($params = array()){ + public function data_update($params = array()){ $sgbd = $this->sgbd(); $table_name = isset($params["table_name"]) ? $params["table_name"] : false; $values = (isset($params["values"]) && is_array($params["values"])) ? $params["values"] : false; @@ -94,7 +263,7 @@ # delete # - function data_delete($params = array()){ + public function data_delete($params = array()){ $sgbd = $this->sgbd(); $table_name = isset($params["table_name"]) ? $params["table_name"] : false; $index_name = isset($params["index_name"]) ? $params["index_name"] : false; @@ -104,7 +273,7 @@ $sql = "DELETE FROM `#--".$table_name."` WHERE `".$index_name."`=".$this->eq($index_value); $sgbd->query($sql); } - catch(Exception $e) { debug($e->getMessage()); return false; } + catch(Exception $e) { return false; } return true; } @@ -112,7 +281,7 @@ # list # - function data_list($params = array()){ + public function data_list($params = array()){ $sgbd = $this->sgbd(); $table_name = isset($params["table_name"]) ? $params["table_name"] : ""; if(!$table_name) return false; @@ -182,5 +351,3 @@ } } - -?> \ No newline at end of file