sql문 질문드립니다.

sql문 질문드립니다.

QA

sql문 질문드립니다.

본문

안녕하세요

 

환경설정의 여분필드 값을 통해 비교 후 

게시판 여분필드에 해당 값을 넣으려 합니다.

 

cf_1_subj = A

cf_1 = 에이

 

cf_2_subj = B

cf_2 = 비

 

이런식 으로 되어있구요

 

 

게시판에 입력되는 wr_7값이 A 면 wr_3 에 "에이"를 입력하려 합니다.

 


// wr_7 값이 A를 포함하는 경우
if (strpos($wr_7, 'A') !== false) {
    $wr_3 = '에이'; // wr_7값중 A를 포함할 때 wr_3 값을 에로 설정
} else {
    $wr_3 = $data_received['wr_3'] ?? ''; // 그 외의 경우에는 원래 값을 사용
}
 
// 게시물 업데이트
$sql = "INSERT INTO $write_table (wr_id, wr_num, wr_subject, wr_name, wr_1, wr_2, wr_3, wr_4, wr_5, wr_6, wr_7, wr_8, wr_9, wr_10, wr_content, wr_datetime, wr_ip, wr_un)
VALUES (NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

 

이렇게 직접적으로 소스에서 값을 넣으면 잘되는데

이걸 환경설정의 cf_1 ~ cf_10 / cf_1_subj ~ cf_10_subj 까지 적용하고 싶습니다.

 


// wr_7 값이 A를 포함하는 경우
if (strpos($wr_7, '$cf_1_subj') !== false) {
    $wr_3 = '$cf_1'; // wr_7값중 A를 포함할 때 wr_3 값을 에이로 설정
} else {
    $wr_3 = $data_received['wr_3'] ?? ''; // 그 외의 경우에는 원래 값을 사용
}

 

이렇게 하면될것 같은데..

g5_config 부분도 선언을 해줘야 할 것 같고.. (아직 cf_1 ~~ 값들을 못받아오고있습니다..ㅠ)

더 중요한건 10개를 전부 저렇게 넣으면 소스가 길어지고 비효율적일것 같아서요..

 

 

현재 만들어보고 있는 소스입니다.. (물론 안되고있습니다...ㅎ)


$sql = "SELECT * FROM g5_config";
$result = $db->query($sql);

for ($i = 1; $i <= 10; $i++) {
    $cf_subj_field = "cf_{$i}_subj"; // cf_1_subj, cf_2_subj, ..., cf_10_subj
    $cf_field = "cf_{$i}"; // cf_1, cf_2, ..., cf_10
    // wr_7 값 중 해당 subj 필드가 포함되어 있는지 확인
    if (in_array($cf_subj_field, $config_fields) && in_array($cf_field, $config_fields) && strpos($wr_7, $$cf_subj_field) !== false) {
        $wr_3 = $$cf_field; // wr_3 값을 업데이트
        break; // 필드를 찾았으면 반복문 종료
    }
}

 

혹시 좋은 방법 알고 계신 고수님들 도움 부탁드립니다.

 

감사합니다.

 

 

 

이 질문에 댓글 쓰기 :

답변 2

다음 코드가 도움이 될지 모르겠습니다.


<?php
$cnt = 5;
 
// 1. normal
$cf_1_subj = 'A';
$cf_2_subj = 'B';
$cf_3_subj = 'C';
$cf_4_subj = 'D';
$cf_5_subj = 'E';
$cf_1 = '에이';
$cf_2 = '비';
$cf_3 = '씨';
$cf_4 = '디';
$cf_5 = '이';
 
// 2. array
// $config = [
//     'cf_1_subj' => 'A',
//     'cf_2_subj' => 'B',
//     'cf_3_subj' => 'C',
//     'cf_4_subj' => 'D',
//     'cf_5_subj' => 'E',
//     'cf_1' => '에이',
//     'cf_2' => '비',
//     'cf_3' => '씨',
//     'cf_4' => '디',
//     'cf_5' => '이',
// ];
 
$data_received = ['wr_3' => 'data_received_wr_3'];
$wr_3 = '';
$wr_7 = 'A';
 
for ($i = 1; $i <= $cnt; $i++) {
    // 1. normal
    $val_cf_n_subj = ${"cf_{$i}_subj"};
    $val_cf_n = ${"cf_{$i}"};
 
    // 2. array
    // $val_cf_n_subj = $config['cf_' . $i . '_subj'];
    // $val_cf_n = $config['cf_' . $i];
 
    if (strpos($wr_7, $val_cf_n_subj) !== false) {
        $wr_3 = $val_cf_n;
        break;
    }
}
 
if (empty($wr_3) == true) {
    $wr_3 = $data_received['wr_3'];
}
?>
답변을 작성하시기 전에 로그인 해주세요.
전체 2,667
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT