Ignore:
Timestamp:
2008/05/31 20:20:34 (15 years ago)
Author:
kishida
Message:

sql文の高速化とforeachをwhileにする

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2/data/class/helper/SC_Helper_PageLayout.php

    r17104 r17340  
    6060                . TEMPLATE_NAME . "/" . $arrPageData[0]['filename'] . ".tpl"; 
    6161        } 
    62          
    63         foreach($arrPageData[0] as $key => $val) { 
     62         
     63        reset($arrPageData[0]); 
     64        while( list($key,$val) = each($arrPageData[0]) ){ 
    6465             $debug_message.= "arrPageData[$key]:" . $val . "\n"; 
    6566        } 
     
    120121     * @return array ページ情報を格納した配列 
    121122     */ 
    122     function lfgetPageData($where = '', $arrVal = ''){ 
    123         $objDBConn = new SC_DbConn;     // DB操作オブジェクト 
    124         $sql = "";                      // データ取得SQL生成用 
     123    function lfgetPageData($addwhere = '', $sqlval = ''){ 
     124        $objQuery = new SC_Query;       // DB操作オブジェクト 
    125125        $arrRet = array();              // データ取得用 
    126126 
    127         // SQL生成 
    128         $sql .= " SELECT"; 
    129         $sql .= " page_id";             // ページID 
    130         $sql .= " ,page_name";          // 名称 
    131         $sql .= " ,url";                // URL 
    132         $sql .= " ,php_dir";            // php保存先ディレクトリ 
    133         $sql .= " ,tpl_dir";            // tpl保存先ディレクトリ 
    134         $sql .= " ,filename";           // ファイル名称 
    135         $sql .= " ,header_chk ";        // ヘッダー使用FLG 
    136         $sql .= " ,footer_chk ";        // フッター使用FLG 
    137         $sql .= " ,edit_flg ";          // 編集可能FLG 
    138         $sql .= " ,author";             // authorタグ 
    139         $sql .= " ,description";        // descriptionタグ 
    140         $sql .= " ,keyword";            // keywordタグ 
    141         $sql .= " ,update_url";         // 更新URL 
    142         $sql .= " ,create_date";        // データ作成日 
    143         $sql .= " ,update_date";        // データ更新日 
    144         $sql .= " FROM "; 
    145         $sql .= "     dtb_pagelayout"; 
    146         $sql .= " WHERE "; 
    147  
     127        // SQL生成 
     128        // 取得するカラム 
     129        $col  = " page_id";             // ページID 
     130        $col .= " ,page_name";          // 名称 
     131        $col .= " ,url";                // URL 
     132        $col .= " ,php_dir";            // php保存先ディレクトリ 
     133        $col .= " ,tpl_dir";            // tpl保存先ディレクトリ 
     134        $col .= " ,filename";           // ファイル名称 
     135        $col .= " ,header_chk ";        // ヘッダー使用FLG 
     136        $col .= " ,footer_chk ";        // フッター使用FLG 
     137        $col .= " ,edit_flg ";          // 編集可能FLG 
     138        $col .= " ,author";             // authorタグ 
     139        $col .= " ,description";        // descriptionタグ 
     140        $col .= " ,keyword";            // keywordタグ 
     141        $col .= " ,update_url";         // 更新URL 
     142        $col .= " ,create_date";        // データ作成日 
     143        $col .= " ,update_date";        // データ更新日 
     144         
     145        // 取得するテーブル 
     146        $table = "dtb_pagelayout"; 
     147         
    148148        // where句の指定があれば追加 
    149         if ($where != '') { 
    150             $sql .= " " . $where . " "; 
    151         }else{ 
    152             $sql .= " page_id <> 0 "; 
    153         } 
    154  
    155         $sql .= " ORDER BY page_id"; 
    156  
    157         $arrRet = $objDBConn->getAll($sql, $arrVal); 
    158  
     149        $where = ($addwhere != '') ? $addwhere : "page_id <> 0"; 
     150         
     151        // 並び変え 
     152        $objQuery->setOrder('page_id'); 
     153         
     154        // SQL実行 
     155        $arrRet = $objQuery->select($col, $table, $where, $sqlval); 
     156         
     157        // 結果を返す 
    159158        return $arrRet; 
    160159    } 
     
    168167     */ 
    169168    function lfGetNaviData($url, $preview=false){ 
    170         $objDBConn = new SC_DbConn;     // DB操作オブジェクト 
     169        $objQuery = new SC_Query;       // DB操作オブジェクト 
    171170        $sql = "";                      // データ取得SQL生成用 
    172171        $arrRet = array();              // データ取得用 
     
    174173 
    175174        // SQL文生成 
    176         $sql = ""; 
    177         $sql .= " SELECT "; 
    178         $sql .= "     target_id "; 
    179         $sql .= "     ,(SELECT bloc_name FROM dtb_bloc AS bloc WHERE bloc.bloc_id = pos.bloc_id) AS bloc_name"; 
    180         $sql .= "     ,(SELECT tpl_path FROM dtb_bloc AS bloc WHERE bloc.bloc_id = pos.bloc_id) AS tpl_path"; 
    181         $sql .= "     ,(SELECT php_path FROM dtb_bloc AS bloc WHERE bloc.bloc_id = pos.bloc_id) AS php_path"; 
    182         $sql .= " FROM"; 
    183         $sql .= "     dtb_blocposition AS pos"; 
    184         $sql .= " WHERE"; 
     175        // 取得するカラム 
     176        $col = "target_id, bloc_name, tpl_path, php_path"; 
     177         
     178        // 取得するテーブル 
     179        $table = "dtb_blocposition AS pos, dtb_bloc AS bloc"; 
     180         
     181        // where文生成 
     182        $where = "bloc.bloc_id = pos.bloc_id"; 
    185183        if ($preview == true) { 
    186             $sql .= "     page_id = (SELECT page_id FROM dtb_pagelayout WHERE page_id = '0')"; 
     184            $where .= " AND EXISTS (SELECT page_id FROM dtb_pagelayout AS lay WHERE page_id = '0' AND pos.page_id = lay.page_id)"; 
    187185        }else{ 
    188             $sql .= "     page_id = (SELECT page_id FROM dtb_pagelayout WHERE page_id <> '0' AND url = ?)"; 
    189             $arrData = array($url); 
    190         } 
    191         $sql .= " ORDER BY target_id,bloc_row"; 
    192         $sql .= " "; 
    193  
     186            $where .= " AND EXISTS (SELECT page_id FROM dtb_pagelayout AS lay WHERE url = ? AND page_id <> '0' AND pos.page_id = lay.page_id)"; 
     187            $sqlval = array($url); 
     188        } 
     189        // 並び変え 
     190        $objQuery->setOrder('target_id, bloc_row'); 
     191         
    194192        // SQL実行 
    195         $arrRet = $objDBConn->getAll($sql, $arrData); 
    196  
     193        $arrRet = $objQuery->select($col, $table, $where, $sqlval); 
     194                                             
    197195        // 結果を返す 
    198196        return $arrRet; 
     
    208206    function lfGetNavi($arrNavi, $target_id) { 
    209207        $arrRet = array(); 
    210         if(is_array($arrNavi)) { 
    211             foreach($arrNavi as $key => $val){ 
    212                 // 指定された箇所と同じデータだけを取得する 
     208        if(is_array($arrNavi) === true) { 
     209            reset($arrNavi); 
     210            while( list($key,$val)= each($arrNavi) ){ 
     211                // 指定された箇所と同じデータだけを取得する 
    213212                if ($target_id == $val['target_id']){ 
    214213                    if ($val['php_path'] != '') { 
     
    259258     */ 
    260259    function lfDelPageData($page_id){ 
    261         // DBへデータを更新する 
    262         $objDBConn = new SC_DbConn;     // DB操作オブジェクト 
     260        // DBへデータを更新する 
     261        $objQuery = new SC_Query;       // DB操作オブジェクト 
    263262        $sql = "";                      // データ更新SQL生成用 
    264263        $ret = "";                      // データ更新結果格納用 
     
    269268 
    270269            $arrPageData = $this->lfgetPageData(" page_id = ? " , array($page_id)); 
    271             // SQL生成 
    272             $sql = " DELETE FROM dtb_pagelayout WHERE page_id = ?"; 
    273  
    274270            // SQL実行 
    275             $ret = $objDBConn->query($sql,array($page_id)); 
     271            $ret = $objQuery->delete("dtb_pagelayout", "page_id = ?", array($page_id)); 
    276272 
    277273            // ファイルの削除 
Note: See TracChangeset for help on using the changeset viewer.