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_create.php < prev    next >
PHP Script  |  2002-01-06  |  8KB  |  236 lines

  1. <?php
  2. /* $Id: tbl_create.php,v 1.20 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.  * Selects the database to work with
  27.  */
  28. mysql_select_db($db);
  29.  
  30.  
  31. /**
  32.  * The form used to define the structure of the table has been submitted
  33.  */
  34. if (isset($submit)) {
  35.     $sql_query = $query_cpy = '';
  36.  
  37.     // Builds the fields creation statements
  38.     $fields_cnt = count($field_name);
  39.     for ($i = 0; $i < $fields_cnt; $i++) {
  40.         if (empty($field_name[$i])) {
  41.             continue;
  42.         }
  43.         if (get_magic_quotes_gpc()) {
  44.             $field_name[$i] = stripslashes($field_name[$i]);
  45.         }
  46.         if (PMA_MYSQL_INT_VERSION < 32306) {
  47.             PMA_checkReservedWords($field_name[$i], $err_url);
  48.         }
  49.         $query = PMA_backquote($field_name[$i]) . ' ' . $field_type[$i];
  50.         if ($field_length[$i] != '') {
  51.             if (get_magic_quotes_gpc()) {
  52.                 $query .= '(' . stripslashes($field_length[$i]) . ')';
  53.             } else {
  54.                 $query .= '(' . $field_length[$i] . ')';
  55.             }
  56.         }
  57.         if ($field_attribute[$i] != '') {
  58.             $query .= ' ' . $field_attribute[$i];
  59.         }
  60.         if ($field_default[$i] != '') {
  61.             if (strtoupper($field_default[$i]) == 'NULL') {
  62.                 $query .= ' DEFAULT NULL';
  63.             } else if (get_magic_quotes_gpc()) {
  64.                 $query .= ' DEFAULT \'' . PMA_sqlAddslashes(stripslashes($field_default[$i])) . '\'';
  65.             } else {
  66.                 $query .= ' DEFAULT \'' . PMA_sqlAddslashes($field_default[$i]) . '\'';
  67.             }
  68.         }
  69.         if ($field_null[$i] != '') {
  70.             $query .= ' ' . $field_null[$i];
  71.         }
  72.         if ($field_extra[$i] != '') {
  73.             $query .= ' ' . $field_extra[$i];
  74.             // An auto_increment field must be use as a primary key
  75.             if ($field_extra[$i] == 'AUTO_INCREMENT' && isset($field_primary)) {
  76.                 $primary_cnt = count($field_primary);
  77.                 for ($j = 0; $j < $primary_cnt && $field_primary[$j] != $i; $j++) {
  78.                     // void
  79.                 } // end for
  80.                 if ($field_primary[$j] == $i) {
  81.                     $query .= ' PRIMARY KEY';
  82.                     unset($field_primary[$j]);
  83.                 } // end if
  84.             } // end if (auto_increment)
  85.         }
  86.         $query .= ', ';
  87.         $sql_query .= $query;
  88.         $query_cpy .= "\n" . '  ' . $query;
  89.     } // end for
  90.     unset($fields_cnt);
  91.     unset($query);
  92.     $sql_query = ereg_replace(', $', '', $sql_query);
  93.     $query_cpy = ereg_replace(', $', '', $query_cpy);
  94.  
  95.     // Builds the primary keys statements
  96.     $primary     = '';
  97.     $primary_cnt = (isset($field_primary) ? count($field_primary) : 0);
  98.     for ($i = 0; $i < $primary_cnt; $i++) {
  99.         $j = $field_primary[$i];
  100.         if (!empty($field_name[$j])) {
  101.             if (get_magic_quotes_gpc()) {
  102.                 $field_name[$j] = stripslashes($field_name[$j]);
  103.             }
  104.             $primary .= PMA_backquote($field_name[$j]) . ', ';
  105.         }
  106.     } // end for
  107.     unset($primary_cnt);
  108.     $primary = ereg_replace(', $', '', $primary);
  109.     if (!empty($primary)) {
  110.         $sql_query .= ', PRIMARY KEY (' . $primary . ')';
  111.         $query_cpy .= ',' . "\n" . '  PRIMARY KEY (' . $primary . ')';
  112.     }
  113.     unset($primary);
  114.  
  115.     // Builds the indexes statements
  116.     $index     = '';
  117.     $index_cnt = (isset($field_index) ? count($field_index) : 0);
  118.     for ($i = 0;$i < $index_cnt; $i++) {
  119.         $j = $field_index[$i];
  120.         if (!empty($field_name[$j])) {
  121.             if (get_magic_quotes_gpc()) {
  122.                 $field_name[$j] = stripslashes($field_name[$j]);
  123.             }
  124.             $index .= PMA_backquote($field_name[$j]) . ', ';
  125.         }
  126.     } // end for
  127.     unset($index_cnt);
  128.     $index = ereg_replace(', $', '', $index);
  129.     if (!empty($index)) {
  130.         $sql_query .= ', INDEX (' . $index . ')';
  131.         $query_cpy .= ',' . "\n" . '  INDEX (' . $index . ')';
  132.     }
  133.     unset($index);
  134.  
  135.     // Builds the uniques statements
  136.     $unique     = '';
  137.     $unique_cnt = (isset($field_unique) ? count($field_unique) : 0);
  138.     for ($i = 0; $i < $unique_cnt; $i++) {
  139.         $j = $field_unique[$i];
  140.         if (!empty($field_name[$j])) {
  141.             if (get_magic_quotes_gpc()) {
  142.                 $field_name[$j] = stripslashes($field_name[$j]);
  143.             }
  144.            $unique .= PMA_backquote($field_name[$j]) . ', ';
  145.         }
  146.     } // end for
  147.     unset($unique_cnt);
  148.     $unique = ereg_replace(', $', '', $unique);
  149.     if (!empty($unique)) {
  150.         $sql_query .= ', UNIQUE (' . $unique . ')';
  151.         $query_cpy .= ',' . "\n" . '  UNIQUE (' . $unique . ')';
  152.     }
  153.     unset($unique);
  154.  
  155.     // Builds the fulltextes statements
  156.     $fulltext     = '';
  157.     $fulltext_cnt = (isset($field_fulltext) ? count($field_fulltext) : 0);
  158.     for ($i = 0; $i < $fulltext_cnt; $i++) {
  159.         $j = $field_fulltext[$i];
  160.         if (!empty($field_name[$j])) {
  161.             if (get_magic_quotes_gpc()) {
  162.                 $field_name[$j] = stripslashes($field_name[$j]);
  163.             }
  164.            $fulltext .= PMA_backquote($field_name[$j]) . ', ';
  165.         }
  166.     } // end for
  167.     unset($field_fulltext);
  168.     $fulltext = ereg_replace(', $', '', $fulltext);
  169.     if (!empty($fulltext)) {
  170.         $sql_query .= ', FULLTEXT (' . $fulltext . ')';
  171.         $query_cpy .= ',' . "\n" . '  FULLTEXT (' . $fulltext . ')';
  172.     }
  173.     unset($fulltext);
  174.  
  175.     // Builds the 'create table' statement
  176.     $sql_query      = 'CREATE TABLE ' . PMA_backquote($table) . ' (' . $sql_query . ')';
  177.     $query_cpy      = 'CREATE TABLE ' . PMA_backquote($table) . ' (' . $query_cpy . "\n" . ')';
  178.  
  179.     // Adds table type and comments (2 May 2001 - Robbat2)
  180.     if (!empty($tbl_type) && ($tbl_type != 'Default')) {
  181.         $sql_query .= ' TYPE = ' . $tbl_type;
  182.         $query_cpy .= ' TYPE = ' . $tbl_type;
  183.     }
  184.     if (PMA_MYSQL_INT_VERSION >= 32300 && !empty($comment)) {
  185.         if (get_magic_quotes_gpc()) {
  186.             $comment = stripslashes($comment);
  187.         }
  188.         $sql_query .= ' COMMENT = \'' . PMA_sqlAddslashes($comment) . '\'';
  189.         $query_cpy .= "\n" . 'COMMENT = \'' . PMA_sqlAddslashes($comment) . '\'';
  190.     }
  191.  
  192.     // Executes the query
  193.     $result    = mysql_query($sql_query) or PMA_mysqlDie('', '', '', $err_url);
  194.     $sql_query = $query_cpy . ';';
  195.     unset($query_cpy);
  196.     $message   = $strTable . ' ' . htmlspecialchars($table) . ' ' . $strHasBeenCreated;
  197.     include('./tbl_properties.php');
  198.     exit();
  199. } // end do create table
  200.  
  201.  
  202. /**
  203.  * Displays the form used to define the structure of the table
  204.  */
  205. else {
  206.     if (isset($num_fields)) {
  207.         $num_fields = intval($num_fields);
  208.     }
  209.     // No table name
  210.     if (!isset($table) || trim($table) == '') {
  211.         PMA_mysqlDie($strTableEmpty, '', '', $err_url);
  212.     }
  213.     // No valid number of fields
  214.     else if (empty($num_fields) || !is_int($num_fields)) {
  215.         PMA_mysqlDie($strFieldsEmpty, '', '', $err_url);
  216.     }
  217.     // Table name and number of fields are valid -> show the form
  218.     else {
  219.         // Ensures the table name is valid
  220.         if (get_magic_quotes_gpc()) {
  221.             $table = stripslashes($table);
  222.         }
  223.         if (PMA_MYSQL_INT_VERSION < 32306) {
  224.             PMA_checkReservedWords($table, $err_url);
  225.         }
  226.  
  227.         $action = 'tbl_create.php';
  228.         include('./tbl_properties.inc.php');
  229.         // Diplays the footer
  230.         echo "\n";
  231.         include('./footer.inc.php');
  232.    }
  233. }
  234.  
  235. ?>
  236.