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

구매하기 클릭시 cartupdate.php에서 에러가 납니다.. 채택완료

스트롱베이비 7년 전 조회 2,881

회사 홈페이지에서 오류가 나서요..

 //--------------------------------------------------------

    //  변조 검사

    //--------------------------------------------------------

    error_reporting(E_ALL);

    ini_set("display_errors", 1);

    $opt_amount = 0;

    $sql = " select * from $g4[yc4_item_table] where it_id = '$_POST[it_id]' ";

    $it = sql_fetch($sql);

    for ($i=1; $i<=8; $i++) {

        //$dst_opt = $_POST["it_opt".$i];

        echo ""

        $dst_opt = trim($_POST["it_opt".$i]);

        if ($dst_opt) {

            $org_opt = $it["it_opt".$i];

            $exp_opt = explode("\n", trim($org_opt));

            $exists = false;

            for ($k=0; $k<count($exp_opt); $k++) {

                $opt = trim($exp_opt[$k]);

                if ($dst_opt == $opt) {

                    $exists = true;

                    $exp_option = explode(";", $opt);

                    $opt_amount += (int)$exp_option[1];

                    break;

                }

            }

            if ($exists == false) {

                // 옵션이 다름

                die("Error.");

            }

        }

    }

에러 메시지를 출력해보면

 

Notice: Undefined index: it_opt1 in /home/hosting_users/shimro0/www/shop/cartupdate.php on line 172

Error.

 

이렇게 나옵니다ㅠㅠ

it_opt1가 정의 되지 않았다는거 같은데..

제가 코딩 초보라 어디를 봐야할지 모르겠네요...

다른 상품들은 괜찮은데 유독 한 종류의 상품에서만 동일한 오류가 발생합니다.

정보가 부족하다면 말씀해주세요ㅠㅠ

도와주십쇼ㅠㅠ

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

답변 4개

채택된 답변
+20 포인트
잉끼s
7년 전

echo ""  <-세미콜론 없는데 이건 오류랑 상관 없는 것 같고요.

 

</p>

