Changeset 18609 for tmp/version-2_5-test/data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSVCategory.php
- Timestamp:
- 2010/03/11 10:35:11 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tmp/version-2_5-test/data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSVCategory.php
r18562 r18609 50 50 $this->tpl_mainno = 'products'; 51 51 $this->tpl_subno = 'upload_csv_category'; 52 $this->tpl_subtitle = 'カテゴリ登録CSV'; 52 53 } 53 54 … … 123 124 124 125 echo "■ CSV登録進捗状況 <br/><br/>\n"; 126 125 127 while (!feof($fp) && !$err) { 126 128 $arrCSV = fgetcsv($fp, CSV_LINE_MAX); … … 153 155 $this->objFormParam->convParam(); 154 156 // <br>なしでエラー取得する。 155 $arrCSVErr = $this->lfCheckError( );157 $arrCSVErr = $this->lfCheckError($arrCSV); 156 158 } 157 159 … … 166 168 167 169 if (!$err) { 168 $this->lfRegistProduct($objQuery, $ rec_count, $line);170 $this->lfRegistProduct($objQuery, $line,$arrCSV); 169 171 $regist++; 170 172 } … … 172 174 173 175 if (!$err) echo $line." / ".$rec_count. "行目 (カテゴリID:".$arrParam['category_id']." / カテゴリ名:".$arrParam['category_name'].")\n<br />"; 174 flush();176 SC_Utils_Ex::sfFlush(); 175 177 } 176 178 fclose($fp); … … 181 183 // カテゴリ件数カウント関数の実行 182 184 $objDb->sfCategory_Count($objQuery); 185 $objDb->sfMaker_Count($objQuery); 183 186 } else { 184 187 $objQuery->rollback(); … … 190 193 } 191 194 echo "<br/><a href=\"javascript:window.close()\">→閉じる</a>"; 192 flush();193 195 exit; 196 default: 194 197 break; 195 default:196 break;197 198 } 198 199 … … 230 231 $this->objFormParam->addParam("親カテゴリID","parent_category_id",INT_LEN,"n",array("MAX_LENGTH_CHECK","NUM_CHECK")); 231 232 } 232 233 233 234 /** 234 235 * カテゴリ登録を行う. 235 236 * 236 237 * @param SC_Query $objQuery SC_Queryインスタンス 237 * @param string|integer $rec_count 処理総数|integer $line 処理中の行数 238 * @return void 239 */ 240 function lfRegistProduct($objQuery, $rec_count, $line = "") { 238 * @param string|integer $line 処理中の行数 239 * @return void 240 */ 241 function lfRegistProduct($objQuery, $line = "",$arrCSV) { 242 241 243 $objDb = new SC_Helper_DB_Ex(); 242 $arrRet = $this->objFormParam->getHashArray(); 243 244 //カテゴリID 245 if ($arrRet['category_id'] == 0) { 246 $category_id = $objQuery->max("dtb_category", "category_id") + 1; 247 $sqlval['category_id'] = $category_id; 248 $update = false; 249 } else { 250 $sqlval['category_id'] = $arrRet['category_id']; 251 $update = true; 252 } 253 254 // カテゴリ名 255 $sqlval['category_name'] = $arrRet['category_name']; 256 //表示ランク(上から順に表示順を自動割り当て) 257 $sqlval['rank'] = ($rec_count + 1) - $line ; 244 $sqlval['category_id'] = $arrCSV[0]; 245 $sqlval['category_name'] = $arrCSV[1]; 246 $sqlval['parent_category_id'] = strlen($arrCSV[2]) ? $arrCSV[2] : 0; 247 248 //存在確認 249 $count = $objQuery->count("dtb_category","category_id = ?",array($sqlval['category_id'])); 250 $update = $count != 0; 258 251 259 252 // 親カテゴリID、レベル 260 if ($arrRet['parent_category_id'] == 0) { 261 $sqlval['parent_category_id'] = "0"; 253 if ($sqlval['parent_category_id'] == 0) { 262 254 $sqlval['level'] = 1; 263 255 } else { 264 $sqlval['parent_category_id'] = $arrRet['parent_category_id'];265 256 $parent_level = $objQuery->get("dtb_category", "level", "category_id = ?", array($sqlval['parent_category_id'])); 266 257 $sqlval['level'] = $parent_level + 1; 267 258 } 268 259 269 260 // その他 270 261 $time = date("Y-m-d H:i:s"); … … 275 266 $sqlval['update_date'] = $time; 276 267 $sqlval['creator_id'] = $_SESSION['member_id']; 277 268 278 269 // 更新 279 270 if ($update) { 280 echo " UPDATE";271 echo "更新 "; 281 272 $where = "category_id = ?"; 282 273 $objQuery->update("dtb_category", $sqlval, $where, array($sqlval['category_id'])); 283 274 284 275 // 新規登録 285 276 } else { 286 echo " INSERT";277 echo "登録 "; 287 278 $sqlval['create_date'] = $time; 279 // ランク 280 if ($sqlval['parent_category_id'] == 0) { 281 // ROOT階層で最大のランクを取得する。 282 $where = "parent_category_id = ?"; 283 $sqlval['rank'] = $objQuery->max("dtb_category", "rank", $where, array($sqlval['parent_category_id'])) + 1; 284 } else { 285 // 親のランクを自分のランクとする。 286 $where = "category_id = ?"; 287 $sqlval['rank'] = $objQuery->get("dtb_category", "rank", $where, array($sqlval['parent_category_id'])); 288 // 追加レコードのランク以上のレコードを一つあげる。 289 $sqlup = "UPDATE dtb_category SET rank = rank + 1 WHERE rank >= ?"; 290 $objQuery->exec($sqlup, array($sqlval['rank'])); 291 292 } 288 293 $objQuery->insert("dtb_category", $sqlval); 289 294 } … … 295 300 * @return void 296 301 */ 297 function lfCheckError() { 298 $arrRet = $this->objFormParam->getHashArray(); 302 function lfCheckError($arrCSV) { 303 // $arrRet = $this->objFormParam->getHashArray(); 304 $arrRet['category_id'] = $arrCSV[0]; 305 $arrRet['category_name'] = $arrCSV[1]; 306 $arrRet['parent_category_id'] = $arrCSV[2]; 307 299 308 $objQuery = new SC_Query(); 309 300 310 $objErr = new SC_CheckError($arrRet); 301 311 $objErr->arrErr = $this->objFormParam->checkError(false); 302 312 303 313 // 親カテゴリID設定 304 314 if ($arrRet['parent_category_id'] == 0) { … … 307 317 $parent_category_id = $arrRet['parent_category_id']; 308 318 } 309 319 310 320 // 存在する親カテゴリIDかチェック 311 321 if (count($objErr->arrErr) == 0) { … … 317 327 } 318 328 } 319 329 320 330 // 階層チェック 321 331 if (!isset($objErr->arrErr['category_name']) && !isset($objErr->arrErr['parent_category_id'])) { … … 332 342 if (empty($arrCat)) { 333 343 $arrCat = array(array("category_id" => "", "category_name" => "")); 344 } 334 345 // 編集中のレコード以外に同じ名称が存在する場合 335 }elseif ($arrCat[0]['category_id'] != $arrRet['category_id'] && $arrCat[0]['category_name'] == $arrRet['category_name']) { 336 $objErr->arrErr['category_name'] = "※ 既に同じ内容の登録が存在します。\n"; 346 if ($arrCat[0]['category_id'] != $arrRet['category_id'] && $arrCat[0]['category_name'] == $arrRet['category_name']) { 347 echo $arrCat[0]['category_id']; 348 echo "#######--------- line is ".__LINE__." on ".__FILE__."--------########<br/>"; 349 350 echo $arrRet['category_id']; 351 echo "#######--------- line is ".__LINE__." on ".__FILE__."--------########<br/>"; 352 353 echo $arrCat[0]['category_name'] ; 354 echo "#######--------- line is ".__LINE__." on ".__FILE__."--------########<br/>"; 355 echo $arrRet['category_name']; 356 echo "#######--------- line is ".__LINE__." on ".__FILE__."--------########<br/>"; 357 358 359 $objErr->arrErr['category_name'] = "※ 既に同じ内容の登録が存在します。</br>"; 360 337 361 } 338 362 } … … 343 367 * CSVのカウント数を得る. 344 368 * 345 * @param resource$fp fopenを使用して作成したファイルポインタ346 * @return integer CSV のカウント数369 * @param string $fp fopenを使用して作成したファイルポインタ 370 * @return mixed CSV のカウント数; $file_name が無効な場合は false 347 371 */ 348 372 function lfCSVRecordCount($fp) {
Note: See TracChangeset
for help on using the changeset viewer.