diff --git a/dblayer.php b/dblayer.php index d5dd65a..3494861 100644 --- a/dblayer.php +++ b/dblayer.php @@ -446,8 +446,23 @@ class dblayer extends PDO } /** Create the table defined by the differents fields. - Define the SQL syntax based on SQL engines */ - public function createTable ($table, $fields, $primary, $unique) + Define the SQL syntax based on SQL engines + $table = "dns zones"; + $fields = array ( + "id"=>array ("integer", "not null", "autoincrement"), + "zo ne"=>array ("varchar", "255", "not null"), + "vie wname"=>array ("varchar", "255"), + "view clients"=>array ("varchar", "255"), + "comme nt"=>array ("varchar", "1024"), + "opendate"=>array ("datetime", "not null"), + "closedate"=>array ("datetime"), + ); + $primary = "id"; + $unique = array ("id", array ("zo ne", "vie wname")); + $foreign = array ("zone"=>"table.field",...); + */ + public function createTable ($table, $fields, $primary, $unique, + $foreign = array ()) { if ($this->db === null) throw new Exception ("Database not connected"); @@ -517,7 +532,18 @@ class dblayer extends PDO $sql .="`)"; } } - // TODO : Foreign keys + // Foreign keys + $i = 0; + foreach ($foreign as $field=>$k) + { + $sql .= ",\n FOREIGN KEY(`$field`) REFERENCES `".$k[0]."`(`". + $k[1]."`)"; + if (isset ($k[2])) + $sql .= " ".$k[2]; + if ($i > 0) + $sql .= ","; + $i++; + } $sql .=")"; break; case "mysql": @@ -584,8 +610,20 @@ class dblayer extends PDO $sql .="`)"; } } - // TODO : Foreign keys - $sql .=")"; + // Foreign keys + $i = 0; + foreach ($foreign as $field=>$k) + { + + $sql .= ",\n FOREIGN KEY(`$field`) REFERENCES `".$k[0]."`(`". + $k[1]."`)"; + if (isset ($k[2])) + $sql .= " ".$k[2]; + if ($i > 0) + $sql .= ","; + $i++; + } + $sql .=") ENGINE=InnoDB DEFAULT CHARSET=utf8;"; break; case "pgsql": $sql = "CREATE TABLE \"$table\" (\n"; @@ -655,7 +693,18 @@ class dblayer extends PDO $sql .="\")"; } } - // TODO : Foreign keys + // Foreign keys + $i = 0; + foreach ($foreign as $field=>$k) + { + $sql .= ",\n FOREIGN KEY(\"$field\") REFERENCES \"".$k[0]."\"(\"". + $k[1]."\")"; + if (isset ($k[2])) + $sql .= " ".$k[2]; + if ($i > 0) + $sql .= ","; + $i++; + } $sql .=")"; break; default: