채택완료

조건문 좀 봐주세요 ㅠㅠ

2020-10-14 (수) 11:32:21 1,862
Copy
if ($_POST['act_button'] == "철회") {

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

        // 실제 번호를 넘김
        $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);
    }

    $sql = " select ct_status
                    from {$g5['g5_shop_cart_table']}
                    where od_id = '$od_id' ";
    $result = sql_query($sql);

    $value = '';
    while ($row=sql_fetch_array($result)) {
        $value .= (($value)? ',' : '').$row['ct_status'];
    }

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

    if (strpos($value, $value2) == false) {
        $od_return_status = '';
        $od_status = $ct_status;
        $od_return_memo = '';

 

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

 

    }

}

이런걸 만들었는데요

철회버튼을 누를 시 cart_table에 업데이트 하는 것까진 정상적으로 되구요

뒤쪽의 order_table 쪽이 문젠데

    $sql = " select ct_status
                    from {$g5['g5_shop_cart_table']}
                    where od_id = '$od_id' ";
    $result = sql_query($sql);

    $value = '';
    while ($row=sql_fetch_array($result)) {
        $value .= (($value)? ',' : '').$row['ct_status'];
    }

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

    if (strpos($value, $value2) == false) {
        $od_return_status = '';
        $od_status = $ct_status;
        $od_return_memo = '';
         $sql2 = " update {$g5['g5_shop_order_table']}
                    set od_return_memo = '$od_return_memo',
                        od_return_status = '$od_return_status',
                        od_status = '$od_status'
                        where od_id = '$od_id' ";
        sql_query($sql2);
    }  

이 부분이 해당 od_id의 ct_status 부분을 가져와서

value2에 해당하는 부분이 없을 시

        $od_return_status = '';
        $od_status = $ct_status;
        $od_return_memo = '';

이렇게 해서 DB 업데이트 해주는건데요

value2에 해당하는게 있어도 바뀌네요

뭐가 잘못된건가요?

답변 1개 / 댓글 10개

채택된 답변
+20 포인트

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

배열 선언하셨으면 if (strpos($value, $value2)  이문구 이전에 배열을 loop해서 체크하셔야 합니다

답변에 대한 댓글 10개

if (strpos($value, $value2) == false) {

이걸

if (!in_array($value, $value2)) {

이렇게 바꿔봐도 결과는 같은데 다른 방법이 있나요?
$value를 찍어보세요 $value값 확인해보셔야 겠습니다.
아래 코드로 하면 1 이라고 잘 찍힙니다.
이제 보니 위에서 value값을 교환신청,교환중,교환완료,반품신청
이런식으로 쌓으셨네요
코드를 새로 짜셔야겠습니다.
1이라고 찍혀요
지금 문제가 ('교환신청','교환중','교환완료','반품신청','반품중','반품완료')

이게 없으면 바뀌어야 하는데

저게 있어도 바뀝니다 ㅠㅠ
od_id 가 고유값인가요? 코드 새로 올려드려요


[code]
$value2 = array('교환신청','교환중','교환완료','반품신청','반품중','반품완료');

$sql = " select ct_status
from {$g5['g5_shop_cart_table']}
where od_id = '$od_id' ";
$result = sql_query($sql);

$value = '';
while ($row=sql_fetch_array($result)) {

if (!in_array($row['ct_status'], $value2)) { //없으면 업데이트

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

}
[/code]
네 고유값이에요

이 창에서 od_id는 하나밖에 뜨지 않아요

말씀대로 해봤는데 역시 업데이트가 되버리네요 ㅠㅠ
if (strpos($value, '교환신청') == false) {

이렇게 해서 특정으로 딱 집어주면 정상적으로 동작하는데 말이죠 ㅠㅠ
그냥

if (strpos($value, '교환신청') == false || strpos($value, '반품신청') == false) ...

이런식으로 쭉 나열해야 할까봐요 ㅠㅠ ㅋㅋㅋㅋ
$row['ct_status']이 !in_array에 없으면 업데이트
아래것으로 해서 $row['ct_status']값 찍힌거 확인해보세용

[code]
$value2 = array('교환신청','교환중','교환완료','반품신청','반품중','반품완료');

$sql = " select ct_status
from {$g5['g5_shop_cart_table']}
where od_id = '$od_id' ";
$result = sql_query($sql);

$value = '';
while ($row=sql_fetch_array($result)) {

if (!in_array($row['ct_status'], $value2)) { //없으면 업데이트
echo $row['ct_status'];
$od_return_status = '';
$od_status = $ct_status;
$od_return_memo = '';
$sql2 = " update {$g5['g5_shop_order_table']}
set od_return_memo = '$od_return_memo',
od_return_status = '$od_return_status',
od_status = '$od_status'
where od_id = '$od_id' ";
sql_query($sql2);
}

}
[/code]
좀 줄여볼까 했는데 그냥 써야겠어요

|| 이걸루요 도와주셔서 너무 감사합니다 로또 당첨되세요~!

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