티스토리 뷰
반응형
구상부터 하고
일괄적용 -> 아이템 테이블에서 해당 카테고리의 모든 상품을 찾고 => 그 상품의 option 테이블에서 해당옵션들을 찾아서
현재 선택받은 옵션1의 값과 항목을 가지고 기존 옵션을 바꿔주는 코드로 만들기
우선 상품이 어떻게 옵션을 다른 카테고리에 적용시킬건지를 생각한 다음에 아래처럼 파일 하나를 만들어서
처리하는 기능을 달아주고
\adm\shop_admin\ajax.category_options.php
<?php
include_once('./_common.php');
//error_reporting(E_ALL);
//ini_set('display_errors', 1);
//ini_set('display_startup_errors', 1);
$category = addslashes($_POST['category']);
$categorylevel = addslashes($_POST['categorylevel']);
$action = addslashes($_POST['action']);
$opt1_subject = addslashes($_POST['opt1_subject']);
$opt2_subject = addslashes($_POST['opt2_subject']);
$opt1 = addslashes($_POST['opt1']);
$opt2 = addslashes($_POST['opt2']);
$optprice = addslashes($_POST['optprice']);
/*
$category = '601010';
$categorylevel = '2';
$opt1_subject = 'quality';
$opt2_subject = 'size';
$opt1 = '일반,1:1';
$opt2 = 'M,L,XL,2XL';
$optprice = '45000';
$action = 'supply';
*/
$categoryField = $categorylevel === '1' ? 'ca_id' : 'ca_id2';
if ($action == "supply") {
$sql = "SELECT it_id , it_option_subject FROM {$g5['g5_shop_item_table']}
WHERE $categoryField = '{$category}'";
$counter = 0;
$result = sql_query($sql);
echo $total_rows = sql_num_rows($result);
echo '<br>';
// 날짜와 시간을 기반으로 한 파일명 생성
/*
$date_str = date('Ymd_His'); // 예: 20241105_153000
$log_dir = G5_PATH.'/clog/';
if (!is_dir($log_dir)) {
mkdir($log_dir, 0755, true); // 폴더가 없을 경우 생성
}
$log_filename = "{$log_dir}catelog_{$category}_{$date_str}.txt";
$mismatched_options = []; // 옵션 불일치 항목을 저장할 배열
*/
for ($i = 0; $row = sql_fetch_array($result); $i++) {
//print_r($row);
$it_option_subject = $row['it_option_subject'];
//echo '<br>';
$supply_it_option_subject = $opt1_subject . ',' . $opt2_subject;
if ($it_option_subject !== '옵션1,옵션2') {
// 옵션 수가 일치하지 않는 상품을 배열에 추가
$mismatched_options[] = "Item ID: {$row['it_id']}, Category: {$category}";
continue; // 옵션 불일치 항목은 건너뜁니다.
//return;
}
$sql = " UPDATE {$g5['g5_shop_item_table']} SET it_option_subject = '{$supply_it_option_subject}'
WHERE it_id = '{$row['it_id']}'";
sql_query($sql);
//echo '<br>';
$sql_option_check = "SELECT * FROM {$g5['g5_shop_item_option_table']}
WHERE it_id = '{$row['it_id']}' AND io_type = '0' ORDER BY io_no ASC";
//echo '<br>';
$option_result = sql_query($sql_option_check);
if (sql_num_rows($option_result) > 0) {
//echo '배열 존재 및 일치';
$ori_array1 = explode(',', $opt1);
for ($x = 0; $xrow = sql_fetch_array($option_result); $x++) {
//echo '기존 옵션 아이디: ' . $xrow['io_id'];
//echo ' 변경 옵션 아이디 :';
$new_io_id = preg_replace('/^[^]+/', $ori_array1[0], $xrow['io_id']);
//echo $new_io_id;
//echo '<br>';
//echo '기존 옵션의 변경 쿼리문: ';
$sql_option_update = "
UPDATE {$g5['g5_shop_item_option_table']}
SET io_id = '{$new_io_id}'
WHERE io_no = '{$xrow['io_no']}'
";
sql_query($sql_option_update);
//echo '<br>';
for ($s = 1; $s < count($ori_array1); $s++) {
//echo ' 새로 추가 옵션 아이디 : ';
$new_insert_io_id = preg_replace('/^[^]+/', $ori_array1[$s], $xrow['io_id']);
//echo $new_insert_io_id;
//echo '<br>';
//echo ' 옵션 새로 추가하는 쿼리문';
$sql_option_insert = "
INSERT INTO {$g5['g5_shop_item_option_table']}
(io_id, io_price, it_id, io_type, io_stock_qty, io_noti_qty, io_use)
VALUES (
'{$new_insert_io_id}',
'{$optprice}',
'{$row['it_id']}',
'0',
'9999',
'100',
'1'
)";
sql_query($sql_option_insert);
//echo '<br>';
}
}
} else {
// 옵션 갯수가 일치하지 않는 상품 특별 관리.
// category 값과 오늘 날짜의 이름을 가진 파일로 저장
//$mismatched_options[] = "옵션 체크 Item ID: {$row['it_id']}, Category: {$category}";
}
//echo '<br>';
$counter++;
//if ($counter > 1 ) {
// echo "Processed $counter items...\n";
// ob_flush();
// flush();
//}
// 옵션 불일치 항목이 있을 경우 로그 파일로 저장
//if (!empty($mismatched_options)) {
// file_put_contents($log_filename, implode(PHP_EOL, $mismatched_options));
// echo "옵션 불일치 항목이 {$log_filename}에 저장되었습니다.";
//}
}
}
버튼 하나 만들어준다음에
// 선택된 옵션 데이터 수집 및 AJAX 요청
$("#sel_supply_category").click(function() {
// 1차, 2차 분류 선택창 띄우기
const categorylevel = prompt("1차 분류는 '1', 2차 분류는 '2'를 입력하세요:");
var category = '';
if (categorylevel !== '1' && categorylevel !== '2') {
alert("올바른 값을 입력해 주세요.");
return;
} else if (categorylevel == '1') {
category = $('#ca_id').val();
} else if (categorylevel == '2'){
category = $('#ca_id2').val();
}
// 금액 입력창 띄우기
const priceInput = prompt("옵션 금액을 입력하세요:");
const optprice = parseInt(priceInput, 10);
// 입력값이 정수가 아니면 경고 메시지 출력 후 함수 종료
if (isNaN(optprice)) {
alert("금액은 숫자 정수로 입력해 주세요.");
return;
}
var opt1_subject = $.trim($("#opt1_subject").val());
var opt2_subject = $.trim($("#opt2_subject").val());
var opt1 = $.trim($("#opt1").val());
var opt2 = $.trim($("#opt2").val());
$.ajax({
url: "<?php echo G5_ADMIN_URL; ?>/shop_admin/ajax.ca_options.php", // 요청 URL
type: "POST", // HTTP 요청 방식
data: {
category: category,
categorylevel: categorylevel,
action: 'supply',
opt1_subject: opt1_subject,
opt2_subject: opt2_subject,
opt1: opt1,
opt2: opt2,
optprice: optprice
},
beforeSend: function() {
console.log("AJAX 요청을 보내기 전:", {
category: category,
action: 'supply',
categorylevel: categorylevel,
opt1_subject: opt1_subject,
opt2_subject: opt2_subject,
opt1: opt1,
opt2: opt2,
optprice: optprice
});
},
success: function(response) {
// 서버로부터의 응답 처리
console.log("서버 응답:", response);
// 응답에 따라 UI 업데이트를 여기서 수행
// 예: $('#result').html(response);
},
error: function(jqXHR, textStatus, errorThrown) {
console.error("AJAX 요청 실패:", textStatus, errorThrown);
console.log("상태 코드:", jqXHR.status);
console.log("응답 텍스트:", jqXHR.responseText);
}
});
});
실행하는 기능을 관리자 상품 수정 페이지에 달아준다. 그럼 편하다
조만간 이거랑 상관없지만
폰보드 제어하는 프로그램 새로 제작하나할거래서 작업하면 다시 올리겠음.
반응형
'웹 > 그누보드' 카테고리의 다른 글
그누보드 sns 공유버튼 눌러서 보낼때 주소가 잘리는 현상이 생기는 분들은 참고하세요 게시물 공유할때 게시판으로 가게 되는 경우 입니다. (0) | 2024.05.16 |
---|---|
클라우드 플레어를 사용중인 호스트에서 클라이언트의 ip주소를 알수없나 (0) | 2024.05.02 |
윈도우로 그누보드 서버 공유기 apache , autoset 등에서 curl 에러 (0) | 2024.05.01 |
그누보드5 개인정보 없이 회원가입 이메일 사용안함 (1) | 2024.04.29 |
그누보드 이미지 500 에러 오토셋 url 관련 에러 httpd-vhosts.conf (0) | 2024.04.28 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- php8
- SSL
- 그누보드5
- Cloudflare
- 멀티계정
- 루팅
- Apache
- lsposed
- 그누보드
- 제로보드
- 셀레니움
- 당근
- 윈도우
- 텔레그램
- Magisk
- .htaccess
- 에러
- xe
- 아미나
- 오토셋
- 클라우드플레어
- 파이썬
- 유튜브
- 텔레그램봇
- 파이선
- 아파치
- Fullcalendar
- python
- 회원가입
- php
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함