phpMyAdminカラム一覧にコメントを表示する

コメントを書かないと覚えきれないあなたのために(っていうか自分のため)
phpMyAdminカラム一覧にコメントを表示する
やればできる子Adminちゃんに仕事をさせよう!


DB開発でありがちな問題
「パッと見なにやってるのかわからない」「資料がないとさっぱりわからない」
  1. カラム名短すぎてわからない。(「flag」って何のフラグ?)
  2. カラム名長くてもわからない。(「user_status_flag」って何のフラグ?)
  3. ・つまり他人の作ったテーブルはわからない
  4. ・でも資料を作っている時間が無い
  5. ・しばらく経つと作った本人ですらわからない
まぁつまりコメント書いとけってことです。


しかしphpMyAdminのカラム一覧にはコメント表示機能がない!


「そんなバカな!」と思ったあなたにカラム一覧をお見せしましょう
【画面キャプチャ】



ほらね!



カラム一覧にコメント欄がありません。


 ○| ̄|_ 残念な一覧です。 _| ̄|○

本来は↓ここにコメントあって欲しいですよね
【夢っ‥‥! 希望っ‥‥! 願望っっ‥‥!!】



カラムの右側にコメントが欲しい!



っていうかこれくらいできて欲しい!


そのくせ、レコード一覧に邪魔なコメントが‥‥ orz



左右スクロールめんどいだろ‥‥

というわけで今日はこちらの物件をリフォームします!

ででっでっでー♪ででっでっでー♪ででっでっでー♪ででっでっでっで〜♪


インストール環境
OSWindows7 Ultimate 64bit(VMWare Fusion3)
マシンiMac 2010 Mid Core i5 760@2.80GHz Mem=12GB(Win6GB,Mac6GB)
HDD1TB(Win545GB,Mac299GB) SSDが欲しいです!
WEBサーバーApache 2.2.21 32bit
PHPPHP 5.3.8 32bit
DBサーバーMySQL 5.5.17 64bit
DB管理ツールphpMyAdmin 3.4.8
統合開発環境Eclipse IDE for C/C++ Version 3.7 Indigo Service Release 1
PHP開発プラグインPHPEclipse 1.2.3
ガンダム初代,Z,ZZ,0083,08小隊,逆襲,F91,V,W,X(38話),AGE(6話)

/phpMyAdmin/tbl_structure.php 修正
  1. カラム一覧の項目に「コメント」追加!



  2. before AFTER

    <table width="100%" id="tablestructure" class="data">
    <thead>
    <tr>
        <th id="th<?php echo ++$i; ?>"></th>
        <th id="th<?php echo ++$i; ?>">#</th>
        <th id="th<?php echo ++$i; ?>" class="column"><?php echo __('Column'); ?></th>
        <th id="th<?php echo ++$i; ?>" class="type"><?php echo __('Type'); ?></th>
        <th id="th<?php echo ++$i; ?>" class="collation"><?php echo __('Collation'); ?></th>
        <th id="th<?php echo ++$i; ?>" class="attributes"><?php echo __('Attributes'); ?></th>
        <th id="th<?php echo ++$i; ?>" class="null"><?php echo __('Null'); ?></th>
        <th id="th<?php echo ++$i; ?>" class="default"><?php echo __('Default'); ?></th>
        <th id="th<?php echo ++$i; ?>" class="extra"><?php echo __('Extra'); ?></th>
    <?php if ($db_is_information_schema || $tbl_is_view) { ?>
        <th id="th<?php echo ++$i; ?>" class="view"><?php echo __('View'); ?></th>
    <?php } else { ?>
        <th colspan="7" id="th<?php echo ++$i; ?>" class="action"><?php echo __('Action'); ?></th>
    <?php } ?>
    </tr>
    </thead>
    <tbody>
    

    <table id="tablestructure" class="data">
    <thead>
    <tr>
        <th id="th<?php echo ++$i; ?>"></th>
        <th id="th<?php echo ++$i; ?>">#</th>
        <th id="th<?php echo ++$i; ?>" class="column"><?php echo __('Column'); ?></th>
        <th id="th<?php echo ++$i; ?>" class="type"><?php echo __('Type'); ?></th>
        <th id="th<?php echo ++$i; ?>" class="collation"><?php echo __('Collation'); ?></th>
        <th id="th<?php echo ++$i; ?>" class="attributes"><?php echo __('Attributes'); ?></th>
        <th id="th<?php echo ++$i; ?>" class="null"><?php echo __('Null'); ?></th>
        <th id="th<?php echo ++$i; ?>" class="default"><?php echo __('Default'); ?></th>
    <!-- 2011/12/01 やすはるラボ追加(表ヘッダに「コメント」追加) -->
        <th id="th<?php echo ++$i; ?>"><?php echo __('Comments'); ?></th>
    <!-- 2011/12/01 やすはるラボ追加 end -->
        <th id="th<?php echo ++$i; ?>" class="extra"><?php echo __('Extra'); ?></th>
    <?php if ($db_is_information_schema || $tbl_is_view) { ?>
        <th id="th<?php echo ++$i; ?>" class="view"><?php echo __('View'); ?></th>
    <?php } else { ?>
    <!-- 2011/12/01 やすはるラボ修正(表ヘッダに項目を追加したためcolspan拡張) -->
        <th colspan="8" id="th<?php echo ++$i; ?>" class="action"><?php echo __('Action'); ?></th>
    <!-- 2011/12/01 やすはるラボ修正 end -->
    <?php } ?>
    </tr>
    </thead>
    <tbody>
    

  3. レコード一覧のカラム名にカーソルを合わせた時にプライマリーキーだけコメントが表示されないバグ修正




  4. before AFTER

        // underline commented fields and display a hover-title (CSS only)
    
        if (isset($comments_map[$row['Field']])) {
            $displayed_field_name = '<span class="commented_column" title="' . htmlspecialchars($comments_map[$row['Field']]) . '">' . $field_name . '</span>';
        }
    
        if ($primary && $primary->hasColumn($field_name)) {
            $displayed_field_name = '<u>' . $field_name . '</u>';
        }
    

    // 2011/12/01 やすはるラボ修正(プライマリーキーだけコメントが表示されないバグ修正)
    	{
    		$is_u=($primary && $primary->hasColumn($field_name));
    		if (isset($comments_map[$row['Field']])) {
    			$displayed_field_name = ($is_u ? '<u>':'') .
    				'<span class="commented_column" title="' . htmlspecialchars($comments_map[$row['Field']]) . '">' . $field_name . '</span>' .
    				($is_u ? '</u>':'');
    		}
    	}
    // 2011/12/01 やすはるラボ修正 end
    

  5. カラム一覧にカラム別のコメント表示




  6. before AFTER

        else {
            echo '<i>' . _pgettext('None for default','None') . '</i>';
        } ?></td>
        <td nowrap="nowrap"><?php echo strtoupper($row['Extra']); ?></td>
    

        else {
            echo '<i>' . _pgettext('None for default','None') . '</i>';
        } ?></td>
    <!-- 2011/12/01 やすはるラボ追加(カラム別のコメント表示) -->
    	<td><?php echo htmlspecialchars($comments_map[$row['Field']]); ?></td>
    <!-- 2011/12/01 やすはるラボ追加 end -->
        <td nowrap="nowrap"><?php echo strtoupper($row['Extra']); ?></td>
    

