if 조건문 중 변수 중복 만족?
본문
//장바구니 품절 및 예약 상품
$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
$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("예약상품과 일반상품은 같이 주문하실 수 없습니다.");
}
$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("주문하시려는 상품 중 품절인 상품이 있습니다.");
}
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가 나옵니다.
제가 생각한 코드는 아래가 최선인데.. 혹 제가 잘못생각했거나 실수한 부분이 있을 수 있으니.. 아래의 코드로 안된다면.. 글을 다시 올려 다른분의 의견을 받는게 좋을 듯 싶습니다.
$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("주문하시려는 상품 중 품절인 상품이 있습니다.");
}
답변을 작성하시기 전에 로그인 해주세요.