[ Index ]
 

Code source de phpMyAdmin 2.10.3

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/libraries/ -> mult_submits.inc.php (source)

   1  <?php
   2  /* $Id: mult_submits.inc.php 9602 2006-10-25 12:25:01Z nijel $ */
   3  // vim: expandtab sw=4 ts=4 sts=4:
   4  
   5  
   6  /**
   7   * Prepares the work and runs some other scripts if required
   8   */
   9  if (!empty($submit_mult)
  10      && ($submit_mult != $strWithChecked)
  11      && (  ( isset($selected_db) && !empty($selected_db) )
  12         || ( isset($selected_tbl) && !empty($selected_tbl) )
  13         || ( isset($selected_fld) && !empty($selected_fld) )
  14         || !empty($rows_to_delete)
  15           )) {
  16      define('PMA_SUBMIT_MULT', 1);
  17      if (isset($selected_db) && !empty($selected_db)) {
  18          $selected     = $selected_db;
  19          $what         = 'drop_db';
  20      } elseif (isset($selected_tbl) && !empty($selected_tbl)) {
  21          if ($submit_mult == $strPrintView) {
  22              require ('./tbl_printview.php');
  23          } else {
  24             $selected = $selected_tbl;
  25             switch ($submit_mult) {
  26                 case 'drop_db':
  27                     $what = 'drop_db';
  28                     break;
  29                 case $strDrop:
  30                     $what = 'drop_tbl';
  31                     break;
  32                 case $strEmpty:
  33                     $what = 'empty_tbl';
  34                     break;
  35                 case $strCheckTable:
  36                     unset($submit_mult);
  37                     $query_type = 'check_tbl';
  38                     $mult_btn   = $strYes;
  39                     break;
  40                 case $strOptimizeTable:
  41                     unset($submit_mult);
  42                     $query_type = 'optimize_tbl';
  43                     $mult_btn   = $strYes;
  44                     break;
  45                 case $strRepairTable:
  46                     unset($submit_mult);
  47                     $query_type = 'repair_tbl';
  48                     $mult_btn   = $strYes;
  49                     break;
  50                 case $strAnalyzeTable:
  51                     unset($submit_mult);
  52                     $query_type = 'analyze_tbl';
  53                     $mult_btn   = $strYes;
  54                     break;
  55             } // end switch
  56          }
  57      } elseif (isset($selected_fld) && !empty($selected_fld)) {
  58          $selected     = $selected_fld;
  59          switch ($submit_mult) {
  60              case $strDrop:
  61                  $what     = 'drop_fld';
  62                  break;
  63              case $strPrimary:
  64                  // Gets table primary key
  65                  PMA_DBI_select_db($db);
  66                  $result      = PMA_DBI_query('SHOW KEYS FROM ' . PMA_backquote($table) . ';');
  67                  $primary     = '';
  68                  while ($row = PMA_DBI_fetch_assoc($result)) {
  69                      // Backups the list of primary keys
  70                      if ($row['Key_name'] == 'PRIMARY') {
  71                          $primary .= $row['Column_name'] . ', ';
  72                      }
  73                  } // end while
  74                  PMA_DBI_free_result($result);
  75                  if (empty($primary)) {
  76                      // no primary key, so we can safely create new
  77                      unset($submit_mult);
  78                      $query_type = 'primary_fld';
  79                      $mult_btn   = $strYes;
  80                  } else {
  81                      // primary key exists, so lets as user
  82                      $what = 'primary_fld';
  83                  }
  84                  break;
  85              case $strIndex:
  86                  unset($submit_mult);
  87                  $query_type = 'index_fld';
  88                  $mult_btn   = $strYes;
  89                  break;
  90              case $strUnique:
  91                  unset($submit_mult);
  92                  $query_type = 'unique_fld';
  93                  $mult_btn   = $strYes;
  94                  break;
  95              case $strIdxFulltext:
  96                  unset($submit_mult);
  97                  $query_type = 'fulltext_fld';
  98                  $mult_btn   = $strYes;
  99                  break;
 100              case $strChange:
 101                  require ('./tbl_alter.php');
 102                  break;
 103              case $strBrowse:
 104                  $sql_query = '';
 105                  foreach ($selected AS $idx => $sval) {
 106                      if ($sql_query == '') {
 107                          $sql_query .= 'SELECT ' . PMA_backquote(urldecode($sval));
 108                      } else {
 109                          $sql_query .=  ', ' . PMA_backquote(urldecode($sval));
 110                      }
 111                  }
 112                  $sql_query .= ' FROM ' . PMA_backquote(htmlspecialchars($table));
 113                  require ('./sql.php');
 114                  break;
 115          }
 116      } else {
 117          $what = 'row_delete';
 118          $selected = $rows_to_delete;
 119      }
 120  } // end if
 121  
 122  
 123  /**
 124   * Displays the confirmation form if required
 125   */
 126  if ( !empty($submit_mult) && !empty($what)) {
 127      $js_to_run = 'functions.js';
 128      unset($message);
 129      if (isset($table) && strlen($table)) {
 130          require ('./libraries/tbl_common.php');
 131          $url_query .= '&amp;goto=tbl_sql.php&amp;back=tbl_sql.php';
 132          require ('./libraries/tbl_info.inc.php');
 133      } elseif (isset($db) && strlen($db)) {
 134          require ('./libraries/db_common.inc.php');
 135          require ('./libraries/db_info.inc.php');
 136      }
 137      // Builds the query
 138      $full_query     = '';
 139      if ($what == 'drop_tbl') {
 140          $full_query_views = '';
 141      }
 142      $selected_cnt   = count($selected);
 143      $i = 0;
 144      foreach ($selected AS $idx => $sval) {
 145          switch ($what) {
 146              case 'row_delete':
 147                  $full_query .= htmlspecialchars(urldecode($sval))
 148                      . ';<br />';
 149                  break;
 150              case 'drop_db':
 151                  $full_query .= 'DROP DATABASE '
 152                      . PMA_backquote(htmlspecialchars(urldecode($sval)))
 153                      . ';<br />';
 154                  $reload = 1;
 155                  break;
 156  
 157              case 'drop_tbl':
 158                  $current = urldecode($sval);
 159                  if (!empty($views) && in_array($current, $views)) {
 160                      $full_query_views .= (empty($full_query_views) ? 'DROP VIEW ' : ', ')
 161                          . PMA_backquote(htmlspecialchars($current));
 162                  } else {
 163                      $full_query .= (empty($full_query) ? 'DROP TABLE ' : ', ')
 164                          . PMA_backquote(htmlspecialchars($current));
 165                  }
 166                  break;
 167  
 168              case 'empty_tbl':
 169                  if (PMA_MYSQL_INT_VERSION >= 40000) {
 170                      $full_query .= 'TRUNCATE ';
 171                  } else {
 172                      $full_query .= 'DELETE FROM ';
 173                  }
 174                  $full_query .= PMA_backquote(htmlspecialchars(urldecode($sval)))
 175                              . ';<br />';
 176                  break;
 177  
 178              case 'primary_fld':
 179                  if ($full_query == '') {
 180                      $full_query .= 'ALTER TABLE '
 181                          . PMA_backquote(htmlspecialchars($table))
 182                          . '<br />&nbsp;&nbsp;DROP PRIMARY KEY,'
 183                          . '<br />&nbsp;&nbsp; ADD PRIMARY KEY('
 184                          . '<br />&nbsp;&nbsp;&nbsp;&nbsp; '
 185                          . PMA_backquote(htmlspecialchars(urldecode($sval)))
 186                          . ',';
 187                  } else {
 188                      $full_query .= '<br />&nbsp;&nbsp;&nbsp;&nbsp; '
 189                          . PMA_backquote(htmlspecialchars(urldecode($sval)))
 190                          . ',';
 191                  }
 192                  if ($i == $selected_cnt-1) {
 193                      $full_query = preg_replace('@,$@', ');<br />', $full_query);
 194                  }
 195                  break;
 196                  
 197              case 'drop_fld':
 198                  if ($full_query == '') {
 199                      $full_query .= 'ALTER TABLE '
 200                          . PMA_backquote(htmlspecialchars($table))
 201                          . '<br />&nbsp;&nbsp;DROP '
 202                          . PMA_backquote(htmlspecialchars(urldecode($sval)))
 203                          . ',';
 204                  } else {
 205                      $full_query .= '<br />&nbsp;&nbsp;DROP '
 206                          . PMA_backquote(htmlspecialchars(urldecode($sval)))
 207                          . ',';
 208                  }
 209                  if ($i == $selected_cnt-1) {
 210                      $full_query = preg_replace('@,$@', ';<br />', $full_query);
 211                  }
 212                  break;
 213          } // end switch
 214          $i++;
 215      }
 216      if ($what == 'drop_tbl') {
 217          if (!empty($full_query)) {
 218              $full_query .= ';<br />' . "\n";
 219          }
 220          if (!empty($full_query_views)) {
 221              $full_query .= $full_query_views . ';<br />' . "\n";
 222          }
 223          unset($full_query_views);
 224      }
 225  
 226      // Displays the form
 227      ?>
 228  <!-- Do it really ? -->
 229  <form action="<?php echo $action; ?>" method="post">
 230  <input type="hidden" name="query_type" value="<?php echo $what; ?>" />
 231      <?php
 232      if (strpos(' ' . $action, 'db_') == 1) {
 233          echo PMA_generate_common_hidden_inputs($db);
 234      } elseif (strpos(' ' . $action, 'tbl_') == 1
 235                || $what == 'row_delete') {
 236          echo PMA_generate_common_hidden_inputs($db, $table);
 237      } else  {
 238          echo PMA_generate_common_hidden_inputs();
 239      }
 240  ?>
 241  <input type="hidden" name="reload" value="<?php echo isset($reload) ? PMA_sanitize($reload) : 0; ?>" />
 242  <?php
 243      foreach ($selected AS $idx => $sval) {
 244          echo '<input type="hidden" name="selected[]" value="' . htmlspecialchars($sval) . '" />' . "\n";
 245      }
 246      if ($what == 'drop_tbl' && !empty($views)) {
 247          foreach ($views as $current) {
 248             echo '<input type="hidden" name="views[]" value="' . htmlspecialchars($current) . '" />' . "\n";
 249         }
 250      }
 251      if ($what == 'row_delete') {
 252          echo '<input type="hidden" name="original_sql_query" value="' . htmlspecialchars($original_sql_query) . '" />' . "\n";
 253          echo '<input type="hidden" name="original_pos" value="' . $original_pos . '" />' . "\n";
 254          echo '<input type="hidden" name="original_url_query" value="' . htmlspecialchars($original_url_query) . '" />' . "\n";
 255          echo '<input type="hidden" name="disp_direction"   value="' . $disp_direction . '" />' . "\n";
 256          echo '<input type="hidden" name="repeat_cells"     value="' . $repeat_cells   . '" />' . "\n";
 257          echo '<input type="hidden" name="dontlimitchars"   value="' . $dontlimitchars . '" />' . "\n";
 258          echo '<input type="hidden" name="pos"              value="' . ( isset( $pos ) ? $pos : 0 ) . '" />' . "\n";
 259          echo '<input type="hidden" name="session_max_rows" value="' . $session_max_rows . '" />' . "\n";
 260      }
 261      ?>
 262  <fieldset class="confirmation">
 263      <legend><?php echo ($what == 'drop_db' ? $strDropDatabaseStrongWarning . '&nbsp;' : '') . $strDoYouReally; ?>:</legend>
 264      <tt><?php echo $full_query; ?></tt>
 265  </fieldset>
 266  <fieldset class="tblFooters">
 267      <input type="submit" name="mult_btn" value="<?php echo $strYes; ?>" id="buttonYes" />
 268      <input type="submit" name="mult_btn" value="<?php echo $strNo; ?>" id="buttonNo" />
 269  </fieldset>
 270      <?php
 271      require_once ('./libraries/footer.inc.php');
 272  } // end if
 273  
 274  
 275  /**
 276   * Executes the query
 277   */
 278  elseif ($mult_btn == $strYes) {
 279  
 280      if ($query_type == 'drop_db' || $query_type == 'drop_tbl' || $query_type == 'drop_fld') {
 281          require_once('./libraries/relation_cleanup.lib.php');
 282      }
 283  
 284      $sql_query      = '';
 285      if ($query_type == 'drop_tbl') {
 286          $sql_query_views = '';
 287      }
 288      $selected_cnt   = count($selected);
 289      $run_parts      = FALSE; // whether to run query after each pass
 290      $use_sql        = FALSE; // whether to include sql.php at the end (to display results)
 291  
 292      if ($query_type == 'primary_fld') {
 293          // Gets table primary key
 294          PMA_DBI_select_db($db);
 295          $result      = PMA_DBI_query('SHOW KEYS FROM ' . PMA_backquote($table) . ';');
 296          $primary     = '';
 297          while ($row = PMA_DBI_fetch_assoc($result)) {
 298              // Backups the list of primary keys
 299              if ($row['Key_name'] == 'PRIMARY') {
 300                  $primary .= $row['Column_name'] . ', ';
 301              }
 302          } // end while
 303          PMA_DBI_free_result($result);
 304      }
 305      
 306      for ($i = 0; $i < $selected_cnt; $i++) {
 307          switch ($query_type) {
 308              case 'row_delete':
 309                  $a_query = urldecode($selected[$i]);
 310                  $run_parts = TRUE;
 311                  break;
 312  
 313              case 'drop_db':
 314                  PMA_relationsCleanupDatabase($selected[$i]);
 315                  $a_query   = 'DROP DATABASE '
 316                             . PMA_backquote(urldecode($selected[$i]));
 317                  $reload    = 1;
 318                  $run_parts = TRUE;
 319                  break;
 320  
 321              case 'drop_tbl':
 322                  PMA_relationsCleanupTable($db, $selected[$i]);
 323                  $current = urldecode($selected[$i]);
 324                  if (!empty($views) && in_array($current, $views)) {
 325                      $sql_query_views .= (empty($sql_query_views) ? 'DROP VIEW ' : ', ')
 326                                . PMA_backquote($current);
 327                  } else {
 328                      $sql_query .= (empty($sql_query) ? 'DROP TABLE ' : ', ')
 329                                 . PMA_backquote($current);
 330                  }
 331                  $reload    = 1;
 332                  break;
 333  
 334              case 'check_tbl':
 335                  $sql_query .= (empty($sql_query) ? 'CHECK TABLE ' : ', ')
 336                             . PMA_backquote(urldecode($selected[$i]));
 337                  $use_sql    = TRUE;
 338                  break;
 339  
 340              case 'optimize_tbl':
 341                  $sql_query .= (empty($sql_query) ? 'OPTIMIZE TABLE ' : ', ')
 342                             . PMA_backquote(urldecode($selected[$i]));
 343                  $use_sql    = TRUE;
 344                  break;
 345  
 346              case 'analyze_tbl':
 347                  $sql_query .= (empty($sql_query) ? 'ANALYZE TABLE ' : ', ')
 348                             . PMA_backquote(urldecode($selected[$i]));
 349                  $use_sql    = TRUE;
 350                  break;
 351  
 352              case 'repair_tbl':
 353                  $sql_query .= (empty($sql_query) ? 'REPAIR TABLE ' : ', ')
 354                             . PMA_backquote(urldecode($selected[$i]));
 355                  $use_sql    = TRUE;
 356                  break;
 357  
 358              case 'empty_tbl':
 359                  if (PMA_MYSQL_INT_VERSION >= 40000) {
 360                      $a_query = 'TRUNCATE ';
 361                  } else {
 362                      $a_query = 'DELETE FROM ';
 363                  }
 364                  $a_query .= PMA_backquote(htmlspecialchars(urldecode($selected[$i])));
 365                  $run_parts = TRUE;
 366                  break;
 367  
 368              case 'drop_fld':
 369                  PMA_relationsCleanupColumn($db, $table, $selected[$i]);
 370                  $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) : ',')
 371                             . ' DROP ' . PMA_backquote(urldecode($selected[$i]))
 372                             . (($i == $selected_cnt-1) ? ';' : '');
 373                  break;
 374  
 375              case 'primary_fld':
 376                  $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) . ( empty($primary) ? '' : ' DROP PRIMARY KEY,') . ' ADD PRIMARY KEY( ' : ', ')
 377                             . PMA_backquote(urldecode($selected[$i]))
 378                             . (($i == $selected_cnt-1) ? ');' : '');
 379                  break;
 380  
 381              case 'index_fld':
 382                  $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) . ' ADD INDEX( ' : ', ')
 383                             . PMA_backquote(urldecode($selected[$i]))
 384                             . (($i == $selected_cnt-1) ? ');' : '');
 385                  break;
 386  
 387              case 'unique_fld':
 388                  $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) . ' ADD UNIQUE( ' : ', ')
 389                             . PMA_backquote(urldecode($selected[$i]))
 390                             . (($i == $selected_cnt-1) ? ');' : '');
 391                  break;
 392  
 393              case 'fulltext_fld':
 394                  $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) . ' ADD FULLTEXT( ' : ', ')
 395                             . PMA_backquote(urldecode($selected[$i]))
 396                             . (($i == $selected_cnt-1) ? ');' : '');
 397                  break;
 398          } // end switch
 399  
 400          // All "DROP TABLE", "DROP FIELD", "OPTIMIZE TABLE" and "REPAIR TABLE"
 401          // statements will be run at once below
 402          if ($run_parts) { 
 403              $sql_query .= $a_query . ';' . "\n";
 404              if ($query_type != 'drop_db') {
 405                  PMA_DBI_select_db($db);
 406              }
 407              $result = @PMA_DBI_query($a_query) or PMA_mysqlDie('', $a_query, FALSE, $err_url);
 408          } // end if
 409      } // end for
 410  
 411      if ($query_type == 'drop_tbl') {
 412          if (!empty($sql_query)) {
 413          $sql_query .= ';';
 414      } elseif (!empty($sql_query_views)) {
 415          $sql_query = $sql_query_views . ';';
 416              unset($sql_query_views);
 417          }
 418      }
 419  
 420      if ($use_sql) {
 421          require ('./sql.php');
 422      } elseif (!$run_parts) {
 423          PMA_DBI_select_db($db);
 424          $result = PMA_DBI_query($sql_query);
 425          if (!empty($sql_query_views)) {
 426              $sql_query .= ' ' . $sql_query_views . ';';
 427              PMA_DBI_query($sql_query_views);
 428              unset($sql_query_views);
 429          }
 430      }
 431  }
 432  ?>


Généré le : Mon Nov 26 15:18:20 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics