채택완료
구매하기 클릭시 cartupdate.php에서 에러가 납니다..
회사 홈페이지에서 오류가 나서요..
Copy
//--------------------------------------------------------
// 변조 검사
//--------------------------------------------------------
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개 / 댓글 9개
채택된 답변
+20 포인트
2018-08-07 (화) 10:14:54
echo "" <-세미콜론 없는데 이건 오류랑 상관 없는 것 같고요.
Copy
if(!isset($_POST["it_opt".$i])
continue;
$dst_opt = trim($_POST["it_opt".$i]);
이와 같이 해당 변수가 있는지 확인하고 없으면 패스 하는 코드를 추가해주세요.
Notice: Undefined index 는 해당 에러는 배열변수에 해당 인덱스가 없으면 뿜는 에러인데 정상적인 동작에는 지장을 주지 않습니다.
영카트 기본은 Notice 에러는 뿜지 않도록 설정되어 있는데 common.php 중 error_reporting()을 수정하신 것으로 보입니다.
답변에 대한 댓글 5개
스트롱베이비
2018-08-07 (화) 10:43:52
2018-08-07 (화) 10:47:37
if(!isset($_POST["it_opt".$i])) continue;
오타가 있었네요. 괄호를 하나 안 닫았습니다. 다시 해보시기 바랍니다.
오타가 있었네요. 괄호를 하나 안 닫았습니다. 다시 해보시기 바랍니다.
스트롱베이비
2018-08-07 (화) 10:55:43
헉..저도 제대로 못봤네요...ㅠㅠ감사합니다.
해당 코드 삽입해서
[code]if(!isset($_POST["it_opt".$i])){
continue;
$dst_opt = trim($_POST["it_opt".$i]);
}[/code]
아래까지 감싸보니 오류없이 넘어갑니다ㅠㅠ
정말 감사합니다!!!
아 한가지만 더 여쭤보자면 반복문이 두바퀴를 돌때 에러가 나던데 해당하는 두번째 변수가 없어서 에러가 난건가요?
db상에는 it_opt2가 셀렉트 박스로 되어있거든요...
아니면 값을 3번째 값을 검색하는데 없어서 에러가 났을까요??
해당 코드 삽입해서
[code]if(!isset($_POST["it_opt".$i])){
continue;
$dst_opt = trim($_POST["it_opt".$i]);
}[/code]
아래까지 감싸보니 오류없이 넘어갑니다ㅠㅠ
정말 감사합니다!!!
아 한가지만 더 여쭤보자면 반복문이 두바퀴를 돌때 에러가 나던데 해당하는 두번째 변수가 없어서 에러가 난건가요?
db상에는 it_opt2가 셀렉트 박스로 되어있거든요...
아니면 값을 3번째 값을 검색하는데 없어서 에러가 났을까요??
2018-08-07 (화) 10:58:57
잘못하셨어요.
if(!isset($_POST["it_opt".$i]))
continue;
$dst_opt = trim($_POST["it_opt".$i]);
{ } 중괄호 뺴세요.
그거 있음 안되요.
if(!isset($_POST["it_opt".$i]))
continue;
$dst_opt = trim($_POST["it_opt".$i]);
{ } 중괄호 뺴세요.
그거 있음 안되요.
스트롱베이비
2018-08-07 (화) 11:18:40
헉..
중괄호를 빼야하나요???
[code]if(!isset($_POST["it_opt".$i]))
continue;
$dst_opt = trim($_POST["it_opt".$i]);[/code]
이렇게 넣으니
28번줄에 있는 Error. 문자만 찍히고
그전처럼 에러 메시지는 안찍힙니다.
그래서 감쌋더니 작동이 되더라구요;;
중괄호를 제거 하고 사용할 다른 방법이 있을까요?
중괄호를 빼야하나요???
[code]if(!isset($_POST["it_opt".$i]))
continue;
$dst_opt = trim($_POST["it_opt".$i]);[/code]
이렇게 넣으니
28번줄에 있는 Error. 문자만 찍히고
그전처럼 에러 메시지는 안찍힙니다.
그래서 감쌋더니 작동이 되더라구요;;
중괄호를 제거 하고 사용할 다른 방법이 있을까요?
2018-08-07 (화) 12:05:34
그러면 다른 부분이 문제가 있는겁니다.
저 중괄호가 저렇게 들어가면 옵션값이 한개도 저장이 안될겁니다.
답변에 대한 댓글 3개
스트롱베이비
2018-08-07 (화) 14:46:35
[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해보니 실제로 주문까지 되고 주문관리하는 부분에서 주문된 정보가 넘어오는것으로 확인됩니다
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해보니 실제로 주문까지 되고 주문관리하는 부분에서 주문된 정보가 넘어오는것으로 확인됩니다
2018-08-07 (화) 16:03:57
그렇게 하시면 안됩니다.
에러는 저 괄호가 아니라 다른 곳에서 발생하는거고요.
저 괄호로 묶는 바람에 해당 에러가 나는 부분이 실행이 되지 않아서 발생하지 않는 것 처럼 보일 뿐입니다.
저렇게 괄호로 묶을실꺼면 그냥 포문을 지워버리세요.
지금 상태라면 아무것도 동작하지 않는 것과 동일합니다.
에러는 저 괄호가 아니라 다른 곳에서 발생하는거고요.
저 괄호로 묶는 바람에 해당 에러가 나는 부분이 실행이 되지 않아서 발생하지 않는 것 처럼 보일 뿐입니다.
저렇게 괄호로 묶을실꺼면 그냥 포문을 지워버리세요.
지금 상태라면 아무것도 동작하지 않는 것과 동일합니다.
스트롱베이비
2018-08-07 (화) 17:46:56
답변 감사합니다.
문제는 it_opt2 컬럼에있는 값에 문자열로 큰따옴표(")가 들어가있는데 이를 읽지 못하는것 같습니다.
큰따옴표를 문자열로 바꿔서 시도했더니 해결되었습니다.
문제는 it_opt2 컬럼에있는 값에 문자열로 큰따옴표(")가 들어가있는데 이를 읽지 못하는것 같습니다.
큰따옴표를 문자열로 바꿔서 시도했더니 해결되었습니다.
2018-08-07 (화) 10:15:13
2018-08-07 (화) 10:14:38
172 라인이 정확히 파악이 어렵지만
$dst_opt = trim($_POST["it_opt".$i]); 이 라인에서 $i 값으로 1값을 제대로 인식되어 가져오지 못하는 오류로 보여집니다.
답변에 대한 댓글 1개
스트롱베이비
2018-08-07 (화) 10:45:37
echo 로 찍어 보면 1값은 제대로 찍힙니다..ㅠㅠ
1
Notice: Undefined index: it_opt1 in /home/hosting_users/shimro0/www/shop/cartupdate.php on line 174
2Error.
이렇게 두바퀴째 돌면 에러가 발생합니다..ㅠㅠㅠ
컬럼의 속성이 문제 일까요???
1
Notice: Undefined index: it_opt1 in /home/hosting_users/shimro0/www/shop/cartupdate.php on line 174
2Error.
이렇게 두바퀴째 돌면 에러가 발생합니다..ㅠㅠㅠ
컬럼의 속성이 문제 일까요???
답변을 작성하려면 로그인이 필요합니다.
말씀해주신 코드를 제가 올린 코드 기준으로 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
이런식으로 싱텍스 에러가 납니다..ㅠㅠ
초보라서 제가 맞게 수정한건지 모르겠네요...ㅠㅠ