variable js mw_path_url dans head.php
[mtweb] / mw / app / data / impl / mw_mysql.php
index 991ac4d..4f8e41d 100644 (file)
 
     function extention_ok(&$env) { return $this->EXTENTION_OK; }
 
-    function mw_mysql($host, $base, $user, $password){
-      $this->host = $host;
-      $this->base = $base;
-      $this->user = $user;
-      $this->password = $password;
+    function authentication_required() { return true; }
+
+    function sgbd_name() { return "MySql"; }
+
+    function mw_mysql($params = array()){
+      $this->host = isset($params["host"]) ? $params["host"] : "localhost";
+      $this->base = isset($params["base"]) ? $params["base"] : "mtweb";
+      $this->user = isset($params["user"]) ? $params["user"] : "";
+      $this->password = isset($params["password"]) ? $params["password"] : "";
       $this->EXTENTION_OK = function_exists("mysql_connect");
     }
 
       return $this->query("USE ".$db_name);\r
     }
 
-    function table_exists($table){\r
+    function desc_table($table_name){
+      $sql = "SELECT * from information_schema.columns where table_name='".$table_name."'";
+      $rst = $this->query($sql);
+      $desc = array(
+        "name" => $table_name,
+        "attributs" => array()
+      );
+      try{
+        while($v_rst = $this->fetch_assoc($rst)){\r
+          $desc["attributs"][$v_rst["COLUMN_NAME"]] = array(
+            "name" => $v_rst["COLUMN_NAME"],
+            "prymary_key" => $v_rst["COLUMN_KEY"] == "PRI" ? true : false,
+            "auto_increment" => $v_rst["EXTRA"] == "auto_increment" ? true : false
+          );
+        }\r
+        $this->free_result($rst);
+      }
+      catch(Exception $e){
+        throw new Exception($this->exception_out("Impossible de lire la description de la table"));
+      }
+      return $desc;
+    }
+
+    function table_exists($table_name){\r
       if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);\r
-      $rst = $this->query("SHOW TABLES");\r
-      while($v_rst = mysql_fetch_array($rst)){\r
-        if(strcmp($v_rst[0], $table) == 0) return true;\r
-      }\r
-      mysql_free_result($rst);\r
-      return false;\r
+      $EXISTS = false;
+      try{
+        $rst = $this->query("SHOW TABLES");
+        while($v_rst = mysql_fetch_row($rst)){\r
+          if($v_rst[0] == $table_name){
+            $EXISTS = true;
+            break;
+          }\r
+        }\r
+        $this->free_result($rst);
+      }
+      catch(Exception $e){
+        throw new Exception($this->exception_out("Impossible de savoir si la table existe"));
+      }
+      return $EXISTS;
     }
 
     function field_exists($table_name, $field_name){
-      if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);
-      $sql = "SHOW COLUMNS FROM `".$table_name."` LIKE ".$field_name;
-      $rst = $this->query($sql);
-      $exists = false;
-      $v_rst = $this->fetch_assoc($rst);
-      if($v_rst) $exists = true;
-      $this->free_result($rst);
-      return $exists;
+      if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);\r
+      if(!($desc = $this->desc_table($table_name))){
+        throw new Exception($this->exception_out("Impossible de lire la description de la table"));
+      }
+      $EXISTS = false;
+      foreach($desc["attributs"] as $attribut_name => $attribut){
+        if($field_name == $attribut_name){
+          $EXISTS = true;
+          break;
+        }
+      }
+      return $EXISTS;
     }
 
     function query($query_string){\r