home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 April / PCWorld_2005-04_cd.bin / akce / web / phptriad / phptriad2-2-1.exe / htdocs / phpmyadmin / tbl_addfield.php < prev    next >
PHP Script  |  2002-01-06  |  7KB  |  194 lines

  1. <?php
  2. /* $Id: tbl_addfield.php,v 1.22 2001/11/23 01:03:20 loic1 Exp $ */
  3.  
  4.  
  5. /**
  6.  * Get some core libraries
  7.  */
  8. require('./libraries/grab_globals.lib.php');
  9. if (isset($submit)) {
  10.     $js_to_run = 'functions.js';
  11. }
  12. require('./header.inc.php');
  13.  
  14.  
  15. /**
  16.  * Defines the url to return to in case of error in a sql statement
  17.  */
  18. $err_url = 'tbl_properties.php'
  19.          . '?lang=' . $lang
  20.          . '&server=' . $server
  21.          . '&db=' . urlencode($db)
  22.          . '&table=' . urlencode($table);
  23.  
  24.  
  25. /**
  26.  * The form used to define the field to add has been submitted
  27.  */
  28. if (isset($submit)) {
  29.     $query = '';
  30.  
  31.     // Builds the field creation statement and alters the table
  32.     $field_cnt = count($field_name);
  33.     for ($i = 0; $i < $field_cnt; ++$i) {
  34.         if (get_magic_quotes_gpc()) {
  35.             $field_name[$i] = stripslashes($field_name[$i]);
  36.         }
  37.         if (PMA_MYSQL_INT_VERSION < 32306) {
  38.             PMA_checkReservedWords($field_name[$i], $err_url);
  39.         }
  40.  
  41.         $query .= PMA_backquote($field_name[$i]) . ' ' . $field_type[$i];
  42.         if ($field_length[$i] != ''
  43.             && !eregi('^(DATE|DATETIME|TIME|TINYBLOB|TINYTEXT|BLOB|TEXT|MEDIUMBLOB|MEDIUMTEXT|LONGBLOB|LONGTEXT)$', $field_type[$i])) {
  44.             if (get_magic_quotes_gpc()) {
  45.                 $query .= '(' . stripslashes($field_length[$i]) . ')';
  46.             } else {
  47.                 $query .= '(' . $field_length[$i] . ')';
  48.             }
  49.         }
  50.         if ($field_attribute[$i] != '') {
  51.             $query .= ' ' . $field_attribute[$i];
  52.         }
  53.         if ($field_default[$i] != '') {
  54.             if (strtoupper($field_default[$i]) == 'NULL') {
  55.                 $query .= ' DEFAULT NULL';
  56.             } else if (get_magic_quotes_gpc()) {
  57.                 $query .= ' DEFAULT \'' . PMA_sqlAddslashes(stripslashes($field_default[$i])) . '\'';
  58.             } else {
  59.                 $query .= ' DEFAULT \'' . PMA_sqlAddslashes($field_default[$i]) . '\'';
  60.             }
  61.         }
  62.         if ($field_null[$i] != '') {
  63.             $query .= ' ' . $field_null[$i];
  64.         }
  65.         if ($field_extra[$i] != '') {
  66.             $query .= ' ' . $field_extra[$i];
  67.             // An auto_increment field must be use as a primary key
  68.             if ($field_extra[$i] == 'AUTO_INCREMENT' && isset($field_primary)) {
  69.                 $primary_cnt = count($field_primary);
  70.                 for ($j = 0; $j < $primary_cnt && $field_primary[$j] != $i; $j++) {
  71.                     // void
  72.                 } // end for
  73.                 if ($field_primary[$j] == $i) {
  74.                     $query .= ' PRIMARY KEY';
  75.                     unset($field_primary[$j]);
  76.                 } // end if
  77.             } // end if (auto_increment)
  78.         }
  79.  
  80.         if ($after_field != '--end--') {
  81.             // Only the first field can be added somewhere else than at the end
  82.             if ($i == 0) {
  83.                 if ($after_field == '--first--') {
  84.                     $query .= ' FIRST';
  85.                 } else {
  86.                     if (get_magic_quotes_gpc()) {
  87.                         $query .= ' AFTER ' . PMA_backquote(stripslashes(urldecode($after_field)));
  88.                     } else {
  89.                         $query .= ' AFTER ' . PMA_backquote(urldecode($after_field));
  90.                     }
  91.                 }
  92.             } else {
  93.                 if (get_magic_quotes_gpc()) {
  94.                     $query .= ' AFTER ' . PMA_backquote(stripslashes($field_name[$i-1]));
  95.                 } else {
  96.                     $query .= ' AFTER ' . PMA_backquote($field_name[$i-1]);
  97.                 }
  98.             }
  99.         }
  100.         $query .= ', ADD ';
  101.     } // end for
  102.     $query = ereg_replace(', ADD $', '', $query);
  103.  
  104.     $sql_query     = 'ALTER TABLE ' . PMA_backquote($db) . '.' . PMA_backquote($table) . ' ADD ' . $query;
  105.     $result        = mysql_query($sql_query) or PMA_mysqlDie('', '', '', $err_url);
  106.     $sql_query_cpy = $sql_query . ';';
  107.  
  108.     // Builds the primary keys statements and updates the table
  109.     $primary = '';
  110.     if (isset($field_primary)) {
  111.         $primary_cnt = count($field_primary);
  112.         for ($i = 0; $i < $primary_cnt; $i++) {
  113.             $j       = $field_primary[$i];
  114.             $primary .= PMA_backquote($field_name[$j]) . ', ';
  115.         } // end for
  116.         $primary     = ereg_replace(', $', '', $primary);
  117.         if (!empty($primary)) {
  118.             $sql_query      = 'ALTER TABLE ' . PMA_backquote($db) . '.' . PMA_backquote($table) . ' ADD PRIMARY KEY (' . $primary . ')';
  119.             $result         = mysql_query($sql_query) or PMA_mysqlDie('', '', '', $err_url);
  120.             $sql_query_cpy  .= "\n" . $sql_query . ';';
  121.         }
  122.     } // end if
  123.      
  124.     // Builds the indexes statements and updates the table
  125.     $index = '';
  126.     if (isset($field_index)) {
  127.         $index_cnt = count($field_index);
  128.         for ($i = 0; $i < $index_cnt; $i++) {
  129.             $j     = $field_index[$i];
  130.             $index .= PMA_backquote($field_name[$j]) . ', ';
  131.         } // end for
  132.         $index     = ereg_replace(', $', '', $index);
  133.         if (!empty($index)) {
  134.             $sql_query      = 'ALTER TABLE ' . PMA_backquote($db) . '.' . PMA_backquote($table) . ' ADD INDEX (' . $index . ')';
  135.             $result         = mysql_query($sql_query) or PMA_mysqlDie('', '', '', $err_url);
  136.             $sql_query_cpy  .= "\n" . $sql_query . ';';
  137.         }
  138.     } // end if
  139.      
  140.     // Builds the uniques statements and updates the table
  141.     $unique = '';
  142.     if (isset($field_unique)) {
  143.         $unique_cnt = count($field_unique);
  144.         for ($i = 0; $i < $unique_cnt; $i++) {
  145.             $j      = $field_unique[$i];
  146.             $unique .= PMA_backquote($field_name[$j]) . ', ';
  147.         } // end for
  148.         $unique = ereg_replace(', $', '', $unique);
  149.         if (!empty($unique)) {
  150.             $sql_query      = 'ALTER TABLE ' . PMA_backquote($db) . '.' . PMA_backquote($table) . ' ADD UNIQUE (' . $unique . ')';
  151.             $result         = mysql_query($sql_query) or PMA_mysqlDie('', '', '', $err_url);
  152.             $sql_query_cpy  .= "\n" . $sql_query . ';';
  153.         }
  154.     } // end if
  155.      
  156.  
  157.     // Builds the fulltext statements and updates the table
  158.     $fulltext = '';
  159.     if (PMA_MYSQL_INT_VERSION >= 32323 && isset($field_fulltext)) {
  160.         $fulltext_cnt = count($field_fulltext);
  161.         for ($i = 0; $i < $fulltext_cnt; $i++) {
  162.             $j        = $field_fulltext[$i];
  163.             $fulltext .= PMA_backquote($field_name[$j]) . ', ';
  164.         } // end for
  165.         $fulltext = ereg_replace(', $', '', $fulltext);
  166.         if (!empty($fulltext)) {
  167.             $sql_query      = 'ALTER TABLE ' . PMA_backquote($db) . '.' . PMA_backquote($table) . ' ADD FULLTEXT (' . $fulltext . ')';
  168.             $result         = mysql_query($sql_query) or PMA_mysqlDie('', '', '', $err_url);
  169.             $sql_query_cpy  .= "\n" . $sql_query . ';';
  170.         }
  171.     } // end if
  172.  
  173.     // Go back to table properties
  174.     $sql_query = $sql_query_cpy;
  175.     unset($sql_query_cpy);
  176.     $message   = $strTable . ' ' . htmlspecialchars($table) . ' ' . $strHasBeenAltered;
  177.     include('./tbl_properties.php');
  178.     exit();
  179. } // end do alter table
  180.  
  181. /**
  182.  * Displays the form used to define the new field
  183.  */
  184. else{
  185.     $action = 'tbl_addfield.php';
  186.     include('./tbl_properties.inc.php');
  187.  
  188.     // Diplays the footer
  189.     echo "\n";
  190.     include('./footer.inc.php');
  191. }
  192.  
  193. ?>
  194.