여분필드 값에 해당 되는 값이 다른 여분필드에 저장 관련 문의

광고배너
여분필드 값에 해당 되는 값이 다른 여분필드에 저장 관련 문의

QA

여분필드 값에 해당 되는 값이 다른 여분필드에 저장 관련 문의

답변 2

본문


function get_shipping_cost($wr_20) {
    $shipping_table = [
  '0.5' => 900, '1.0' => 1000,
    ];
  
    return $shipping_table[number_format($wr_20, 1)] ?? null;
}

if (isset($_POST['wr_20'])) {
    $wr_20_value = floatval(trim($_POST['wr_20']));  // wr_20 값을 숫자로 변환하여 가져옴
    $wr_22_value = get_shipping_cost($wr_20_value);  // wr_20에 따른 wr_22 값 설정
    // wr_22 값이 설정되었으면 DB에 저장
    if (!is_null($wr_22_value)) {
        sql_query("UPDATE {$write_table} SET wr_22 = '$wr_22_value' WHERE wr_id = '$wr_id'");
    }
}

위 내용은 wr_20에 값이 들어가면 wr_22에 저장이 되게 write_update.skin 파일에 있는 건데요

  $shipping_table 안에 더 많은 걸 넣으려고 하는데, 

이를테면 0.01~0.5 까지는 900  0.51~1.0까지는 1000 이렇게 하고 싶은데, 나중에는 더 넣고 싶은데 이거를  간단하게 넣을 수 있는 방법이 있을까요?

이 질문에 댓글 쓰기 :

답변 2


function get_shipping_cost($weight) {
    $shipping_table = [
        ['min_weight' => 0.01, 'max_weight' => 0.5, 'cost' => 900],
        ['min_weight' => 0.51, 'max_weight' => 1.0, 'cost' => 1000],
        // 필요에 따라 더 많은 구간을 추가할 수 있습니다.
    ];
    foreach ($shipping_table as $rate) {
        if ($weight >= $rate['min_weight'] && $weight <= $rate['max_weight']) {
            return $rate['cost'];
        }
    }
    // 정의된 범위를 벗어나는 경우 처리
    return end($shipping_table)['cost'];
}
 
if (isset($_POST['wr_20'])) {
    $wr_20_value = floatval(trim($_POST['wr_20']));
    $wr_22_value = get_shipping_cost($wr_20_value);
    if (!is_null($wr_22_value)) {
        sql_query("UPDATE {$write_table} SET wr_22 = '{$wr_22_value}' WHERE wr_id = '{$wr_id}'");
    }
}

$wr_18 = '0.5#900|1.0#1000'; // 예시 데이터

예를들어 wr_18번 여분필드에 값을 위와 같이 넣습니다.


$shipping_array = []; // 문자열을 |로 분리
$items = explode('|', $wr_18);
foreach ($items as $item) { // 각 항목을 #로 분리
      list($key, $value) = explode('#', $item); // 배열에 추가
     $shipping_array[$key] = (int)$value; // 값을 정수로 변환하여 저장
} // 결과 출력
print_r($shipping_array);

이렇게 하시면 쉽게 해결되겠네요.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 2,427
© SIRSOFT
현재 페이지 제일 처음으로