more work on add foreign key
authorchriskl <chriskl>
Wed, 23 Apr 2003 06:27:13 +0000 (06:27 +0000)
committerchriskl <chriskl>
Wed, 23 Apr 2003 06:27:13 +0000 (06:27 +0000)
classes/database/Postgres.php
constraints.php

index 04a48167c76019f3b20390b99456a70925d10db6..0e021a3274fff681a86a0f6076ec9351210f12e1 100755 (executable)
@@ -4,7 +4,7 @@
  * A class that implements the DB interface for Postgres
  * Note: This class uses ADODB and returns RecordSets.
  *
- * $Id: Postgres.php,v 1.77 2003/04/21 06:36:24 chriskl Exp $
+ * $Id: Postgres.php,v 1.78 2003/04/23 06:27:13 chriskl Exp $
  */
 
 // @@@ THOUGHT: What about inherits? ie. use of ONLY???
@@ -990,7 +990,7 @@ class Postgres extends BaseDB {
                $sql = "ALTER TABLE \"{$table}\" ADD ";
                if ($name != '') $sql .= "CONSTRAINT \"{$name}\" ";
                $sql .= "FOREIGN KEY (\"" . join('","', $sfields) . "\") ";
-               $sql .= "REFERENCES (\"" . join('","', $tfields) . "\") ";
+               $sql .= "REFERENCES \"{$target}\"(\"" . join('","', $tfields) . "\") ";
 
                return $this->execute($sql);
        }
