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

구문 오류 좀 봐주세요 ㅠㅠ 채택완료

블랑숑 5년 전 조회 1,248

</p>

<p>if ($_POST['act_button'] == "철회") {</p>

<p>    for ($i=0; $i<count($_POST['chk']); $i++) {</p>

<p>        // 실제 번호를 넘김

        $k = $_POST['chk'][$i];

        $it_id = (int) $_POST['it_id'][$k];

        $ct_status = $_POST['ct_status2'][$k];

        $ct_status2 = '';

            

        $sql = " update {$g5['g5_shop_cart_table']}

                   set ct_status = '$ct_status',

                       ct_status2 = '$ct_status2'

                       where od_id = '$od_id'

                        and it_id = '$it_id' ";

        sql_query($sql);

    }</p>

<p>    $sql = " select ct_status

                    from {$g5['g5_shop_cart_table']}

                    where od_id = '$od_id' ";

    $result = sql_query($sql);</p>

<p>    $value = '';

    while ($row=sql_fetch_array($result)) {

        $value .= (($value)? ',' : '').$row['ct_status'];

    }</p>

<p>    if (!in_array($value,'교환신청') && !in_array($value,'교환중') && !in_array($value,'교환완료') && !in_array($value,'반품신청') && !in_array($value,'반품중') && !in_array($value,'반품완료')) {</p>

<p>        $od_return_status = '';

        $od_status = $ct_status;

        $od_return_memo1 = '';

        $od_return_memo2 = '';</p>

<p>        $sql2 = " update {$g5['g5_shop_order_table']}

                    set od_return_memo1 = '$od_return_memo1',

                        od_return_memo2 = '$od_return_memo2',

                        od_return_status = '$od_return_status',

                        od_status = '$od_status'

                        where od_id = '$od_id' ";

        sql_query($sql2);</p>

<p>    } else if (!in_array($value,'교환신청') && !in_array($value,'교환중') && !in_array($value,'교환완료')) {</p>

<p>            $od_return_memo1 = '';</p>

<p>            $sql2 = " update {$g5['g5_shop_order_table']}

                        set od_return_memo1 = '$od_return_memo1',

                            where od_id = '$od_id' ";

            sql_query($sql2);</p>

<p>    } else if (!in_array($value,'반품신청') && !in_array($value,'반품중') && !in_array($value,'반품완료')) {</p>

<p>            $od_return_memo2 = '';</p>

<p>            $sql2 = " update {$g5['g5_shop_order_table']}

                        set od_return_memo2 = '$od_return_memo2',

                            where od_id = '$od_id' ";

            sql_query($sql2);</p>

<p>    }</p>

<p>}</p>

<p>

 

여기서 $value 값을 찍어보면

 

교환신청,교환신청,완료

 

이렇게 나옵니다.

 

그러면 

 

else if (!in_array($value,'반품신청') && !in_array($value,'반품중') && !in_array($value,'반품완료'))

 

이 조건으로 들어가야 하는데

 

if (!in_array($value,'교환신청') && !in_array($value,'교환중') && !in_array($value,'교환완료') && !in_array($value,'반품신청') && !in_array($value,'반품중') && !in_array($value,'반품완료')) {

 

이 조건으로 들어가버립니다

 

뭐가 문제일까요? ㅠㅠ

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

답변 3개

채택된 답변
+20 포인트
스피드S
5년 전

이제 배열이 빠졌으니  in_array => preg_match 으로 바꿔주세요

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

답변에 대한 댓글 2개

블랑숑
5년 전
!preg_match('[교환신청|교환중|교환완료|반품신청|반품중|반품완료]',$value)

이렇게 하면 되나요?
블랑숑
5년 전
이렇게 할 경우

if (!preg_match('[교환신청|교환중|교환완료|반품신청|반품중|반품완료]',$value)) {

$od_return_status = '';
$od_status = $ct_status;
$od_return_memo1 = '';
$od_return_memo2 = '';

$sql2 = " update {$g5['g5_shop_order_table']}
set od_return_memo1 = '$od_return_memo1',
od_return_memo2 = '$od_return_memo2',
od_return_status = '$od_return_status',
od_status = '$od_status'
where od_id = '$od_id' ";
sql_query($sql2);

} elseif (!preg_match('[교환신청|교환중|교환완료]',$value)) {

$od_return_memo1 = '';

$sql2 = " update {$g5['g5_shop_order_table']}
set od_return_memo1 = '$od_return_memo1',
where od_id = '$od_id' ";
sql_query($sql2);

} elseif (!preg_match('[반품신청|반품중|반품완료]',$value)) {

$od_return_memo2 = '';

$sql2 = " update {$g5['g5_shop_order_table']}
set od_return_memo2 = '$od_return_memo2',
where od_id = '$od_id' ";
sql_query($sql2);

}

맨 위 것은 조건에 맞을 시 동작을 하는데

아래 것은 동작을 하지 않아요 잘못 넣은건가요?

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

스피드S
5년 전

참고해서 사용하세요~

</p>

<p><?php

    $value1 = array('교환신청','교환중','교환완료','반품신청','반품중','반품완료');

    $value2 = array('교환신청','교환중','교환완료');

    $value3 = array('반품신청','반품중','반품완료');

    $value = array('0','1','2','3','반품중','교환완료');

    for($i=0; $i<count($value); $i++) {

    if (!in_array($value[$i], $value1)) { //없으면 카운트

        echo"Type1 $value[$i] 
";

    } elseif (!in_array($value[$i], $value2)) { //없으면 카운트

        echo"Type2 $value[$i] 
";

    } elseif (!in_array($value[$i], $value3)) { //없으면 카운트

        echo"Type3 $value[$i] 
";

    }   

    }

?></p>

<p>

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

답변에 대한 댓글 1개

블랑숑
5년 전
감사합니다 ㅠㅠ

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

5년 전

$value 값을 조건문 위에 찍어보세요 머라고 나오는지 보시면 바로 이해되실거예요 

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

답변에 대한 댓글 1개

블랑숑
5년 전
교환신청,교환신청,완료 요렇게 나와요

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

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

로그인