<p>if(!isset($_POST["it_opt".$i])</p>

<p>  continue;</p>

<p>$dst_opt = trim($_POST["it_opt".$i]);</p>

<p>

 

이와 같이 해당 변수가 있는지 확인하고 없으면 패스 하는 코드를 추가해주세요.

 

Notice: Undefined index 는 해당 에러는 배열변수에 해당 인덱스가 없으면 뿜는 에러인데 정상적인 동작에는 지장을 주지 않습니다.

영카트 기본은 Notice 에러는 뿜지 않도록 설정되어 있는데 common.php 중 error_reporting()을 수정하신 것으로 보입니다.

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

답변에 대한 댓글 5개

스트롱베이비
7년 전
echo는 $i값을 찍어보려고 하다가 중간에 복사해서 들어 간것 같습니다;;;

말씀해주신 코드를 제가 올린 코드 기준으로 11번 줄에 추가 했더니

Parse error: syntax error, unexpected T_CONTINUE in /home/hosting_users/shimro0/www/shop/cartupdate.php on line 174
위와 같이 에러가 났습니다..;

혹시나 해서 중괄호를
[code]if(!isset($_POST["it_opt".$i]){
continue;
}

$dst_opt = trim($_POST["it_opt".$i]);
[/code]
이렇게 삽입하거나
[code]if(!isset($_POST["it_opt".$i]){
continue;
$dst_opt = trim($_POST["it_opt".$i]);
}
[/code]

이렇게 감싸는 형태로 해봤지만

그러면 또
Parse error: syntax error, unexpected '{' in /home/hosting_users/shimro0/www/shop/cartupdate.php on line 173

이런식으로 싱텍스 에러가 납니다..ㅠㅠ

초보라서 제가 맞게 수정한건지 모르겠네요...ㅠㅠ
잉기
7년 전
if(!isset($_POST["it_opt".$i])) continue;
오타가 있었네요. 괄호를 하나 안 닫았습니다. 다시 해보시기 바랍니다.
스트롱베이비
7년 전
헉..저도 제대로 못봤네요...ㅠㅠ감사합니다.

해당 코드 삽입해서

[code]if(!isset($_POST["it_opt".$i])){
continue;

$dst_opt = trim($_POST["it_opt".$i]);

}[/code]

아래까지 감싸보니 오류없이 넘어갑니다ㅠㅠ
정말 감사합니다!!!

아 한가지만 더 여쭤보자면 반복문이 두바퀴를 돌때 에러가 나던데 해당하는 두번째 변수가 없어서 에러가 난건가요?
db상에는 it_opt2가 셀렉트 박스로 되어있거든요...
아니면 값을 3번째 값을 검색하는데 없어서 에러가 났을까요??
잉기
7년 전
잘못하셨어요.

if(!isset($_POST["it_opt".$i]))
continue;
$dst_opt = trim($_POST["it_opt".$i]);

{ } 중괄호 뺴세요.
그거 있음 안되요.
스트롱베이비
7년 전
헉..
중괄호를 빼야하나요???

[code]if(!isset($_POST["it_opt".$i]))
continue;
$dst_opt = trim($_POST["it_opt".$i]);[/code]

이렇게 넣으니
28번줄에 있는 Error. 문자만 찍히고
그전처럼 에러 메시지는 안찍힙니다.

그래서 감쌋더니 작동이 되더라구요;;

중괄호를 제거 하고 사용할 다른 방법이 있을까요?

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

잉끼s
7년 전

그러면 다른 부분이 문제가 있는겁니다.

저 중괄호가 저렇게 들어가면 옵션값이 한개도 저장이 안될겁니다.

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

답변에 대한 댓글 3개

스트롱베이비
7년 전
[code]
for ($i=1; $i<=8; $i++) {
//$dst_opt = $_POST["it_opt".$i];

echo "i = "+$i;
if(!isset($_POST["it_opt".$i])){
continue;

$dst_opt = trim($_POST["it_opt".$i]);


if ($dst_opt) {
$org_opt = $it["it_opt".$i];
$exp_opt = explode("\n", trim($org_opt));
$exists = false;
for ($k=0; $k<count($exp_opt); $k++) {
$opt = trim($exp_opt[$k]);
if ($dst_opt == $opt) {
$exists = true;
$exp_option = explode(";", $opt);
$opt_amount += (int)$exp_option[1];
break;
}
}
if ($exists == false) {
// 옵션이 다름
die("Error.");
}
}
}
}

[/code]

이런식으로 반복문 바로 아래 부터 전체를 감싸는 형태로 하면 괜찮을까요?
해당변수가 없으면 지나가는? 이런 형식으로 하면 될까요?

test해보니 실제로 주문까지 되고 주문관리하는 부분에서 주문된 정보가 넘어오는것으로 확인됩니다
잉기
7년 전
그렇게 하시면 안됩니다.
에러는 저 괄호가 아니라 다른 곳에서 발생하는거고요.
저 괄호로 묶는 바람에 해당 에러가 나는 부분이 실행이 되지 않아서 발생하지 않는 것 처럼 보일 뿐입니다.

저렇게 괄호로 묶을실꺼면 그냥 포문을 지워버리세요.
지금 상태라면 아무것도 동작하지 않는 것과 동일합니다.
스트롱베이비
7년 전
답변 감사합니다.
문제는 it_opt2 컬럼에있는 값에 문자열로 큰따옴표(")가 들어가있는데 이를 읽지 못하는것 같습니다.
큰따옴표를 문자열로 바꿔서 시도했더니 해결되었습니다.

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

진서기
7년 전
로그인 후 평가할 수 있습니다

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

플라이
7년 전

172 라인이 정확히 파악이 어렵지만

 

$dst_opt = trim($_POST["it_opt".$i]); 이 라인에서 $i 값으로 1값을 제대로 인식되어 가져오지 못하는 오류로 보여집니다.

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

답변에 대한 댓글 1개

스트롱베이비
7년 전
echo 로 찍어 보면 1값은 제대로 찍힙니다..ㅠㅠ

1
Notice: Undefined index: it_opt1 in /home/hosting_users/shimro0/www/shop/cartupdate.php on line 174
2Error.

이렇게 두바퀴째 돌면 에러가 발생합니다..ㅠㅠㅠ

컬럼의 속성이 문제 일까요???

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

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

로그인