[ PHPXref.com ] [ Generated: Sun Jul 20 19:46:00 2008 ] [ phpMyAdmin 2.9.0.3 ]
[ Index ]     [ Variables ]     [ Functions ]     [ Classes ]     [ Constants ]     [ Statistics ]

title

Body

[close]

/ -> tbl_change.php (source)

   1  <?php
   2  /* $Id: tbl_change.php 9186 2006-07-16 13:28:27Z lem9 $ */
   3  // vim: expandtab sw=4 ts=4 sts=4:
   4  
   5  /**
   6   * Gets the variables sent or posted to this script and displays the header
   7   */
   8  require_once  './libraries/common.lib.php';
   9  
  10  /**
  11   * Sets global variables.
  12   * Here it's better to use a if, instead of the '?' operator
  13   * to avoid setting a variable to '' when it's not present in $_REQUEST
  14   */
  15  if (isset($_REQUEST['pos'])) {
  16      $pos =  $_REQUEST['pos'];
  17  }
  18  if (isset($_REQUEST['session_max_rows'])) {
  19      $session_max_rows = $_REQUEST['session_max_rows'];
  20  }
  21  if (isset($_REQUEST['disp_direction'])) {
  22      $disp_direction = $_REQUEST['disp_direction'];
  23  }
  24  if (isset($_REQUEST['repeat_cells'])) {
  25      $repeat_cells = $_REQUEST['repeat_cells'];
  26  }
  27  if (isset($_REQUEST['dontlimitchars'])) {
  28      $dontlimitchars = $_REQUEST['dontlimitchars'];
  29  }
  30  if (isset($_REQUEST['primary_key'])) {
  31      $primary_key = $_REQUEST['primary_key'];
  32  }
  33  if (isset($_REQUEST['sql_query'])) {
  34      $sql_query = $_REQUEST['sql_query'];
  35  }
  36  
  37  
  38  $js_to_run = 'tbl_change.js';
  39  require_once  './libraries/header.inc.php';
  40  require_once  './libraries/relation.lib.php'; // foreign keys
  41  require_once  './libraries/file_listing.php'; // file listing
  42  
  43  
  44  /**
  45   * Displays the query submitted and its result
  46   */
  47  if (!empty($disp_message)) {
  48      if (isset($goto)) {
  49          $goto_cpy      = $goto;
  50          $goto          = 'tbl_properties.php?'
  51                         . PMA_generate_common_url($db, $table)
  52                         . '&amp;$show_query=1'
  53                         . '&amp;sql_query=' . (isset($disp_query) ? urlencode($disp_query) : '');
  54      } else {
  55          $show_query = '1';
  56      }
  57      if (isset($sql_query)) {
  58          $sql_query_cpy = $sql_query;
  59          unset($sql_query);
  60      }
  61      if (isset($disp_query)) {
  62          $sql_query     = $disp_query;
  63      }
  64      PMA_showMessage($disp_message);
  65      if (isset($goto_cpy)) {
  66          $goto          = $goto_cpy;
  67          unset($goto_cpy);
  68      }
  69      if (isset($sql_query_cpy)) {
  70          $sql_query     = $sql_query_cpy;
  71          unset($sql_query_cpy);
  72      }
  73  }
  74  
  75  
  76  /**
  77   * Defines the url to return to in case of error in a sql statement
  78   * (at this point, $goto might be set but empty)
  79   */
  80  if (empty($goto)) {
  81      $goto    = 'db_details.php';
  82  }
  83  // TODO: check if we could replace by "db_details|tbl"
  84  if (!preg_match('@^(db_details|tbl_properties|tbl_select|tbl_import)@', $goto)) {
  85      $err_url = $goto . "?" . PMA_generate_common_url($db) . "&amp;sql_query=" . urlencode($sql_query);
  86  } else {
  87      $err_url = $goto . '?'
  88               . PMA_generate_common_url($db)
  89               . ((preg_match('@^(tbl_properties|tbl_select)@', $goto)) ? '&amp;table=' . urlencode($table) : '');
  90  }
  91  
  92  
  93  /**
  94   * Ensures db and table are valid, else moves to the "parent" script
  95   */
  96  require_once  './libraries/db_table_exists.lib.php';
  97  
  98  
  99  /**
 100   * Sets parameters for links
 101   */
 102  $url_query = PMA_generate_common_url($db, $table)
 103             . '&amp;goto=tbl_properties.php';
 104  
 105  require_once  './libraries/tbl_properties_table_info.inc.php';
 106  
 107  /* Get comments */
 108  
 109  $comments_map = array();
 110  
 111  if ($GLOBALS['cfg']['ShowPropertyComments']) {
 112      require_once  './libraries/relation.lib.php';
 113      require_once  './libraries/transformations.lib.php';
 114  
 115      $cfgRelation = PMA_getRelationsParam();
 116  
 117      if ($cfgRelation['commwork'] || PMA_MYSQL_INT_VERSION >= 40100) {
 118          $comments_map = PMA_getComments($db, $table);
 119      }
 120  }
 121  
 122  /**
 123   * Displays top menu links
 124   */
 125  require_once  './libraries/tbl_properties_links.inc.php';
 126  
 127  
 128  /**
 129   * Get the analysis of SHOW CREATE TABLE for this table
 130   */
 131  $show_create_table = PMA_DBI_fetch_value(
 132          'SHOW CREATE TABLE ' . PMA_backquote($db) . '.' . PMA_backquote($table),
 133          0, 1 );
 134  $analyzed_sql = PMA_SQP_analyze( PMA_SQP_parse( $show_create_table ) );
 135  unset($show_create_table);
 136  
 137  /**
 138   * Get the list of the fields of the current table
 139   */
 140  PMA_DBI_select_db($db);
 141  $table_def = PMA_DBI_query('SHOW FIELDS FROM ' . PMA_backquote($table) . ';', null, PMA_DBI_QUERY_STORE);
 142  if (isset($primary_key)) {
 143      if (is_array($primary_key)) {
 144          $primary_key_array = $primary_key;
 145      } else {
 146          $primary_key_array = array(0 => $primary_key);
 147      }
 148  
 149      $row = array();
 150      $result = array();
 151      foreach ($primary_key_array AS $rowcount => $primary_key) {
 152          $local_query             = 'SELECT * FROM ' . PMA_backquote($table) . ' WHERE ' . $primary_key . ';';
 153          $result[$rowcount]       = PMA_DBI_query($local_query, null, PMA_DBI_QUERY_STORE);
 154          $row[$rowcount]          = PMA_DBI_fetch_assoc($result[$rowcount]);
 155          $primary_keys[$rowcount] = $primary_key;
 156  
 157          // No row returned
 158          if (!$row[$rowcount]) {
 159              unset($row[$rowcount]);
 160              unset($primary_key_array[$rowcount]);
 161              $goto_cpy          = $goto;
 162              $goto              = 'tbl_properties.php?'
 163                                 . PMA_generate_common_url($db, $table)
 164                                 . '&amp;$show_query=1'
 165                                 . '&amp;sql_query=' . urlencode($local_query);
 166              if (isset($sql_query)) {
 167                  $sql_query_cpy = $sql_query;
 168                  unset($sql_query);
 169              }
 170              $sql_query         = $local_query;
 171              PMA_showMessage($strEmptyResultSet);
 172              $goto              = $goto_cpy;
 173              unset($goto_cpy);
 174              if (isset($sql_query_cpy)) {
 175                  $sql_query    = $sql_query_cpy;
 176                  unset($sql_query_cpy);
 177              }
 178              echo "\n";
 179              require_once  './libraries/footer.inc.php';
 180          } // end if (no record returned)
 181      }
 182  } else {
 183      $result = PMA_DBI_query('SELECT * FROM ' . PMA_backquote($table) . ' LIMIT 1;', null, PMA_DBI_QUERY_STORE);
 184      unset($row);
 185  }
 186  
 187  // <markus@noga.de>
 188  // retrieve keys into foreign fields, if any
 189  $cfgRelation = PMA_getRelationsParam();
 190  $foreigners  = ($cfgRelation['relwork'] ? PMA_getForeigners($db, $table) : FALSE);
 191  
 192  
 193  /**
 194   * Displays the form
 195   */
 196  // loic1: autocomplete feature of IE kills the "onchange" event handler and it
 197  //        must be replaced by the "onpropertychange" one in this case
 198  $chg_evt_handler = (PMA_USR_BROWSER_AGENT == 'IE' && PMA_USR_BROWSER_VER >= 5)
 199                   ? 'onpropertychange'
 200                   : 'onchange';
 201  // Had to put the URI because when hosted on an https server,
 202  // some browsers send wrongly this form to the http server.
 203  ?>
 204  
 205  <?php if ($cfg['CtrlArrowsMoving']) { ?>
 206  <!-- Set on key handler for moving using by Ctrl+arrows -->
 207  <script src="./js/keyhandler.js" type="text/javascript" language="javascript"></script>
 208  <script type="text/javascript" language="javascript">
 209  //<![CDATA[
 210  var switch_movement = 0;
 211  document.onkeydown = onKeyDownArrowsHandler;
 212  //]]>
 213  </script>
 214  <?php } ?>
 215  
 216  <!-- Change table properties form -->
 217  <form method="post" action="tbl_replace.php" name="insertForm" <?php if ($is_upload) { echo ' enctype="multipart/form-data"'; } ?>>
 218      <?php echo PMA_generate_common_hidden_inputs($db, $table); ?>
 219      <input type="hidden" name="goto" value="<?php echo urlencode($goto); ?>" />
 220      <input type="hidden" name="pos" value="<?php echo isset($pos) ? $pos : 0; ?>" />
 221      <input type="hidden" name="session_max_rows" value="<?php echo isset($session_max_rows) ? $session_max_rows : ''; ?>" />
 222      <input type="hidden" name="disp_direction" value="<?php echo isset($disp_direction) ? $disp_direction : ''; ?>" />
 223      <input type="hidden" name="repeat_cells" value="<?php echo isset($repeat_cells) ? $repeat_cells : ''; ?>" />
 224      <input type="hidden" name="dontlimitchars" value="<?php echo (isset($dontlimitchars) ? $dontlimitchars : 0); ?>" />
 225      <input type="hidden" name="err_url" value="<?php echo urlencode($err_url); ?>" />
 226      <input type="hidden" name="sql_query" value="<?php echo isset($sql_query) ? urlencode($sql_query) : ''; ?>" />
 227  <?php
 228  if (isset($primary_key_array)) {
 229      foreach ($primary_key_array AS $primary_key) {
 230          ?>
 231      <input type="hidden" name="primary_key[]" value="<?php echo urlencode($primary_key); ?>" />
 232  <?php
 233      }
 234  }
 235  echo "\n";
 236  
 237  if ($cfg['PropertiesIconic'] == true) {
 238      // We need to copy the value or else the == 'both' check will always return true
 239      $propicon = (string)$cfg['PropertiesIconic'];
 240  
 241      if ($propicon == 'both') {
 242          $iconic_spacer = '<div class="nowrap">';
 243      } else {
 244          $iconic_spacer = '';
 245      }
 246  
 247      $titles['Browse']     = $iconic_spacer . '<img width="16" height="16" src="' . $pmaThemeImage . 'b_browse.png" alt="' . $strBrowseForeignValues . '" title="' . $strBrowseForeignValues . '" border="0" />';
 248  
 249      if ($propicon == 'both') {
 250          $titles['Browse']        .= '&nbsp;' . $strBrowseForeignValues . '</div>';
 251      }
 252  } else {
 253      $titles['Browse']        = $strBrowseForeignValues;
 254  }
 255  
 256  // Set if we passed the first timestamp field
 257  $timestamp_seen = 0;
 258  $fields_cnt     = PMA_DBI_num_rows($table_def);
 259  
 260  // Set a flag here because the 'if' would not be valid in the loop
 261  // if we set a value in some field
 262  $insert_mode = (!isset($row) ? TRUE : FALSE);
 263  if ($insert_mode) {
 264      $loop_array  = array();
 265      for ($i = 0; $i < $cfg['InsertRows']; $i++) $loop_array[] = FALSE;
 266  } else {
 267      $loop_array  = $row;
 268  }
 269  
 270  while ($trow = PMA_DBI_fetch_assoc($table_def)) {
 271      $trow_table_def[] = $trow;
 272  }
 273  
 274  $tabindex = 0;
 275  $tabindex_for_function = +1000;
 276  $tabindex_for_null     = +2000;
 277  $tabindex_for_value    = 0;
 278  $o_rows   = 0;
 279  $biggest_max_file_size = 0;
 280  foreach ($loop_array AS $vrowcount => $vrow) {
 281      if ($vrow === FALSE) {
 282          unset($vrow);
 283      }
 284  
 285      if ($insert_mode) {
 286          $jsvkey = $vrowcount;
 287          $browse_foreigners_uri = '&amp;pk=' . $vrowcount;
 288      } else {
 289          $jsvkey = urlencode($primary_keys[$vrowcount]);
 290          $browse_foreigners_uri = '&amp;pk=' . urlencode($primary_keys[$vrowcount]);
 291      }
 292      $vkey = '[multi_edit][' . $jsvkey . ']';
 293  
 294      $vresult = (isset($result) && is_array($result) && isset($result[$vrowcount]) ? $result[$vrowcount] : $result);
 295      if ($insert_mode && $vrowcount > 0) {
 296          echo '<input type="checkbox" checked="checked" name="insert_ignore_' . $vrowcount . '" id="insert_ignore_check_' . $vrowcount . '" />';
 297          echo '<label for="insert_ignore_check_' . $vrowcount . '">' . $strIgnore . '</label><br />' . "\n";
 298      }
 299  ?>
 300      <table>
 301          <tr>
 302              <th><?php echo $strField; ?></th>
 303              <th><?php echo $strType; ?></th>
 304  <?php
 305      if ($cfg['ShowFunctionFields']) {
 306          echo '          <th>' . $strFunction . '</th>' . "\n";
 307      }
 308  ?>
 309              <th><?php echo $strNull; ?></th>
 310              <th><?php echo $strValue; ?></th>
 311          </tr>
 312  <?php
 313  
 314      // garvin: For looping on multiple rows, we need to reset any variable used inside the loop to indicate sth.
 315      $timestamp_seen = 0;
 316      unset($first_timestamp);
 317  
 318      // Sets a multiplier used for input-field counts (as zero cannot be used, advance the counter plus one)
 319      $m_rows = $o_rows + 1;
 320  
 321      $odd_row = true;
 322      for ($i = 0; $i < $fields_cnt; $i++) {
 323          // Display the submit button after every 15 lines --swix
 324          // (wanted to use an <a href="#bottom"> and <a name> instead,
 325          // but it didn't worked because of the <base href>)
 326  
 327          if ((($o_rows * $fields_cnt + $i) % 15 == 0) && ($i + $o_rows != 0)) {
 328              ?>
 329          <tr>
 330              <th colspan="5" align="right" class="tblFooters">
 331                  <input type="submit" value="<?php echo $strGo; ?>" />&nbsp;
 332              </th>
 333          </tr>
 334              <?php
 335          } // end if
 336          echo "\n";
 337  
 338          $row_table_def   = $trow_table_def[$i];
 339          $row_table_def['True_Type'] = preg_replace('@\(.*@s', '', $row_table_def['Type']);
 340  
 341          $field           = $row_table_def['Field'];
 342  
 343          // removed previous PHP3-workaround that caused a problem with
 344          // field names like '000'
 345          $rowfield = $field;
 346  
 347          // d a t e t i m e
 348          //
 349          // loic1: current date should not be set as default if the field is NULL
 350          //        for the current row
 351          // lem9:  but do not put here the current datetime if there is a default
 352          //        value (the real default value will be set in the
 353          //        Default value logic below)
 354  
 355          // Note: (tested in MySQL 4.0.16): when lang is some UTF-8,
 356          // $row_table_def['Default'] is not set if it contains NULL:
 357          // Array ( [Field] => d [Type] => datetime [Null] => YES [Key] => [Extra] => [True_Type] => datetime )
 358          // but, look what we get if we switch to iso: (Default is NULL)
 359          // Array ( [Field] => d [Type] => datetime [Null] => YES [Key] => [Default] => [Extra] => [True_Type] => datetime )
 360          // so I force a NULL into it (I don't think it's possible
 361          // to have an empty default value for DATETIME)
 362          // then, the "if" after this one will work
 363          if ($row_table_def['Type'] == 'datetime'
 364              && !isset($row_table_def['Default'])
 365              && isset($row_table_def['Null'])
 366              && $row_table_def['Null'] == 'YES') {
 367              $row_table_def['Default'] = null;
 368          }
 369  
 370          if ($row_table_def['Type'] == 'datetime'
 371              && (!isset($row_table_def['Default']))
 372              && (!is_null($row_table_def['Default']))) {
 373              // INSERT case
 374              if ($insert_mode) {
 375                  if (isset($vrow)) {
 376                      $vrow[$rowfield] = date('Y-m-d H:i:s', time());
 377                  } else {
 378                      $vrow = array($rowfield => date('Y-m-d H:i:s', time()));
 379                  }
 380              }
 381              // UPDATE case with an empty and not NULL value under PHP4
 382              elseif (empty($vrow[$rowfield]) && is_null($vrow[$rowfield])) {
 383                  $vrow[$rowfield] = date('Y-m-d H:i:s', time());
 384              } // end if... elseif...
 385          }
 386          $len             = (preg_match('@float|double@', $row_table_def['Type']))
 387                           ? 100
 388                           : PMA_DBI_field_len($vresult, $i);
 389          $first_timestamp = 0;
 390  
 391          $field_name = htmlspecialchars($field);
 392          if (isset($comments_map[$field])) {
 393              $field_name = '<span style="border-bottom: 1px dashed black;" title="' . htmlspecialchars($comments_map[$field]) . '">' . $field_name . '</span>';
 394          }
 395  
 396          ?>
 397          <tr class="<?php echo $odd_row ? 'odd' : 'even'; ?>">
 398              <td <?php echo ($cfg['LongtextDoubleTextarea'] && strstr($row_table_def['True_Type'], 'longtext') ? 'rowspan="2"' : ''); ?> align="center"><?php echo $field_name; ?></td>
 399  
 400          <?php
 401          // The type column
 402          $is_binary                  = stristr($row_table_def['Type'], ' binary');
 403          $is_blob                    = stristr($row_table_def['Type'], 'blob');
 404          $is_char                    = stristr($row_table_def['Type'], 'char');
 405          switch ($row_table_def['True_Type']) {
 406              case 'set':
 407                  $type         = 'set';
 408                  $type_nowrap  = '';
 409                  break;
 410              case 'enum':
 411                  $type         = 'enum';
 412                  $type_nowrap  = '';
 413                  break;
 414              case 'timestamp':
 415                  if (!$timestamp_seen) {   // can only occur once per table
 416                      $timestamp_seen  = 1;
 417                      $first_timestamp = 1;
 418                  }
 419                  $type         = $row_table_def['Type'];
 420                  $type_nowrap  = ' nowrap="nowrap"';
 421                  break;
 422  
 423              default:
 424                  $type         = $row_table_def['Type'];
 425                  $type_nowrap  = ' nowrap="nowrap"';
 426                  break;
 427          }
 428          ?>
 429              <td align="center"<?php echo $type_nowrap; ?>>
 430                  <?php echo $type; ?>
 431              </td>
 432  
 433          <?php
 434  
 435          // Prepares the field value
 436          $real_null_value = FALSE;
 437          if (isset($vrow)) {
 438              if (!isset($vrow[$rowfield])
 439                || (function_exists('is_null') && is_null($vrow[$rowfield]))) {
 440                  $real_null_value = TRUE;
 441                  $vrow[$rowfield]   = '';
 442                  $special_chars = '';
 443                  $data          = $vrow[$rowfield];
 444              } else {
 445                  // loic1: special binary "characters"
 446                  if ($is_binary || $is_blob) {
 447                      $vrow[$rowfield] = str_replace("\x00", '\0', $vrow[$rowfield]);
 448                      $vrow[$rowfield] = str_replace("\x08", '\b', $vrow[$rowfield]);
 449                      $vrow[$rowfield] = str_replace("\x0a", '\n', $vrow[$rowfield]);
 450                      $vrow[$rowfield] = str_replace("\x0d", '\r', $vrow[$rowfield]);
 451                      $vrow[$rowfield] = str_replace("\x1a", '\Z', $vrow[$rowfield]);
 452                  } // end if
 453                  $special_chars   = htmlspecialchars($vrow[$rowfield]);
 454                  $data            = $vrow[$rowfield];
 455              } // end if... else...
 456              // loic1: if a timestamp field value is not included in an update
 457              //        statement MySQL auto-update it to the current timestamp
 458              $backup_field  = ($row_table_def['True_Type'] == 'timestamp')
 459                             ? ''
 460                             : '<input type="hidden" name="fields_prev' . $vkey . '[' . urlencode($field) . ']" value="' . urlencode($vrow[$rowfield]) . '" />';
 461          } else {
 462              // loic1: display default values
 463              if (!isset($row_table_def['Default'])) {
 464                  $row_table_def['Default'] = '';
 465                  $real_null_value          = TRUE;
 466                  $data                     = '';
 467              } else {
 468                  $data                     = $row_table_def['Default'];
 469              }
 470              $special_chars = htmlspecialchars($row_table_def['Default']);
 471              $backup_field  = '';
 472          }
 473  
 474          $idindex  = ($o_rows * $fields_cnt) + $i + 1;
 475          $tabindex = (($idindex - 1) * 3) + 1;
 476  
 477          // The function column
 478          // -------------------
 479          // Change by Bernard M. Piller <bernard@bmpsystems.com>
 480          // We don't want binary data to be destroyed
 481          // Note: from the MySQL manual: "BINARY doesn't affect how the column is
 482          //       stored or retrieved" so it does not mean that the contents is
 483          //       binary
 484          if ($cfg['ShowFunctionFields']) {
 485              if (($cfg['ProtectBinary'] && $is_blob && !$is_upload)
 486                  || ($cfg['ProtectBinary'] == 'all' && $is_binary)) {
 487                  echo '        <td align="center">' . $strBinary . '</td>' . "\n";
 488              } elseif (strstr($row_table_def['True_Type'], 'enum') || strstr($row_table_def['True_Type'], 'set')) {
 489                  echo '        <td align="center">--</td>' . "\n";
 490              } else {
 491                  ?>
 492              <td>
 493                  <select name="funcs<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" <?php echo $chg_evt_handler; ?>="return unNullify('<?php echo urlencode($field); ?>', '<?php echo $jsvkey; ?>')" tabindex="<?php echo ($tabindex + $tabindex_for_function); ?>" id="field_<?php echo $idindex; ?>_1">
 494                      <option></option>
 495                  <?php
 496                  $selected     = '';
 497  
 498                  // garvin: Find the current type in the RestrictColumnTypes. Will result in 'FUNC_CHAR'
 499                  // or something similar. Then directly look up the entry in the RestrictFunctions array,
 500                  // which will then reveal the available dropdown options
 501                  if (isset($cfg['RestrictFunctions']) && isset($cfg['RestrictColumnTypes']) && isset($cfg['RestrictColumnTypes'][strtoupper($row_table_def['True_Type'])]) && isset($cfg['RestrictFunctions'][$cfg['RestrictColumnTypes'][strtoupper($row_table_def['True_Type'])]])) {
 502                      $current_func_type  = $cfg['RestrictColumnTypes'][strtoupper($row_table_def['True_Type'])];
 503                      $dropdown           = $cfg['RestrictFunctions'][$current_func_type];
 504                      $default_function   = $cfg['DefaultFunctions'][$current_func_type];
 505                  } else {
 506                      $dropdown = array();
 507                      $default_function   = '';
 508                  }
 509  
 510                  $dropdown_built = array();
 511                  $op_spacing_needed = FALSE;
 512                  // garvin: loop on the dropdown array and print all available options for that field.
 513                  $cnt_dropdown = count($dropdown);
 514                  for ($j = 0; $j < $cnt_dropdown; $j++) {
 515                      // Is current function defined as default?
 516                      // For MySQL < 4.1.2, for the first timestamp we set as
 517                      // default function the one defined in config (which
 518                      // should be NOW() ).
 519                      // For MySQL >= 4.1.2, we don't set the default function
 520                      // if there is a default value for the timestamp
 521                      // (not including CURRENT_TIMESTAMP)
 522                      // and the column does not have the
 523                      // ON UPDATE DEFAULT TIMESTAMP attribute.
 524  
 525                      if (PMA_MYSQL_INT_VERSION < 40102
 526                      || (PMA_MYSQL_INT_VERSION >= 40102
 527                         && !($row_table_def['True_Type'] == 'timestamp' && !empty($row_table_def['Default']) &&  !isset($analyzed_sql[0]['create_table_fields'][$field]['on_update_current_timestamp'])))) {
 528                      $selected = ($first_timestamp && $dropdown[$j] == $cfg['DefaultFunctions']['first_timestamp'])
 529                                  || (!$first_timestamp && $dropdown[$j] == $default_function)
 530                                ? ' selected="selected"'
 531                                : '';
 532                  }
 533                      echo '                ';
 534                      echo '<option' . $selected . '>' . $dropdown[$j] . '</option>' . "\n";
 535                      $dropdown_built[$dropdown[$j]] = 'TRUE';
 536                      $op_spacing_needed = TRUE;
 537                  }
 538  
 539                  // garvin: For compatibility's sake, do not let out all other functions. Instead
 540                  // print a separator (blank) and then show ALL functions which weren't shown
 541                  // yet.
 542                  $cnt_functions = count($cfg['Functions']);
 543                  for ($j = 0; $j < $cnt_functions; $j++) {
 544                      if (!isset($dropdown_built[$cfg['Functions'][$j]]) || $dropdown_built[$cfg['Functions'][$j]] != 'TRUE') {
 545                          // Is current function defined as default?
 546                          $selected = ($first_timestamp && $cfg['Functions'][$j] == $cfg['DefaultFunctions']['first_timestamp'])
 547                                      || (!$first_timestamp && $cfg['Functions'][$j] == $default_function)
 548                                    ? ' selected="selected"'
 549                                    : '';
 550                          if ($op_spacing_needed == TRUE) {
 551                              echo '                ';
 552                              echo '<option value="">--------</option>' . "\n";
 553                              $op_spacing_needed = FALSE;
 554                          }
 555  
 556                          echo '                ';
 557                          echo '<option' . $selected . '>' . $cfg['Functions'][$j] . '</option>' . "\n";
 558                      }
 559                  } // end for
 560                  unset($selected);
 561                  ?>
 562                  </select>
 563              </td>
 564                  <?php
 565              }
 566          } // end if ($cfg['ShowFunctionFields'])
 567  
 568  
 569          // The null column
 570          // ---------------
 571          echo '        <td>' . "\n";
 572          if ($row_table_def['Null'] == 'YES') {
 573              echo '            <input type="hidden" name="fields_null_prev' . $vkey . '[' . urlencode($field) . ']"';
 574              if ($real_null_value && !$first_timestamp) {
 575                  echo ' value="on"';
 576              }
 577              echo ' />' . "\n";
 578  
 579              if (!(($cfg['ProtectBinary'] && $is_blob) || ($cfg['ProtectBinary'] == 'all' && $is_binary)) ) {
 580  
 581                  echo '            <input type="checkbox" tabindex="' . ($tabindex + $tabindex_for_null) . '"'
 582                       . ' name="fields_null' . $vkey . '[' . urlencode($field) . ']"';
 583                  if ($real_null_value && !$first_timestamp) {
 584                      echo ' checked="checked"';
 585                  }
 586                  echo ' id="field_' . ($idindex) . '_2"';
 587                  $onclick         = ' onclick="if (this.checked) {nullify(';
 588                  if (strstr($row_table_def['True_Type'], 'enum')) {
 589                      if (strlen($row_table_def['Type']) > 20) {
 590                          $onclick .= '1, ';
 591                      } else {
 592                          $onclick .= '2, ';
 593                      }
 594                  } elseif (strstr($row_table_def['True_Type'], 'set')) {
 595                      $onclick     .= '3, ';
 596                  } elseif ($foreigners && isset($foreigners[$field])) {
 597                      $onclick     .= '4, ';
 598                  } else {
 599                      $onclick     .= '5, ';
 600                  }
 601                  $onclick         .= '\'' . urlencode($field) . '\', \'' . md5($field) . '\', \'' . $vkey . '\'); this.checked = true}; return true" />' . "\n";
 602                  echo $onclick;
 603              } else {
 604                  echo '            <input type="hidden" name="fields_null' . $vkey . '[' . urlencode($field) . ']"';
 605                  if ($real_null_value && !$first_timestamp) {
 606                      echo ' value="on"';
 607                  }
 608                  echo ' />' . "\n";
 609              }
 610          }
 611          echo '        </td>' . "\n";
 612  
 613          // The value column (depends on type)
 614          // ----------------
 615  
 616          require  './libraries/get_foreign.lib.php';
 617  
 618          if (isset($foreign_link) && $foreign_link == true) {
 619              ?>
 620              <td>
 621              <?php echo $backup_field . "\n"; ?>
 622              <input type="hidden" name="fields_type<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" value="foreign" />
 623              <input type="hidden" name="fields<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" value="" id="field_<?php echo ($idindex); ?>_1" />
 624              <input type="text"   name="field_<?php echo md5($field); ?><?php echo $vkey; ?>[]" class="textfield" <?php echo $chg_evt_handler; ?>="return unNullify('<?php echo urlencode($field); ?>', '<?php echo $jsvkey; ?>')" tabindex="<?php echo ($tabindex + $tabindex_for_value); ?>" id="field_<?php echo ($idindex); ?>_3" value="<?php echo htmlspecialchars($data); ?>" />
 625              <script type="text/javascript" language="javascript">
 626              //<![CDATA[
 627                  document.writeln('<a target="_blank" onclick="window.open(this.href, \'foreigners\', \'width=640,height=240,scrollbars=yes,resizable=yes\'); return false" href="browse_foreigners.php?<?php echo PMA_generate_common_url($db, $table); ?>&amp;field=<?php echo urlencode($field) . $browse_foreigners_uri; ?>"><?php echo str_replace("'", "\'", $titles['Browse']); ?></a>');
 628              //]]>
 629              </script>
 630              </td>
 631              <?php
 632          } elseif (isset($disp_row) && is_array($disp_row)) {
 633              ?>
 634              <td>
 635              <?php echo $backup_field . "\n"; ?>
 636              <input type="hidden" name="fields_type<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" value="foreign" />
 637              <input type="hidden" name="fields<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" value="" id="field_<?php echo $idindex; ?>_1" />
 638              <select name="field_<?php echo md5($field); ?><?php echo $vkey; ?>[]" <?php echo $chg_evt_handler; ?>="return unNullify('<?php echo urlencode($field); ?>', '<?php echo $jsvkey; ?>')" tabindex="<?php echo ($tabindex + $tabindex_for_value); ?>" id="field_<?php echo ($idindex); ?>_3">
 639                  <?php echo PMA_foreignDropdown($disp_row, $foreign_field, $foreign_display, $data, $cfg['ForeignKeyMaxLimit']); ?>
 640              </select>
 641              </td>
 642              <?php
 643              unset($disp_row);
 644          } elseif ($cfg['LongtextDoubleTextarea'] && strstr($type, 'longtext')) {
 645              ?>
 646              <td>&nbsp;</td>
 647          </tr>
 648          <tr class="<?php echo $odd_row ? 'odd' : 'even'; ?>">
 649              <td colspan="5" align="right">
 650                  <?php echo $backup_field . "\n"; ?>
 651                  <textarea name="fields<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" rows="<?php echo ($cfg['TextareaRows']*2); ?>" cols="<?php echo ($cfg['TextareaCols']*2); ?>" dir="<?php echo $text_dir; ?>" id="field_<?php echo ($idindex); ?>_3"
 652                      <?php echo $chg_evt_handler; ?>="return unNullify('<?php echo urlencode($field); ?>', '<?php echo $jsvkey; ?>')" tabindex="<?php echo ($tabindex + $tabindex_for_value); ?>"><?php echo $special_chars; ?></textarea>
 653              </td>
 654            <?php
 655          } elseif (strstr($type, 'text')) {
 656              ?>
 657              <td>
 658                  <?php echo $backup_field . "\n"; ?>
 659                  <textarea name="fields<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" rows="<?php echo $cfg['TextareaRows']; ?>" cols="<?php echo $cfg['TextareaCols']; ?>" dir="<?php echo $text_dir; ?>" id="field_<?php echo ($idindex); ?>_3"
 660                      <?php echo $chg_evt_handler; ?>="return unNullify('<?php echo urlencode($field); ?>', '<?php echo $jsvkey; ?>')" tabindex="<?php echo ($tabindex + $tabindex_for_value); ?>"><?php echo $special_chars; ?></textarea>
 661              </td>
 662              <?php
 663              echo "\n";
 664              if (strlen($special_chars) > 32000) {
 665                  echo '        <td>' . $strTextAreaLength . '</td>' . "\n";
 666              }
 667          } elseif ($type == 'enum') {
 668              $enum        = PMA_getEnumSetOptions($row_table_def['Type']);
 669              $enum_cnt    = count($enum);
 670              ?>
 671              <td>
 672                  <input type="hidden" name="fields_type<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" value="enum" />
 673                  <input type="hidden" name="fields<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" value="" />
 674              <?php
 675              echo "\n" . '            ' . $backup_field;
 676  
 677              // show dropdown or radio depend on length
 678              if (strlen($row_table_def['Type']) > 20) {
 679                  echo "\n";
 680                  ?>
 681                  <select name="field_<?php echo md5($field); ?><?php echo $vkey; ?>[]" <?php echo $chg_evt_handler; ?>="return unNullify('<?php echo urlencode($field); ?>', '<?php echo $jsvkey; ?>')" tabindex="<?php echo ($tabindex + $tabindex_for_value); ?>" id="field_<?php echo ($idindex); ?>_3">
 682                      <option value=""></option>
 683                  <?php
 684                  echo "\n";
 685  
 686                  for ($j = 0; $j < $enum_cnt; $j++) {
 687                      // Removes automatic MySQL escape format
 688                      $enum_atom = str_replace('\'\'', '\'', str_replace('\\\\', '\\', $enum[$j]));
 689                      echo '                ';
 690                      //echo '<option value="' . htmlspecialchars($enum_atom) . '"';
 691                      echo '<option value="' . urlencode($enum_atom) . '"';
 692                      if ($data == $enum_atom
 693                          || ($data == '' && (!isset($primary_key) || $row_table_def['Null'] != 'YES')
 694                              && isset($row_table_def['Default']) && $enum_atom == $row_table_def['Default'])) {
 695                          echo ' selected="selected"';
 696                      }
 697                      echo '>' . htmlspecialchars($enum_atom) . '</option>' . "\n";
 698                  } // end for
 699  
 700                  ?>
 701                  </select>
 702                  <?php
 703              } else {
 704                  echo "\n";
 705                  for ($j = 0; $j < $enum_cnt; $j++) {
 706                      // Removes automatic MySQL escape format
 707                      $enum_atom = str_replace('\'\'', '\'', str_replace('\\\\', '\\', $enum[$j]));
 708                      echo '            ';
 709                      echo '<input type="radio" name="field_' . md5($field) . $vkey . '[]" value="' . urlencode($enum_atom) . '" id="field_' . ($idindex) . '_3_'  . $j . '" onclick="if (typeof(document.forms[\'insertForm\'].elements[\'fields_null' . str_replace('"', '\"', $vkey) . '[' . urlencode($field) . ']\']) != \'undefined\') {document.forms[\'insertForm\'].elements[\'fields_null' . str_replace('"', '\"', $vkey) . '[' . urlencode($field) .']\'].checked = false}"';
 710                      if ($data == $enum_atom
 711                          || ($data == '' && (!isset($primary_key) || $row_table_def['Null'] != 'YES')
 712                              && isset($row_table_def['Default']) && $enum_atom == $row_table_def['Default'])) {
 713                          echo ' checked="checked"';
 714                      }
 715                      echo 'tabindex="' . ($tabindex + $tabindex_for_value) . '" />';
 716                      echo '<label for="field_' . $idindex . '_3_' . $j . '">' . htmlspecialchars($enum_atom) . '</label>' . "\n";
 717                  } // end for
 718  
 719              } // end else
 720              echo "\n";
 721              ?>
 722              </td>
 723              <?php
 724              echo "\n";
 725          } elseif ($type == 'set') {
 726              $set = PMA_getEnumSetOptions($row_table_def['Type']);
 727  
 728              if (isset($vset)) {
 729                  unset($vset);
 730              }
 731              for ($vals = explode(',', $data); list($t, $k) = each($vals);) {
 732                  $vset[$k] = 1;
 733              }
 734              $countset = count($set);
 735              $size = min(4, $countset);
 736              ?>
 737              <td>
 738                  <?php echo $backup_field . "\n"; ?>
 739                  <input type="hidden" name="fields_type<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" value="set" />
 740                  <input type="hidden" name="fields<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" value="" />
 741                  <select name="field_<?php echo md5($field); ?><?php echo $vkey; ?>[]" size="<?php echo $size; ?>" multiple="multiple" <?php echo $chg_evt_handler; ?>="return unNullify('<?php echo urlencode($field); ?>', '<?php echo $jsvkey; ?>')" tabindex="<?php echo ($tabindex + $tabindex_for_value); ?>" id="field_<?php echo ($idindex); ?>_3">
 742              <?php
 743              echo "\n";
 744              for ($j = 0; $j < $countset; $j++) {
 745                  echo '                ';
 746                  //echo '<option value="'. htmlspecialchars($set[$j]) . '"';
 747                  echo '<option value="'. urlencode($set[$j]) . '"';
 748                  if (isset($vset[$set[$j]]) && $vset[$set[$j]]) {
 749                      echo ' selected="selected"';
 750                  }
 751                  echo '>' . htmlspecialchars($set[$j]) . '</option>' . "\n";
 752              } // end for
 753              ?>
 754                  </select>
 755              </td>
 756              <?php
 757          }
 758          // Change by Bernard M. Piller <bernard@bmpsystems.com>
 759          // We don't want binary data destroyed
 760          elseif ($is_binary || $is_blob) {
 761              if (($cfg['ProtectBinary'] && $is_blob)
 762                  || ($cfg['ProtectBinary'] == 'all' && $is_binary)) {
 763                  echo "\n";
 764                  ?>
 765              <td>
 766                  <?php
 767                      echo $strBinaryDoNotEdit;
 768                      if (isset($data)) {
 769                          $data_size = PMA_formatByteDown(strlen(stripslashes($data)), 3, 1);
 770                          echo ' ('. $data_size [0] . ' ' . $data_size[1] . ')';
 771                          unset($data_size);
 772                      }
 773                      echo "\n";
 774                  ?>
 775                  <input type="hidden" name="fields_type<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" value="protected" />
 776                  <input type="hidden" name="fields<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" value="" />
 777                  <?php
 778              } elseif ($is_blob) {
 779                  echo "\n";
 780                  ?>
 781              <td>
 782                  <?php echo $backup_field . "\n"; ?>
 783                  <textarea name="fields<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" rows="<?php echo $cfg['TextareaRows']; ?>" cols="<?php echo $cfg['TextareaCols']; ?>" dir="<?php echo $text_dir; ?>" id="field_<?php echo ($idindex); ?>_3"
 784                      <?php echo $chg_evt_handler; ?>="return unNullify('<?php echo urlencode($field); ?>', '<?php echo $jsvkey; ?>')" tabindex="<?php echo ($tabindex + $tabindex_for_value); ?>" ><?php echo $special_chars; ?></textarea>
 785                  <?php
 786  
 787              } else {
 788                  if ($len < 4) {
 789                      $fieldsize = $maxlength = 4;
 790                  } else {
 791                      $fieldsize = (($len > 40) ? 40 : $len);
 792                      $maxlength = $len;
 793                  }
 794                  echo "\n";
 795                  ?>
 796              <td>
 797                  <?php echo $backup_field . "\n"; ?>
 798                  <input type="text" name="fields<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" value="<?php echo $special_chars; ?>" size="<?php echo $fieldsize; ?>" maxlength="<?php echo $maxlength; ?>" class="textfield" <?php echo $chg_evt_handler; ?>="return unNullify('<?php echo urlencode($field); ?>', '<?php echo $jsvkey; ?>')" tabindex="<?php echo ($tabindex + $tabindex_for_value); ?>" id="field_<?php echo ($idindex); ?>_3" />
 799                  <?php
 800              } // end if...elseif...else
 801  
 802              // Upload choice (only for BLOBs because the binary
 803              // attribute does not imply binary contents)
 804              // (displayed whatever value the ProtectBinary has)
 805  
 806              if ($is_upload && $is_blob) {
 807                  echo '<br />';
 808                  echo '<input type="file" name="fields_upload_' . urlencode($field) . $vkey . '" class="textfield" id="field_' . ($idindex) . '_3" size="10" />&nbsp;';
 809  
 810                  // find maximum upload size, based on field type
 811                  // FIXME: with functions this is not so easy, as you can basically process any data with function like MD5
 812                  $max_field_sizes = array(
 813                      'tinyblob'   =>        '256',
 814                      'blob'       =>      '65536',
 815                      'mediumblob' =>   '16777216',
 816                      'longblob'   => '4294967296'); // yeah, really
 817  
 818                  $this_field_max_size = $max_upload_size; // from PHP max
 819                  if ($this_field_max_size > $max_field_sizes[$type]) {
 820                     $this_field_max_size = $max_field_sizes[$type];
 821                  }
 822                  echo PMA_displayMaximumUploadSize($this_field_max_size) . "\n";
 823                  // do not generate here the MAX_FILE_SIZE, because we should
 824                  // put only one in the form to accommodate the biggest field
 825                  if ($this_field_max_size > $biggest_max_file_size) {
 826                      $biggest_max_file_size = $this_field_max_size;
 827                  }
 828              }
 829  
 830              if (!empty($cfg['UploadDir'])) {
 831                  $files = PMA_getFileSelectOptions(PMA_userDir($cfg['UploadDir']));
 832                  if ($files === FALSE) {
 833                      echo '        <font color="red">' . $strError . '</font><br />' . "\n";
 834                      echo '        ' . $strWebServerUploadDirectoryError . "\n";
 835                  } elseif (!empty($files)) {
 836                      echo "<br />\n";
 837                      echo '    <i>' . $strOr . '</i>' . ' ' . $strWebServerUploadDirectory . ':<br />' . "\n";
 838                      echo '        <select size="1" name="fields_uploadlocal_' . urlencode($field) . $vkey . '">' . "\n";
 839                      echo '            <option value="" selected="selected"></option>' . "\n";
 840                      echo $files;
 841                      echo '        </select>' . "\n";
 842                  }
 843              } // end if (web-server upload directory)
 844  
 845              echo '</td>';
 846  
 847          } // end elseif ( binary or blob)
 848          else {
 849              // For char or varchar, respect the maximum length (M); for other
 850              // types (int or float), the length is not a limit on the values that
 851              // can be entered, so let's be generous (20) (we could also use the
 852              // real limits for each numeric type)
 853              // 2004-04-07, it turned out that 20 was not generous enough
 854              // for the maxlength
 855              if ($is_char) {
 856                  $fieldsize = (($len > 40) ? 40 : $len);
 857                  $maxlength = $len;
 858              } else {
 859                  $fieldsize = 20;
 860                  $maxlength = 99;
 861              } // end if... else...
 862              ?>
 863              <td>
 864                  <?php echo $backup_field . "\n"; ?>
 865              <?php
 866              if ($is_char && isset($cfg['CharEditing']) && ($cfg['CharEditing'] == 'textarea')) {
 867                  echo "\n";
 868                  ?>
 869                  <textarea name="fields<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" rows="<?php echo $cfg['CharTextareaRows']; ?>" cols="<?php echo $cfg['CharTextareaCols']; ?>" dir="<?php echo $text_dir; ?>" id="field_<?php echo ($idindex); ?>_3"
 870                      <?php echo $chg_evt_handler; ?>="return unNullify('<?php echo urlencode($field); ?>', '<?php echo $jsvkey; ?>')" tabindex="<?php echo ($tabindex + $tabindex_for_value); ?>" ><?php echo $special_chars; ?></textarea>
 871                  <?php
 872              } else {
 873                  ?>
 874                  <input type="text" name="fields<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" value="<?php echo $special_chars; ?>" size="<?php echo $fieldsize; ?>" maxlength="<?php echo $maxlength; ?>" class="textfield" <?php echo $chg_evt_handler; ?>="return unNullify('<?php echo urlencode($field); ?>', '<?php echo $jsvkey; ?>')" tabindex="<?php echo ($tabindex + $tabindex_for_value); ?>" id="field_<?php echo ($idindex); ?>_3" />
 875                  <?php
 876                  if ($row_table_def['Extra'] == 'auto_increment') {
 877                      ?>
 878                      <input type="hidden" name="auto_increment<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" value="1" />
 879                      <?php
 880                  } // end if
 881                  if (substr($type, 0, 9) == 'timestamp') {
 882                      ?>
 883                      <input type="hidden" name="fields_type<?php echo $vkey; ?>[<?php echo urlencode($field); ?>]" value="timestamp" />
 884                      <?php
 885                  }
 886                  if ($type == 'date' || $type == 'datetime' || substr($type, 0, 9) == 'timestamp') {
 887                      ?>
 888                      <script type="text/javascript" language="javascript">
 889                      //<![CDATA[
 890                      document.write('<a title="<?php echo $strCalendar;?>" href="javascript:openCalendar(\'<?php echo PMA_generate_common_url();?>\', \'insertForm\', \'field_<?php echo ($idindex); ?>_3\', \'<?php echo (PMA_MYSQL_INT_VERSION >= 40100 && substr($type, 0, 9) == 'timestamp') ? 'datetime' : substr($type, 0, 9); ?>\')"><img class="calendar" src="<?php echo $pmaThemeImage; ?>b_calendar.png" alt="<?php echo $strCalendar; ?>"/></a>');
 891                      //]]>
 892                      </script>
 893                      <?php
 894                  }
 895              }
 896              ?>
 897              </td>
 898              <?php
 899          }
 900          ?>
 901          </tr>
 902          <?php
 903          $odd_row = !$odd_row;
 904      } // end for
 905      $o_rows++;
 906      echo '  </table><br />';
 907  } // end foreach on multi-edit
 908  ?>
 909      <br />
 910  
 911      <table border="0" cellpadding="5" cellspacing="0">
 912      <tr>
 913          <td valign="middle" nowrap="nowrap">
 914              <select name="submit_type" tabindex="<?php echo ($tabindex + $tabindex_for_value + 1); ?>">
 915  <?php
 916  if (isset($primary_key)) {
 917      ?>
 918                  <option value="<?php echo $strSave; ?>"><?php echo $strSave; ?></option>
 919      <?php
 920  }
 921      ?>
 922                  <option value="<?php echo $strInsertAsNewRow; ?>"><?php echo $strInsertAsNewRow; ?></option>
 923              </select>
 924      <?php
 925  echo "\n";
 926  
 927  if (!isset($after_insert)) {
 928      $after_insert = 'back';
 929  }
 930  ?>
 931          </td>
 932          <td valign="middle">
 933              &nbsp;&nbsp;&nbsp;<b><?php echo $strAndThen; ?></b>&nbsp;&nbsp;&nbsp;
 934          </td>
 935          <td valign="middle" nowrap="nowrap">
 936              <select name="after_insert">
 937                  <option value="back" <?php echo ($after_insert == 'back' ? 'selected="selected"' : ''); ?>><?php echo $strAfterInsertBack; ?></option>
 938                  <option value="new_insert" <?php echo ($after_insert == 'new_insert' ? 'selected="selected"' : ''); ?>><?php echo $strAfterInsertNewInsert; ?></option>
 939  <?php
 940  if (isset($primary_key)) {
 941      ?>
 942                  <option value="same_insert" <?php echo ($after_insert == 'same_insert' ? 'selected="selected"' : ''); ?>><?php echo $strAfterInsertSame; ?></option>
 943      <?php
 944      // If we have just numeric primary key, we can also edit next
 945      // in 2.8.2, we were looking for `field_name` = numeric_value 
 946      //if (preg_match('@^[\s]*`[^`]*` = [0-9]+@', $primary_key)) {
 947      // in 2.9.0, we are looking for `table_name`.`field_name` = numeric_value 
 948      if (preg_match('@^[\s]*`[^`]*`[\.]`[^`]*` = [0-9]+@', $primary_key)) {
 949          ?>
 950                  <option value="edit_next"><?php echo $strAfterInsertNext; ?></option>
 951          <?php
 952      }
 953  }
 954  ?>
 955              </select>
 956          </td>
 957      </tr>
 958  
 959      <tr>
 960          <td>
 961  <?php echo PMA_showHint($strUseTabKey); ?>
 962          </td>
 963          <td colspan="3" align="right" valign="middle">
 964              <input type="submit" value="<?php echo $strGo; ?>" tabindex="<?php echo ($tabindex + $tabindex_for_value + 6); ?>" id="buttonYes" />
 965              <input type="reset" value="<?php echo $strReset; ?>" tabindex="<?php echo ($tabindex + $tabindex_for_value + 7); ?>" />
 966          </td>
 967      </tr>
 968      </table>
 969      <?php if ($biggest_max_file_size > 0) {
 970              echo '        ' . PMA_generateHiddenMaxFileSize($biggest_max_file_size) . "\n";
 971            } ?>
 972  
 973  </form>
 974  
 975  <?php
 976  /**
 977   * Displays the footer
 978   */
 979  require_once  './libraries/footer.inc.php';
 980  ?>


[ Powered by PHPXref - Served by Debian GNU/Linux ]