update
[phpmyadmin/crack.git] / tbl_create.php3
blob9ddcf99278594ca14a0e8789b688bd2fe594ef2e
1 <?php
2 /* $Id$ */
5 /**
6 * Get some core libraries
7 */
8 require('./libraries/grab_globals.lib.php3');
9 if (isset($submit)) {
10 $js_to_run = 'functions.js';
12 require('./header.inc.php3');
15 /**
16 * Defines the url to return to in case of error in a sql statement
18 $err_url = 'tbl_properties.php3'
19 . '?lang=' . $lang
20 . '&amp;convcharset=' . $convcharset
21 . '&amp;server=' . $server
22 . '&amp;db=' . urlencode($db)
23 . '&amp;table=' . urlencode($table);
26 /**
27 * Selects the database to work with
29 PMA_mysql_select_db($db);
32 /**
33 * The form used to define the structure of the table has been submitted
35 if (isset($submit)) {
36 $sql_query = $query_cpy = '';
38 // Transforms the radio button field_key into 3 arrays
39 $field_cnt = count($field_name);
40 for ($i = 0; $i < $field_cnt; ++$i) {
41 if (isset(${'field_key_' . $i})) {
42 if (${'field_key_' . $i} == 'primary_' . $i) {
43 $field_primary[] = $i;
45 if (${'field_key_' . $i} == 'index_' . $i) {
46 $field_index[] = $i;
48 if (${'field_key_' . $i} == 'unique_' . $i) {
49 $field_unique[] = $i;
51 } // end if
52 } // end for
53 // Builds the fields creation statements
54 for ($i = 0; $i < $field_cnt; $i++) {
55 if (empty($field_name[$i])) {
56 continue;
58 if (get_magic_quotes_gpc()) {
59 $field_name[$i] = stripslashes($field_name[$i]);
61 if (PMA_MYSQL_INT_VERSION < 32306) {
62 PMA_checkReservedWords($field_name[$i], $err_url);
64 $query = PMA_backquote($field_name[$i]) . ' ' . $field_type[$i];
65 if ($field_length[$i] != '') {
66 if (get_magic_quotes_gpc()) {
67 $query .= '(' . stripslashes($field_length[$i]) . ')';
68 } else {
69 $query .= '(' . $field_length[$i] . ')';
72 if ($field_attribute[$i] != '') {
73 $query .= ' ' . $field_attribute[$i];
75 if ($field_default[$i] != '') {
76 if (strtoupper($field_default[$i]) == 'NULL') {
77 $query .= ' DEFAULT NULL';
78 } else if (get_magic_quotes_gpc()) {
79 $query .= ' DEFAULT \'' . PMA_sqlAddslashes(stripslashes($field_default[$i])) . '\'';
80 } else {
81 $query .= ' DEFAULT \'' . PMA_sqlAddslashes($field_default[$i]) . '\'';
84 if ($field_null[$i] != '') {
85 $query .= ' ' . $field_null[$i];
87 if ($field_extra[$i] != '') {
88 $query .= ' ' . $field_extra[$i];
89 // An auto_increment field must be use as a primary key
90 if ($field_extra[$i] == 'AUTO_INCREMENT' && isset($field_primary)) {
91 $primary_cnt = count($field_primary);
92 for ($j = 0; $j < $primary_cnt && $field_primary[$j] != $i; $j++) {
93 // void
94 } // end for
95 if ($field_primary[$j] == $i) {
96 $query .= ' PRIMARY KEY';
97 unset($field_primary[$j]);
98 } // end if
99 } // end if (auto_increment)
101 $query .= ', ';
102 $sql_query .= $query;
103 $query_cpy .= "\n" . ' ' . $query;
104 } // end for
105 unset($field_cnt);
106 unset($query);
107 $sql_query = ereg_replace(', $', '', $sql_query);
108 $query_cpy = ereg_replace(', $', '', $query_cpy);
110 // Builds the primary keys statements
111 $primary = '';
112 $primary_cnt = (isset($field_primary) ? count($field_primary) : 0);
113 for ($i = 0; $i < $primary_cnt; $i++) {
114 $j = $field_primary[$i];
115 if (!empty($field_name[$j])) {
116 if (get_magic_quotes_gpc()) {
117 $field_name[$j] = stripslashes($field_name[$j]);
119 $primary .= PMA_backquote($field_name[$j]) . ', ';
121 } // end for
122 unset($primary_cnt);
123 $primary = ereg_replace(', $', '', $primary);
124 if (!empty($primary)) {
125 $sql_query .= ', PRIMARY KEY (' . $primary . ')';
126 $query_cpy .= ',' . "\n" . ' PRIMARY KEY (' . $primary . ')';
128 unset($primary);
130 // Builds the indexes statements
131 $index = '';
132 $index_cnt = (isset($field_index) ? count($field_index) : 0);
133 for ($i = 0;$i < $index_cnt; $i++) {
134 $j = $field_index[$i];
135 if (!empty($field_name[$j])) {
136 if (get_magic_quotes_gpc()) {
137 $field_name[$j] = stripslashes($field_name[$j]);
139 $index .= PMA_backquote($field_name[$j]) . ', ';
141 } // end for
142 unset($index_cnt);
143 $index = ereg_replace(', $', '', $index);
144 if (!empty($index)) {
145 $sql_query .= ', INDEX (' . $index . ')';
146 $query_cpy .= ',' . "\n" . ' INDEX (' . $index . ')';
148 unset($index);
150 // Builds the uniques statements
151 $unique = '';
152 $unique_cnt = (isset($field_unique) ? count($field_unique) : 0);
153 for ($i = 0; $i < $unique_cnt; $i++) {
154 $j = $field_unique[$i];
155 if (!empty($field_name[$j])) {
156 if (get_magic_quotes_gpc()) {
157 $field_name[$j] = stripslashes($field_name[$j]);
159 $unique .= PMA_backquote($field_name[$j]) . ', ';
161 } // end for
162 unset($unique_cnt);
163 $unique = ereg_replace(', $', '', $unique);
164 if (!empty($unique)) {
165 $sql_query .= ', UNIQUE (' . $unique . ')';
166 $query_cpy .= ',' . "\n" . ' UNIQUE (' . $unique . ')';
168 unset($unique);
170 // Builds the fulltextes statements
171 $fulltext = '';
172 $fulltext_cnt = (isset($field_fulltext) ? count($field_fulltext) : 0);
173 for ($i = 0; $i < $fulltext_cnt; $i++) {
174 $j = $field_fulltext[$i];
175 if (!empty($field_name[$j])) {
176 if (get_magic_quotes_gpc()) {
177 $field_name[$j] = stripslashes($field_name[$j]);
179 $fulltext .= PMA_backquote($field_name[$j]) . ', ';
181 } // end for
182 unset($field_fulltext);
183 $fulltext = ereg_replace(', $', '', $fulltext);
184 if (!empty($fulltext)) {
185 $sql_query .= ', FULLTEXT (' . $fulltext . ')';
186 $query_cpy .= ',' . "\n" . ' FULLTEXT (' . $fulltext . ')';
188 unset($fulltext);
190 // Builds the 'create table' statement
191 $sql_query = 'CREATE TABLE ' . PMA_backquote($table) . ' (' . $sql_query . ')';
192 $query_cpy = 'CREATE TABLE ' . PMA_backquote($table) . ' (' . $query_cpy . "\n" . ')';
194 // Adds table type and comments (2 May 2001 - Robbat2)
195 if (!empty($tbl_type) && ($tbl_type != 'Default')) {
196 $sql_query .= ' TYPE = ' . $tbl_type;
197 $query_cpy .= ' TYPE = ' . $tbl_type;
199 if (PMA_MYSQL_INT_VERSION >= 32300 && !empty($comment)) {
200 if (get_magic_quotes_gpc()) {
201 $comment = stripslashes($comment);
203 $sql_query .= ' COMMENT = \'' . PMA_sqlAddslashes($comment) . '\'';
204 $query_cpy .= "\n" . 'COMMENT = \'' . PMA_sqlAddslashes($comment) . '\'';
207 // Executes the query
208 $result = PMA_mysql_query($sql_query) or PMA_mysqlDie('', '', '', $err_url);
209 $sql_query = $query_cpy . ';';
210 unset($query_cpy);
211 $message = $strTable . ' ' . htmlspecialchars($table) . ' ' . $strHasBeenCreated;
212 include('./' . $cfg['DefaultTabTable']);
213 exit();
214 } // end do create table
218 * Displays the form used to define the structure of the table
220 else {
221 if (isset($num_fields)) {
222 $num_fields = intval($num_fields);
224 // No table name
225 if (!isset($table) || trim($table) == '') {
226 PMA_mysqlDie($strTableEmpty, '', '', $err_url);
228 // No valid number of fields
229 else if (empty($num_fields) || !is_int($num_fields)) {
230 PMA_mysqlDie($strFieldsEmpty, '', '', $err_url);
232 // Table name and number of fields are valid -> show the form
233 else {
234 // Ensures the table name is valid
235 if (get_magic_quotes_gpc()) {
236 $table = stripslashes($table);
238 if (PMA_MYSQL_INT_VERSION < 32306) {
239 PMA_checkReservedWords($table, $err_url);
242 $action = 'tbl_create.php3';
243 include('./tbl_properties.inc.php3');
244 // Diplays the footer
245 echo "\n";
246 include('./footer.inc.php3');