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 = "";\r
+ 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 = "";\r
+ 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;
# 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;
# 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"] : "";
# 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;
# 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;
$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;
}
# 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;
}
}
-
-?>
\ No newline at end of file