테스트 사이트 - 개발 중인 베타 버전입니다

sql문 질문드립니다. 채택완료

다나한포션 2년 전 조회 1,978

안녕하세요

 

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

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

 

cf_1_subj = A

cf_1 = 에이

 

cf_2_subj = B

cf_2 = 비

 

이런식 으로 되어있구요

 

 

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

 

</p>

<p>// wr_7 값이 A를 포함하는 경우

if (strpos($wr_7, 'A') !== false) {

    $wr_3 = '에이'; // wr_7값중 A를 포함할 때 wr_3 값을 에로 설정

} else {

    $wr_3 = $data_received['wr_3'] ?? ''; // 그 외의 경우에는 원래 값을 사용

}</p>

<p> </p>

<p>// 게시물 업데이트

$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, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";</p>

<p>

 

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

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

 

</p>

<p>// 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'] ?? ''; // 그 외의 경우에는 원래 값을 사용

}</p>

<p>

 

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

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

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

 

 

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

</p>

<p>$sql = "SELECT * FROM g5_config";

$result = $db->query($sql);</p>

<p>

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</p>

<p>    // 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; // 필드를 찾았으면 반복문 종료

    }

}</p>

<p>

 

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

 

감사합니다.

 

 

 

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

답변 2개

채택된 답변
+20 포인트
2년 전

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

</p>

<p><?php

$cnt = 5;</p>

<p> </p>

<p>// 1. normal

$cf_1_subj = 'A';

$cf_2_subj = 'B';

$cf_3_subj = 'C';

$cf_4_subj = 'D';

$cf_5_subj = 'E';</p>

<p>$cf_1 = '에이';

$cf_2 = '비';

$cf_3 = '씨';

$cf_4 = '디';

$cf_5 = '이';</p>

<p> </p>

<p>// 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' => '이',

// ];</p>

<p> </p>

<p>$data_received = ['wr_3' => 'data_received_wr_3'];

$wr_3 = '';

$wr_7 = 'A';</p>

<p> </p>

<p>for ($i = 1; $i <= $cnt; $i++) {

    // 1. normal

    $val_cf_n_subj = ${"cf_{$i}_subj"};

    $val_cf_n = ${"cf_{$i}"};</p>

<p> </p>

<p>    // 2. array

    // $val_cf_n_subj = $config['cf_' . $i . '_subj'];

    // $val_cf_n = $config['cf_' . $i];</p>

<p> </p>

<p>    if (strpos($wr_7, $val_cf_n_subj) !== false) {

        $wr_3 = $val_cf_n;

        break;

    }

}</p>

<p> </p>

<p>if (empty($wr_3) == true) {

    $wr_3 = $data_received['wr_3'];

}

?></p>

<p>

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

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

2년 전

if (strpos($wr_7, '$cf_1_subj') !== false) {
  $wr_3 = '$cf_1'; 

if (strpos($wr_7, $config['cf_1_subj']) !== false) {
  $wr_3 = $config['cf_1']; 

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

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

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

로그인