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

Copy
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개

채택된 답변
+20 포인트
Copy
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}'");
    }
}
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

소중한 답변 감사합니다.` 알려주신 것으로 하니 잘 되네요^^

댓글을 작성하려면 로그인이 필요합니다.

$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);

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

소중한 답변 감사합니다~^^

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고