/phpMyAdmin/libraries/display_tbl.lib.php 修正

  1. レコード一覧のコメント表示がじゃまなので削除



  2. before AFTER

    // 2.0 Prepare comment-HTML-wrappers for each row, if defined/enabled.
    if (isset($comments_map) &&
            isset($comments_map[$fields_meta[$i]->table]) &&
            isset($comments_map[$fields_meta[$i]->table][$fields_meta[$i]->name])) {
        $comments = '<span class="tblcomment">' . htmlspecialchars($comments_map[$fields_meta[$i]->table][$fields_meta[$i]->name]) . '</span>';
    } else {
        $comments = '';
    }
    

    // 2.0 Prepare comment-HTML-wrappers for each row, if defined/enabled.
    // 2011/12/01 やすはるラボ 修正(コメントがじゃまなのでコメントを消しておく)
    $comments = '';
    // 2011/12/01 やすはるラボ 修正 end
    


以上で修正作業は終了です。

それでは修正後の様子をみてましょう!

  1. コメントが表示されず使いにくかったカラム一覧は‥‥
  2. before

  3. コメントが付き使いやすくなりました!
  4. AFTER



    これでオレオレなカラム名を付けても一目瞭然!

    忘れやすい熟練プログラマーも自分の記憶力にイライラしません!

    (まぁ、なるべくわかりやすいコメント、カラム名を付けましょうね!)
  5. じゃまなところにコメントが表示され、左右スクロールがめんどうだったレコード一覧も
  6. before

  7. なんということでしょう〜!
    コメントが無くなり、カラムもすっきり!
    左右スクロールが不要になりました!
  8. AFTER


そんなわけで‥‥

軽くビフォーアフター風にまとめてみましたが、いかがでしたでしょうか。
特に意味は無いんですけどw
またそのうち気が向いたらやろうかなー。


■ここからはちょっと深い話
 ちなみにphpMyAdminにはコメントを表示する機能がオプションで付いています。
 libraries/config.default.phpの$cfg['ShowPropertyComments']などですねー。
 これらは基本デフォルトのままで使っています。

 これらの値をみて処理を変更するようにも作れるでしょうが、コメント表示をOFFにするつもりは無かったのでメンドイ処理はいっさい入れませんでした。
 config.inc.phpにもコメントに関わりそうな設定がありますが、そちらの設定はコメントOFFにしただけの状態です。
 phpMyAdminの設定について詳しく知りたい方は、関連リンクから辿ってみてください。

ビフォー・アフター

ビフォー・アフター