| [ Index ] |
|
Code source de phpMyAdmin 2.10.3 |
1 <?php 2 /* $Id: tbl_printview.php 9602 2006-10-25 12:25:01Z nijel $ */ 3 4 require_once './libraries/common.lib.php'; 5 6 require './libraries/tbl_common.php'; 7 8 /** 9 * Gets the variables sent or posted to this script, then displays headers 10 */ 11 $print_view = true; 12 if (! isset($selected_tbl)) { 13 require_once './libraries/header.inc.php'; 14 } 15 16 // Check parameters 17 18 if (! isset($the_tables) || ! is_array($the_tables)) { 19 $the_tables = array(); 20 } 21 22 /** 23 * Gets the relations settings 24 */ 25 require_once './libraries/relation.lib.php'; 26 require_once './libraries/transformations.lib.php'; 27 require_once './libraries/tbl_indexes.lib.php'; 28 29 $cfgRelation = PMA_getRelationsParam(); 30 31 /** 32 * Defines the url to return to in case of error in a sql statement 33 */ 34 if (isset($table)) { 35 $err_url = 'tbl_sql.php?' . PMA_generate_common_url($db, $table); 36 } else { 37 $err_url = 'db_sql.php?' . PMA_generate_common_url($db); 38 } 39 40 41 /** 42 * Selects the database 43 */ 44 PMA_DBI_select_db($db); 45 46 47 /** 48 * Multi-tables printview thanks to Christophe Gesche from the "MySQL Form 49 * Generator for PHPMyAdmin" (http://sourceforge.net/projects/phpmysqlformgen/) 50 */ 51 if (isset($selected_tbl) && is_array($selected_tbl)) { 52 $the_tables = $selected_tbl; 53 } elseif (isset($table)) { 54 $the_tables[] = $table; 55 } 56 $multi_tables = (count($the_tables) > 1); 57 58 if ($multi_tables) { 59 if (empty($GLOBALS['is_header_sent'])) { 60 require_once './libraries/header.inc.php'; 61 } 62 $tbl_list = ''; 63 foreach ($the_tables as $key => $table) { 64 $tbl_list .= (empty($tbl_list) ? '' : ', ') 65 . PMA_backquote(urldecode($table)); 66 } 67 echo '<b>'. $strShowTables . ': ' . $tbl_list . '</b>' . "\n"; 68 echo '<hr />' . "\n"; 69 } // end if 70 71 $tables_cnt = count($the_tables); 72 $counter = 0; 73 74 foreach ($the_tables as $key => $table) { 75 $table = urldecode($table); 76 if ($counter + 1 >= $tables_cnt) { 77 $breakstyle = ''; 78 } else { 79 $breakstyle = ' style="page-break-after: always;"'; 80 } 81 $counter++; 82 echo '<div' . $breakstyle . '>' . "\n"; 83 echo '<h1>' . $table . '</h1>' . "\n"; 84 85 /** 86 * Gets table informations 87 */ 88 $result = PMA_DBI_query( 89 'SHOW TABLE STATUS LIKE \'' . PMA_sqlAddslashes($table, true) . '\';'); 90 $showtable = PMA_DBI_fetch_assoc($result); 91 $num_rows = (isset($showtable['Rows']) ? $showtable['Rows'] : 0); 92 $show_comment = (isset($showtable['Comment']) ? $showtable['Comment'] : ''); 93 PMA_DBI_free_result($result); 94 95 $tbl_is_view = PMA_Table::isView($db, $table); 96 97 // Gets table keys and store them in arrays 98 $indexes = array(); 99 $indexes_info = array(); 100 $indexes_data = array(); 101 $ret_keys = PMA_get_indexes($table, $err_url_0); 102 103 PMA_extract_indexes($ret_keys, $indexes, $indexes_info, $indexes_data); 104 105 /** 106 * Gets fields properties 107 */ 108 $result = PMA_DBI_query( 109 'SHOW FIELDS FROM ' . PMA_backquote($table) . ';', null, 110 PMA_DBI_QUERY_STORE); 111 $fields_cnt = PMA_DBI_num_rows($result); 112 113 114 // We need this to correctly learn if a TIMESTAMP is NOT NULL, since 115 // SHOW FULL FIELDS or INFORMATION_SCHEMA incorrectly says NULL 116 // and SHOW CREATE TABLE says NOT NULL (tested 117 // in MySQL 4.0.25 and 5.0.21, http://bugs.mysql.com/20910). 118 119 $show_create_table = PMA_DBI_fetch_value( 120 'SHOW CREATE TABLE ' . PMA_backquote($db) . '.' . PMA_backquote($table), 121 0, 1); 122 $analyzed_sql = PMA_SQP_analyze(PMA_SQP_parse($show_create_table)); 123 124 // Check if we can use Relations (Mike Beck) 125 if (!empty($cfgRelation['relation'])) { 126 // Find which tables are related with the current one and write it in 127 // an array 128 $res_rel = PMA_getForeigners($db, $table); 129 130 if (count($res_rel) > 0) { 131 $have_rel = true; 132 } else { 133 $have_rel = false; 134 } 135 } else { 136 $have_rel = false; 137 } // end if 138 139 140 /** 141 * Displays the comments of the table if MySQL >= 3.23 142 */ 143 if (!empty($show_comment)) { 144 echo $strTableComments . ': ' . $show_comment . '<br /><br />'; 145 } 146 147 /** 148 * Displays the table structure 149 */ 150 ?> 151 152 <!-- TABLE INFORMATIONS --> 153 <table style="width: 100%;"> 154 <thead> 155 <tr> 156 <th><?php echo $strField; ?></th> 157 <th><?php echo $strType; ?></th> 158 <!--<th><?php echo $strAttr; ?></th>--> 159 <th><?php echo $strNull; ?></th> 160 <th><?php echo $strDefault; ?></th> 161 <!--<th><?php echo $strExtra; ?></th>--> 162 <?php 163 if ($have_rel) { 164 echo '<th>' . $strLinksTo . '</th>' . "\n"; 165 } 166 if ($cfgRelation['commwork']) { 167 echo ' <th>' . $strComments . '</th>' . "\n"; 168 } 169 if ($cfgRelation['mimework']) { 170 echo ' <th>MIME</th>' . "\n"; 171 } 172 ?> 173 </tr> 174 </thead> 175 <tbody> 176 <?php 177 while ($row = PMA_DBI_fetch_assoc($result)) { 178 $type = $row['Type']; 179 // reformat mysql query output - staybyte - 9. June 2001 180 // loic1: set or enum types: slashes single quotes inside options 181 if (preg_match('@^(set|enum)\((.+)\)$@i', $type, $tmp)) { 182 $tmp[2] = substr(preg_replace('@([^,])\'\'@', '\\1\\\'', 183 ',' . $tmp[2]), 1); 184 $type = $tmp[1] . '(' . str_replace(',', ', ', $tmp[2]) . ')'; 185 186 $binary = 0; 187 $unsigned = 0; 188 $zerofill = 0; 189 } else { 190 $type = preg_replace('@BINARY@i', '', $type); 191 $type = preg_replace('@ZEROFILL@i', '', $type); 192 $type = preg_replace('@UNSIGNED@i', '', $type); 193 if (empty($type)) { 194 $type = ' '; 195 } 196 197 $binary = stristr($row['Type'], 'binary'); 198 $unsigned = stristr($row['Type'], 'unsigned'); 199 $zerofill = stristr($row['Type'], 'zerofill'); 200 } 201 $strAttribute = ' '; 202 if ($binary) { 203 $strAttribute = 'BINARY'; 204 } 205 if ($unsigned) { 206 $strAttribute = 'UNSIGNED'; 207 } 208 if ($zerofill) { 209 $strAttribute = 'UNSIGNED ZEROFILL'; 210 } 211 if (!isset($row['Default'])) { 212 if ($row['Null'] != '' && $row['Null'] != 'NO') { 213 $row['Default'] = '<i>NULL</i>'; 214 } 215 } else { 216 $row['Default'] = htmlspecialchars($row['Default']); 217 } 218 $field_name = htmlspecialchars($row['Field']); 219 220 // here, we have a TIMESTAMP that SHOW FULL FIELDS reports as having the 221 // NULL attribute, but SHOW CREATE TABLE says the contrary. Believe 222 // the latter. 223 /** 224 * @todo merge this logic with the one in tbl_structure.php 225 * or move it in a function similar to PMA_DBI_get_columns_full() 226 * but based on SHOW CREATE TABLE because information_schema 227 * cannot be trusted in this case (MySQL bug) 228 */ 229 if (!empty($analyzed_sql[0]['create_table_fields'][$field_name]['type']) && $analyzed_sql[0]['create_table_fields'][$field_name]['type'] == 'TIMESTAMP' && $analyzed_sql[0]['create_table_fields'][$field_name]['timestamp_not_null']) { 230 $row['Null'] = ''; 231 } 232 ?> 233 234 <tr><td> 235 <?php 236 if (isset($pk_array[$row['Field']])) { 237 echo ' <u>' . $field_name . '</u>' . "\n"; 238 } else { 239 echo ' ' . $field_name . "\n"; 240 } 241 ?> 242 </td> 243 <td><?php echo $type; ?><bdo dir="ltr"></bdo></td> 244 <!--<td><?php echo $strAttribute; ?></td>--> 245 <td><?php echo (($row['Null'] == '' || $row['Null'] == 'NO') ? $strNo : $strYes); ?> </td> 246 <td><?php if (isset($row['Default'])) { echo $row['Default']; } ?> </td> 247 <!--<td><?php echo $row['Extra']; ?> </td>--> 248 <?php 249 if ($have_rel) { 250 echo ' <td>'; 251 if (isset($res_rel[$field_name])) { 252 echo htmlspecialchars($res_rel[$field_name]['foreign_table'] . ' -> ' . $res_rel[$field_name]['foreign_field'] ); 253 } 254 echo ' </td>' . "\n"; 255 } 256 if ($cfgRelation['commwork'] || PMA_MYSQL_INT_VERSION >= 40100) { 257 echo ' <td>'; 258 $comments = PMA_getComments($db, $table); 259 if (isset($comments[$field_name])) { 260 echo htmlspecialchars($comments[$field_name]); 261 } 262 echo ' </td>' . "\n"; 263 } 264 if ($cfgRelation['mimework']) { 265 $mime_map = PMA_getMIME($db, $table, true); 266 267 echo ' <td>'; 268 if (isset($mime_map[$field_name])) { 269 echo htmlspecialchars(str_replace('_', '/', $mime_map[$field_name]['mimetype'])); 270 } 271 echo ' </td>' . "\n"; 272 } 273 ?> 274 </tr> 275 <?php 276 } // end while 277 PMA_DBI_free_result($result); 278 ?> 279 </tbody> 280 </table> 281 282 <?php 283 284 if ( ! $tbl_is_view 285 && ( $db != 'information_schema' 286 || PMA_MYSQL_INT_VERSION < 50002 ) ) { 287 288 /** 289 * Displays indexes 290 */ 291 $index_count = (isset($indexes)) 292 ? count($indexes) 293 : 0; 294 if ($index_count > 0) { 295 echo "\n"; 296 ?> 297 <br /><br /> 298 299 <!-- Indexes --> 300 <big><?php echo $strIndexes . ':'; ?></big> 301 <table> 302 <tr> 303 <th><?php echo $strKeyname; ?></th> 304 <th><?php echo $strType; ?></th> 305 <th><?php echo $strCardinality; ?></th> 306 <th colspan="2"><?php echo $strField; ?></th> 307 </tr> 308 <?php 309 echo "\n"; 310 PMA_show_indexes($table, $indexes, $indexes_info, $indexes_data, true, true); 311 echo "\n"; 312 ?> 313 </table> 314 <?php 315 echo "\n"; 316 } // end display indexes 317 318 319 /** 320 * Displays Space usage and row statistics 321 * 322 * staybyte - 9 June 2001 323 */ 324 if ($cfg['ShowStats']) { 325 $nonisam = false; 326 if (isset($showtable['Type']) && !preg_match('@ISAM|HEAP@i', $showtable['Type'])) { 327 $nonisam = true; 328 } 329 if ($nonisam == false) { 330 // Gets some sizes 331 $mergetable = false; 332 if (isset($showtable['Type']) && $showtable['Type'] == 'MRG_MyISAM') { 333 $mergetable = true; 334 } 335 list($data_size, $data_unit) = PMA_formatByteDown($showtable['Data_length']); 336 if ($mergetable == false) { 337 list($index_size, $index_unit) = PMA_formatByteDown($showtable['Index_length']); 338 } 339 if (isset($showtable['Data_free']) && $showtable['Data_free'] > 0) { 340 list($free_size, $free_unit) = PMA_formatByteDown($showtable['Data_free']); 341 list($effect_size, $effect_unit) = PMA_formatByteDown($showtable['Data_length'] + $showtable['Index_length'] - $showtable['Data_free']); 342 } else { 343 unset($free_size); 344 unset($free_unit); 345 list($effect_size, $effect_unit) = PMA_formatByteDown($showtable['Data_length'] + $showtable['Index_length']); 346 } 347 list($tot_size, $tot_unit) = PMA_formatByteDown($showtable['Data_length'] + $showtable['Index_length']); 348 if ($num_rows > 0) { 349 list($avg_size, $avg_unit) = PMA_formatByteDown(($showtable['Data_length'] + $showtable['Index_length']) / $showtable['Rows'], 6, 1); 350 } 351 352 // Displays them 353 ?> 354 <br /><br /> 355 356 <table border="0" cellspacing="0" cellpadding="0" class="noborder"> 357 <tr> 358 359 <!-- Space usage --> 360 <td valign="top"> 361 <big><?php echo $strSpaceUsage . ':'; ?></big> 362 <table width="100%"> 363 <tr> 364 <th><?php echo $strType; ?></th> 365 <th colspan="2" align="center"><?php echo $strUsage; ?></th> 366 </tr> 367 <tr> 368 <td style="padding-right: 10px"><?php echo $strData; ?></td> 369 <td align="right"><?php echo $data_size; ?></td> 370 <td><?php echo $data_unit; ?></td> 371 </tr> 372 <?php 373 if (isset($index_size)) { 374 echo "\n"; 375 ?> 376 <tr> 377 <td style="padding-right: 10px"><?php echo $strIndex; ?></td> 378 <td align="right"><?php echo $index_size; ?></td> 379 <td><?php echo $index_unit; ?></td> 380 </tr> 381 <?php 382 } 383 if (isset($free_size)) { 384 echo "\n"; 385 ?> 386 <tr style="color: #bb0000"> 387 <td style="padding-right: 10px"><?php echo $strOverhead; ?></td> 388 <td align="right"><?php echo $free_size; ?></td> 389 <td><?php echo $free_unit; ?></td> 390 </tr> 391 <tr> 392 <td style="padding-right: 10px"><?php echo $strEffective; ?></td> 393 <td align="right"><?php echo $effect_size; ?></td> 394 <td><?php echo $effect_unit; ?></td> 395 </tr> 396 <?php 397 } 398 if (isset($tot_size) && $mergetable == false) { 399 echo "\n"; 400 ?> 401 <tr> 402 <td style="padding-right: 10px"><?php echo $strTotalUC; ?></td> 403 <td align="right"><?php echo $tot_size; ?></td> 404 <td><?php echo $tot_unit; ?></td> 405 </tr> 406 <?php 407 } 408 echo "\n"; 409 ?> 410 </table> 411 </td> 412 413 <td width="20"> </td> 414 415 <!-- Rows Statistic --> 416 <td valign="top"> 417 <big><?php echo $strRowsStatistic . ':'; ?></big> 418 <table width="100%"> 419 <tr> 420 <th><?php echo $strStatement; ?></th> 421 <th align="center"><?php echo $strValue; ?></th> 422 </tr> 423 <?php 424 if (isset($showtable['Row_format'])) { 425 ?> 426 <tr> 427 <td><?php echo ucfirst($strFormat); ?></td> 428 <td align="<?php echo $cell_align_left; ?>"> 429 <?php 430 if ($showtable['Row_format'] == 'Fixed') { 431 echo $strFixed; 432 } elseif ($showtable['Row_format'] == 'Dynamic') { 433 echo $strDynamic; 434 } else { 435 echo $showtable['Row_format']; 436 } 437 ?> 438 </td> 439 </tr> 440 <?php 441 } 442 if (isset($showtable['Rows'])) { 443 ?> 444 <tr> 445 <td><?php echo ucfirst($strRows); ?></td> 446 <td align="right"> 447 <?php echo number_format($showtable['Rows'], 0, $number_decimal_separator, $number_thousands_separator) . "\n"; ?> 448 </td> 449 </tr> 450 <?php 451 } 452 if (isset($showtable['Avg_row_length']) && $showtable['Avg_row_length'] > 0) { 453 ?> 454 <tr> 455 <td><?php echo ucfirst($strRowLength); ?> ø</td> 456 <td> 457 <?php echo number_format($showtable['Avg_row_length'], 0, $number_decimal_separator, $number_thousands_separator) . "\n"; ?> 458 </td> 459 </tr> 460 <?php 461 } 462 if (isset($showtable['Data_length']) && $showtable['Rows'] > 0 && $mergetable == false) { 463 ?> 464 <tr> 465 <td><?php echo ucfirst($strRowSize); ?> ø</td> 466 <td align="right"> 467 <?php echo $avg_size . ' ' . $avg_unit . "\n"; ?> 468 </td> 469 </tr> 470 <?php 471 } 472 if (isset($showtable['Auto_increment'])) { 473 ?> 474 <tr> 475 <td><?php echo ucfirst($strNext); ?> Autoindex</td> 476 <td align="right"> 477 <?php echo number_format($showtable['Auto_increment'], 0, $number_decimal_separator, $number_thousands_separator) . "\n"; ?> 478 </td> 479 </tr> 480 <?php 481 } 482 if (isset($showtable['Create_time'])) { 483 ?> 484 <tr> 485 <td><?php echo $strStatCreateTime; ?></td> 486 <td align="right"> 487 <?php echo PMA_localisedDate(strtotime($showtable['Create_time'])) . "\n"; ?> 488 </td> 489 </tr> 490 <?php 491 } 492 if (isset($showtable['Update_time'])) { 493 ?> 494 <tr> 495 <td><?php echo $strStatUpdateTime; ?></td> 496 <td align="right"> 497 <?php echo PMA_localisedDate(strtotime($showtable['Update_time'])) . "\n"; ?> 498 </td> 499 </tr> 500 <?php 501 } 502 if (isset($showtable['Check_time'])) { 503 ?> 504 <tr> 505 <td><?php echo $strStatCheckTime; ?></td> 506 <td align="right"> 507 <?php echo PMA_localisedDate(strtotime($showtable['Check_time'])) . "\n"; ?> 508 </td> 509 </tr> 510 <?php 511 } 512 ?> 513 514 </table> 515 </td> 516 </tr> 517 </table> 518 519 <?php 520 } // end if ($nonisam == false) 521 } // end if ($cfg['ShowStats']) 522 } 523 if ($multi_tables) { 524 unset($ret_keys, $num_rows, $show_comment); 525 echo '<hr />' . "\n"; 526 } // end if 527 echo '</div>' . "\n"; 528 529 } // end while 530 531 /** 532 * Displays the footer 533 */ 534 ?> 535 536 <script type="text/javascript" language="javascript"> 537 //<![CDATA[ 538 function printPage() 539 { 540 // Do print the page 541 if (typeof(window.print) != 'undefined') { 542 window.print(); 543 } 544 } 545 //]]> 546 </script> 547 548 <p class="print_ignore"> 549 <input type="button" id="print" value="<?php echo $strPrint; ?>" 550 onclick="printPage()" /></p> 551 552 <?php 553 require_once './libraries/footer.inc.php'; 554 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
| Généré le : Mon Nov 26 15:18:20 2007 | par Balluche grâce à PHPXref 0.7 |
|