Copy
//장바구니 품절 및 예약 상품
$sql = " select b.it_2, b.it_soldout, a.it_name
from {$g5['g5_shop_cart_table']} a left join {$g5['g5_shop_item_table']} b on ( a.it_id = b.it_id )
where a.od_id = '$tmp_cart_id'
and a.it_id = '$it_id' ";
$result = sql_query($sql);
while ($row=sql_fetch_array($result)){
if ($row['it_2'] == '1')
{
alert("예약상품과 일반상품은 같이 주문하실 수 없습니다.");
}
}
위쪽에 체크 동작 부분이 있고 체크는 정상적으로 작동합니다. ('1'인 상품 체크 시 알러트, ''인 상품만 있을 시 정상 주문)
근데 원래 작성하려는 조건이 '1'일때가 아니라 '1'과 ''가 동시에 있을 때 입니다.
echo $row['it_2']; 해보면 선택된게 2개여도 01이 아니라 1만 나오네요
it_2가 1일때, 혹은 비어 있을 때는 상관이 없는데 1과 비어 있는게 동시에 체크되면 알러트가 뜨게 하려면 어떻게 해야 하나요?
답변 3개 / 댓글 23개
채택된 답변
+20 포인트
Copy
$sql = "
select b.it_2, b.it_soldout, a.it_name
from {$g5['g5_shop_cart_table']} a left join {$g5['g5_shop_item_table']} b on ( a.it_id = b.it_id )
where a.od_id = '$tmp_cart_id'
and a.it_id = '$it_id'
";
$result = sql_query($sql);
$cnt = $cnt2 = 0;
while ($row = sql_fetch_array($result)) {
if ($row['it_2'] == '1')
$cnt = $cnt + 1;
else if ($row['it_2'] == '')
$cnt2 = $cnt2 + 1;
}
if ($cnt > 0 && $cnt2 > 0) {
alert("예약상품과 일반상품은 같이 주문하실 수 없습니다.");
}
답변에 대한 댓글 9개
예약상품인 경우 : it_2 값이 '1'
예약상품이 아닌 경우 : it_2 값이 ''
이 확실하게 맞는지를 먼저 체크해야 될 것 같습니다. (또는 DB g5_shop_cart 테이블 직접 확인)
확인하는 방법으로는..
echo $row['it_2'] . 'ccc';
또는
if ($row['it_2'] == '')
echo 'ddd';
와 같이 it_2 칼럼의 빈 값을 명확하게 확인할 수 있는 체크용 코드를 사용해 볼 수 있습니다.
예약상품이 아닌 경우 : it_2 값이 ''
이 확실하게 맞는지를 먼저 체크해야 될 것 같습니다. (또는 DB g5_shop_cart 테이블 직접 확인)
확인하는 방법으로는..
echo $row['it_2'] . 'ccc';
또는
if ($row['it_2'] == '')
echo 'ddd';
와 같이 it_2 칼럼의 빈 값을 명확하게 확인할 수 있는 체크용 코드를 사용해 볼 수 있습니다.
if ($row['it_2'] == '1')
$cnt = $cnt + 1; // it_2 가 '1' 인 상품이 2개면 2, 3개면 3
if ($row['it_2'] == '')
$cnt2 = $cnt2 + 1; // it_2 가 '' 인 상품이 3개면 3, 4개면 4
if ($row['it_soldout'])
alert("주문하시려는 상품 중 품절인 상품이 있습니다.");
// => 첫번째 상품이 soldout 이면, 두번째 상품이 soldout 이 아니어도.. 여기에 체크가 되겠죠.
$cnt = $cnt + 1; // it_2 가 '1' 인 상품이 2개면 2, 3개면 3
if ($row['it_2'] == '')
$cnt2 = $cnt2 + 1; // it_2 가 '' 인 상품이 3개면 3, 4개면 4
if ($row['it_soldout'])
alert("주문하시려는 상품 중 품절인 상품이 있습니다.");
// => 첫번째 상품이 soldout 이면, 두번째 상품이 soldout 이 아니어도.. 여기에 체크가 되겠죠.
echo $cnt;
는 반복문(while이나 for) 밖에서 확인해야 됩니다.
상품 it_2
---------
A 1
B
C 1
이고 while ($row = mysql_fetch_array()) 식으로 반복문을 돌리면..
해당 쿼리 결과값을 1줄씩 가져온다고 생각하면 됩니다.
while ($row = mysql_fetch_array($result)) {
if ($row['it_2'] == '1')
$cnt = $cnt + 1;
}
echo $cnt; // 2가 나옵니다.
제가 생각한 코드는 아래가 최선인데.. 혹 제가 잘못생각했거나 실수한 부분이 있을 수 있으니.. 아래의 코드로 안된다면.. 글을 다시 올려 다른분의 의견을 받는게 좋을 듯 싶습니다.
Copy
$cnt = $cnt2 = $cnt3 = 0;
while ($row=sql_fetch_array($result)){
if ($row['it_soldout'])
$cnt3 = $cnt3 + 1;
if ($row['it_2'] == '1')
$cnt = $cnt + 1;
else
$cnt2 = $cnt2 + 1;
}
if ($cnt > 0 && $cnt2 > 0) {
alert("예약상품과 일반상품은 같이 주문하실 수 없습니다.");
}
if ($cnt3 > 0) {
alert("주문하시려는 상품 중 품절인 상품이 있습니다.");
}
답변에 대한 댓글 8개
DB 에 3줄, 4줄, .. 건을 반복문 안에서.. echo 로 체크하면..
1번째 줄에 의해 echo 로 체크된 건지, 2번째 줄에 의해 echo 로 체크된 건지.. 알기 어렵습니다. (제가 $cnt = $cnt + 1; 식으로 한 건 이 이유 때문입니다.)
그리고 참고로 그누보드의 alert문은, alert 문에서 해당 페이지의 실행을 중지시킵니다.
DB 에 3줄, 4줄, .. 건을 반복문 안에.. 그누보드의 alert() 문이 있는 경우..
2번째 줄을 해석하고 있는 중에 alert() 를 수행하게 되면.. 3번째 줄, 4번째 줄은.. 해석되지 않고.. 중지됩니다.
1번째 줄에 의해 echo 로 체크된 건지, 2번째 줄에 의해 echo 로 체크된 건지.. 알기 어렵습니다. (제가 $cnt = $cnt + 1; 식으로 한 건 이 이유 때문입니다.)
그리고 참고로 그누보드의 alert문은, alert 문에서 해당 페이지의 실행을 중지시킵니다.
DB 에 3줄, 4줄, .. 건을 반복문 안에.. 그누보드의 alert() 문이 있는 경우..
2번째 줄을 해석하고 있는 중에 alert() 를 수행하게 되면.. 3번째 줄, 4번째 줄은.. 해석되지 않고.. 중지됩니다.
//장바구니 품절 및 예약 상품
$sql = " select b.it_2, b.it_soldout, a.it_name
from {$g5['g5_shop_cart_table']} a left join {$g5['g5_shop_item_table']} b on ( a.it_id = b.it_id )
where a.od_id = '$tmp_cart_id'
and a.it_id = '$it_id' ";
$result = sql_query($sql);
$cnt = $cnt2 = 0;
while ($row=sql_fetch_array($result)){
if ($row['it_soldout'])
{
alert("주문하시려는 상품 중 품절인 상품이 있습니다.");
}
if ($row['it_2'] == '1')
$cnt = $cnt + 1;
if ($row['it_2'] == '')
$cnt2 = $cnt2 + 1;
}
if ($cnt > 0 && $cnt2 > 0) {
alert("예약상품과 일반상품은 같이 주문하실 수 없습니다.");
}
이 소스일 때 $cnt = 01, $cnt2=10 나오네요
$sql = " select b.it_2, b.it_soldout, a.it_name
from {$g5['g5_shop_cart_table']} a left join {$g5['g5_shop_item_table']} b on ( a.it_id = b.it_id )
where a.od_id = '$tmp_cart_id'
and a.it_id = '$it_id' ";
$result = sql_query($sql);
$cnt = $cnt2 = 0;
while ($row=sql_fetch_array($result)){
if ($row['it_soldout'])
{
alert("주문하시려는 상품 중 품절인 상품이 있습니다.");
}
if ($row['it_2'] == '1')
$cnt = $cnt + 1;
if ($row['it_2'] == '')
$cnt2 = $cnt2 + 1;
}
if ($cnt > 0 && $cnt2 > 0) {
alert("예약상품과 일반상품은 같이 주문하실 수 없습니다.");
}
이 소스일 때 $cnt = 01, $cnt2=10 나오네요
[code]
$cnt = $cnt2 = $cnt3 = 0;
while ($row=sql_fetch_array($result)){
if ($row['it_soldout'])
$cnt3 = $cnt3 + 1;
if ($row['it_2'] == '1')
$cnt = $cnt + 1;
else
$cnt2 = $cnt2 + 1;
}
if ($cnt > 0 && $cnt2 > 0) {
alert("예약상품과 일반상품은 같이 주문하실 수 없습니다.");
}
if ($cnt3 > 0) {
alert("주문하시려는 상품 중 품절인 상품이 있습니다.");
}
[/code]
제가 생각한 코드는 위가 최선인데.. 혹 제가 잘못생각했거나 실수한 부분이 있을 수 있으니.. 위 코드로 안된다면.. 글을 다시 올려 다른분의 의견을 받는게 좋을 듯 싶습니다.
$cnt = $cnt2 = $cnt3 = 0;
while ($row=sql_fetch_array($result)){
if ($row['it_soldout'])
$cnt3 = $cnt3 + 1;
if ($row['it_2'] == '1')
$cnt = $cnt + 1;
else
$cnt2 = $cnt2 + 1;
}
if ($cnt > 0 && $cnt2 > 0) {
alert("예약상품과 일반상품은 같이 주문하실 수 없습니다.");
}
if ($cnt3 > 0) {
alert("주문하시려는 상품 중 품절인 상품이 있습니다.");
}
[/code]
제가 생각한 코드는 위가 최선인데.. 혹 제가 잘못생각했거나 실수한 부분이 있을 수 있으니.. 위 코드로 안된다면.. 글을 다시 올려 다른분의 의견을 받는게 좋을 듯 싶습니다.
Copy
$cnt = $cnt2 = $cnt3 = 0;
while ($row=sql_fetch_array($result)){
if ($row['it_soldout'])
$cnt3 = $cnt3 + 1;
if ($row['it_2'] == '1')
$cnt = $cnt + 1;
else
$cnt2 = $cnt2 + 1;
}
if ($cnt > 0 && $cnt2 > 0) {
alert("예약상품과 일반상품은 같이 주문하실 수 없습니다.");
}
if ($cnt3 > 0) {
alert("주문하시려는 상품 중 품절인 상품이 있습니다.");
}
답변에 대한 댓글 6개
답변을 작성하려면 로그인이 필요합니다.
그런데 이렇게 수정을 하고 나니 아무 알러트가 뜨지 않습니다. 1과 0 동시에 주문했는데도요.
사용 소스는
//장바구니 품절 및 예약 상품
$sql = " select b.it_2, b.it_soldout, a.it_name
from {$g5['g5_shop_cart_table']} a left join {$g5['g5_shop_item_table']} b on ( a.it_id = b.it_id )
where a.od_id = '$tmp_cart_id'
and a.it_id = '$it_id' ";
$result = sql_query($sql);
$cnt = $cnt2 = 0;
while ($row=sql_fetch_array($result)){
if ($row['it_soldout'])
{
alert("주문하시려는 상품 중 품절인 상품이 있습니다.");
}
if ($row['it_2'] == '1')
$cnt = $cnt + 1;
if ($row['it_2'] == '')
$cnt2 = $cnt2 + 1;
}
if ($cnt > 0 && $cnt2 > 0) {
alert("예약상품과 일반상품은 같이 주문하실 수 없습니다.");
}
/*
이렇게 입니다.