index 70c9c580261a8696214198c984f6bee2bc7b48fe..47550be1a53f96da4a3652fabf1da472bd205beb 100644 (file)
@@ -3,7 +3,7 @@
        /**
         * List constraints on a table
         *
-        * $Id: constraints.php,v 1.12 2003/04/08 12:45:17 chriskl Exp $
+        * $Id: constraints.php,v 1.13 2003/04/23 06:27:14 chriskl Exp $
         */
 
        // Include application functions
 
                switch ($stage) {
                        case 2:
+                       
+                               // Copy the IndexColumnList variable from stage 2
+                               if (isset($_REQUEST['IndexColumnList']) && !isset($_REQUEST['SourceColumnList']))
+                                       $_REQUEST['SourceColumnList'] = serialize($_REQUEST['IndexColumnList']);
+                                       
                                echo "<h2>", htmlspecialchars($_REQUEST['database']), ": {$lang['strtables']}: ",
                                        htmlspecialchars($_REQUEST['table']), ": {$lang['straddfk']}</h2>\n";
                                $misc->printMsg($msg);
                                echo "<form onsubmit=\"doSelectAll();\" name=\"formIndex\" action=\"$PHP_SELF\" method=\"post\">\n";    
 
                                echo "<table>\n";
-                               echo "<tr><th class=\"data\" colspan=\"3\">{$lang['strname']}</th></tr>";
-                               echo "<tr>";
-                               echo "<td class=\"data1\" colspan=\"3\"><input type=\"text\" name=\"name\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" /></td></tr>";
-                               echo "<tr><th class=\"data\">{$lang['strtablecolumnlist']}</th><th class=\"data\">&nbsp;</th><th class=data>{$lang['strindexcolumnlist']}</th></tr>\n";
+                               echo "<tr><th class=\"data\">{$lang['strtablecolumnlist']}</th><th class=\"data\">&nbsp;</th><th class=data>{$lang['strfkcolumnlist']}</th></tr>\n";
                                echo "<tr><td class=\"data1\">" . $selColumns->fetch() . "</td>\n";
                                echo "<td class=\"data1\" align=\"center\">" . $buttonRemove->fetch() . $buttonAdd->fetch() . "</td>";
                                echo "<td class=data1>" . $selIndex->fetch() . "</td></tr>\n";
-                               echo "<tr><th class=\"data\" colspan=\"3\">{$lang['strfktarget']}</th></tr>";
-                               echo "<tr>";
-                               echo "<td class=\"data1\" colspan=\"3\"><input type=\"text\" name=\"target\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" /></td></tr>";
                                echo "</table>\n";
 
                                echo "<p><input type=\"hidden\" name=\"action\" value=\"save_add_foreign_key\">\n";
@@ -73,7 +72,7 @@
                                echo "<input type=\"hidden\" name=\"table\" value=\"", htmlspecialchars($_REQUEST['table']), "\">\n";
                                echo "<input type=\"hidden\" name=\"name\" value=\"", htmlspecialchars($_REQUEST['name']), "\">\n";
                                echo "<input type=\"hidden\" name=\"target\" value=\"", htmlspecialchars($_REQUEST['target']), "\">\n";
-                               echo "<input type=\"hidden\" name=\"IndexColumnList\" value=\"", htmlspecialchars(serialize($_REQUEST['IndexColumnList'])), "\">\n";
+                               echo "<input type=\"hidden\" name=\"SourceColumnList\" value=\"", htmlspecialchars($_REQUEST['SourceColumnList']), "\">\n";
                                echo "<input type=\"hidden\" name=\"stage\" value=\"3\">\n";
                                echo "<input type=\"submit\" value=\"{$lang['stradd']}\"> <input type=\"reset\" value=\"{$lang['strreset']}\"></p>\n";
                                echo "</form>\n";
                                echo "<p><a class=\"navlink\" href=\"$PHP_SELF?{$misc->href}&table=", urlencode($_REQUEST['table']),
                                        "\">{$lang['strshowallconstraints']}</a></p>\n";
                                break;
+                       case 3:
+                               // Check that they've given at least one column
+                               if (isset($_POST['SourceColumnList'])) $temp = unserialize($_POST['SourceColumnList']);
+                               if (!isset($_POST['IndexColumnList']) || !is_array($_POST['IndexColumnList'])
+                                               || sizeof($_POST['IndexColumnList']) == 0 || !isset($temp) 
+                                               || !is_array($temp) || sizeof($temp) == 0) addForeignKey(2, $lang['strfkneedscols']);
+                               else {
+                                       $status = $localData->addForeignKey($_POST['table'], $_POST['target'], unserialize($_POST['SourceColumnList']), 
+                                               $_POST['IndexColumnList'], $_POST['name']);
+                                       if ($status == 0)
+                                               doDefault($lang['strfkadded']);
+                                       else
+                                               addForeignKey(2, $lang['strfkaddedbad']);
+                               }
+                               break;
                        default:
                                echo "<h2>", htmlspecialchars($_REQUEST['database']), ": {$lang['strtables']}: ",
                                        htmlspecialchars($_REQUEST['table']), ": {$lang['straddfk']}</h2>\n";
                                echo "<tr><th class=\"data\" colspan=\"3\">{$lang['strname']}</th></tr>";
                                echo "<tr>";
                                echo "<td class=\"data1\" colspan=\"3\"><input type=\"text\" name=\"name\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" /></td></tr>";
-                               echo "<tr><th class=\"data\">{$lang['strtablecolumnlist']}</th><th class=\"data\">&nbsp;</th><th class=data>{$lang['strindexcolumnlist']}</th></tr>\n";
+                               echo "<tr><th class=\"data\">{$lang['strtablecolumnlist']}</th><th class=\"data\">&nbsp;</th><th class=data>{$lang['strfkcolumnlist']}</th></tr>\n";
                                echo "<tr><td class=\"data1\">" . $selColumns->fetch() . "</td>\n";
                                echo "<td class=\"data1\" align=\"center\">" . $buttonRemove->fetch() . $buttonAdd->fetch() . "</td>";
                                echo "<td class=data1>" . $selIndex->fetch() . "</td></tr>\n";
                "<script src=\"indexes.js\" type=\"text/javascript\"></script>");
 
        if ($action == 'add_unique_key' || $action == 'save_add_unique_key'
-                       || $action == 'add_primary_key' || $action == 'save_add_primary_key')
+                       || $action == 'add_primary_key' || $action == 'save_add_primary_key'
+                       || $action == 'add_foreign_key' || $action == 'save_add_foreign_key')
                echo "<body onload=\"init();\">";
        else
                $misc->printBody();