Changeset 19607


Ignore:
Timestamp:
2010/11/07 05:41:12 (13 years ago)
Author:
uchida
Message:

db index setting

Location:
branches/camp/camp-2_5-D/data
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/camp/camp-2_5-D/data/Smarty/templates/admin/system/editdb.tpl

    r19117 r19607  
    2424 
    2525<h2>インデックス管理</h2> 
     26 
     27<form name="index_form"  method="post" action="?">  
     28  <input type="hidden" name="mode" value="confirm" /> 
     29      <table class="list"> 
     30       
     31      <tr> 
     32    <th>テーブル名</th> 
     33    <th>カラム名</th> 
     34    <th>インデックス</th> 
     35    </tr> 
     36 
     37       
     38 <!--{section name=cnt loop=$arrForm}--> 
     39   
     40    <tr> 
     41    <td><!--{$arrForm[cnt].table_name}--></td> 
     42    <td><!--{$arrForm[cnt].column_name}--></td> 
     43    <td><input type="checkbox" name="indexflag_new[]" value="<!--{$smarty.section.cnt.index}-->" <!--{if $arrForm[cnt].indexflag == "1"}-->checked<!--{/if}--> /></td> 
     44    </tr> 
     45<input type="hidden" name="table_name[]" value="<!--{$arrForm[cnt].table_name}-->" /> 
     46<input type="hidden" name="column_name[]" value="<!--{$arrForm[cnt].column_name}-->" /> 
     47<input type="hidden" name="indexflag[]" value="<!--{$arrForm[cnt].indexflag}-->" /> 
     48 
     49<!--{/section}--> 
     50</table> 
     51 
     52<input type="submit" value="変更する"> 
     53</form> 
  • branches/camp/camp-2_5-D/data/class/pages/admin/system/LC_Page_Admin_System_Editdb.php

    r19392 r19607  
    5959        $objForm = new SC_FormParam(); 
    6060        $objForm->addParam('mode', 'mode', INT_LEN, '', array('ALPHA_CHECK', 'MAX_LENGTH_CHECK')); 
    61         $objForm->setParam($_GET); 
     61        $objForm->addParam('table_name', 'テーブル名'); 
     62        $objForm->addParam('column_name', 'カラム名'); 
     63        $objForm->addParam('indexflag', 'インデックス'); 
     64    $objForm->addParam('indexflag_new', 'インデックス(変更後)'); 
     65     
     66    $objForm->setParam($_POST); 
    6267        $this->objForm = $objForm; 
    6368    } 
     
    7277        SC_Utils_Ex::sfIsSuccess(new SC_Session); 
    7378        $objView = new SC_AdminView(); 
     79    $objSiteInfo = new SC_SiteInfo(); 
     80        $objQuery = new SC_Query(); 
     81        $objDb = new SC_Helper_DB_Ex(); 
     82        $objProduct = new SC_Product(); 
    7483 
     84    //インデックスの値を取得 
     85    $this->arrForm = $this->lfGetIndexList(); 
     86     
     87    //フォームの値を取得 
    7588        $this->initForm(); 
     89     
    7690        switch($this->objForm->getValue('mode')) { 
     91    //確認画面へ 
     92    case 'confirm' : 
     93        //POSTの値と配列の値を比較 
     94        // TODO: $_POSTを使わないように修正する。 
     95            $arrIndexFlag  = $_POST['indexflag']; 
     96            $arrIndexFlagNewIndex  = $_POST['indexflag_new']; 
    7797 
     98            $arrIndexFlagNew = array(); 
     99            for($i = 0; $i < count($arrIndexFlag); $i++) { 
     100                if(array_search($i, $arrIndexFlagNewIndex) !== false) { 
     101                    $arrIndexFlagNew[] = true; 
     102                } else { 
     103                    $arrIndexFlagNew[] = false; 
     104        } 
     105        } 
     106 
     107            $objQuery = new SC_Query(); 
     108        foreach($arrIndexFlag as $key => $val){ 
     109        if($val != $arrIndexFlagNew[$key]) { 
     110                    //値が異なっていた場合、インデックスのアップデートをかける 
     111                    $index_name = $_POST["table_name"][$key] . "_" . $_POST["column_name"][$key] . "_key"; 
     112                    if($arrIndexFlagNew[$key] == false) { 
     113                        $objQuery->dropIndex($_POST["table_name"][$key], $index_name); 
     114                    } else { 
     115                        $objQuery->createIndex($_POST["table_name"][$key], $index_name, array('fields' => array($_POST["column_name"][$key] => array()))); 
     116                    } 
     117 
     118                    // フォームに引継ぐ 
     119                    $this->arrForm[$key]["indexflag"] = true; 
     120        } 
     121        } 
     122         
     123        $this->tpl_onload = "window.alert('インデックスの変更が完了しました。');"; 
    78124        default: 
    79             break; 
     125        break; 
    80126        } 
    81  
    82         // インデックス一覧を取得する 
    83         $arrIndexList = $this->lfGetIndexList(); 
    84127 
    85128        $objView->assignobj($this); 
     
    95138        parent::destroy(); 
    96139    } 
    97  
     140     
    98141    /** 
    99142     * インデックス設定を行う一覧を返す関数 
     
    106149        $objQuery = new SC_Query(); 
    107150        $objQuery->setOrder("table_name, column_name"); 
    108         $arrIndexList = $objQuery->select("table_name, column_name, recommend_flg, recommend_comment", "dtb_index_list"); 
     151        $arrIndexList = $objQuery->select("table_name , column_name , recommend_flg, recommend_comment", "dtb_index_list"); 
    109152 
    110153        $table = ""; 
     
    126169        return $arrIndexList; 
    127170    } 
    128  
     171     
    129172} 
Note: See TracChangeset for help on using the changeset viewer.