체크박스 체크 여부에 따라서 DB 데이터 저장을 다르게 하려고 하는데 저장이 안 됩니다. 코드 좀 봐주실 수 있을까요?
본문
안녕하세요? 항상 도움 받고 있습니다. 감사합니다. 영카트에서 주문을 할 때 해외주소 국내주소를 기입할 수있는데 체크박스 여부에 따라서 체크를 하면 해외주소만 DB 에 저장이 되고 체크를 하지 않으면 국내 주소만 DB 에 저장이 되게 하려고 합니다. 둘 다 저장이 되니까 관리자 입장에서 혼란스럽더라고요. 코드는 아래와 같습니다.
orderform.orderer.skin.php
<div class="form-group has-feedback">
<label class="col-sm-2 control-label">
<input type="checkbox" name="b_overseas_shipping_checkbox" id="b_overseas_shipping_checkbox" value="">
해외배송
</label>
</div>
<div class="form-group has-feedback" id="b_address_form">
<label class="col-sm-2 control-label"><b>주소</b><strong class="sound_only">필수</strong></label>
<div class="col-sm-8">
<label for="od_b_zip" class="sound_only">우편번호<strong class="sound_only"> 필수</strong></label>
<label>
<input type="text" name="od_b_zip" id="od_b_zip" required class="form-control input-sm" size="6" maxlength="6">
</label>
<label>
<button type="button" class="btn btn-black btn-sm" style="margin-top:0px;" onclick="win_zip('forderform', 'od_b_zip', 'od_b_addr1', 'od_b_addr2', 'od_b_addr3', 'od_b_addr_jibeon');">주소 검색</button>
</label>
<div class="addr-line">
<label class="sound_only" for="od_b_addr1">기본주소<strong class="sound_only"> 필수</strong></label>
<input type="text" name="od_b_addr1" id="od_b_addr1" required class="form-control input-sm" size="60" placeholder="기본주소">
</div>
<div class="addr-line">
<label class="sound_only" for="od_b_addr2">상세주소</label>
<input type="text" name="od_b_addr2" id="od_b_addr2" class="form-control input-sm" size="50" placeholder="상세주소">
</div>
<label class="sound_only" for="od_b_addr3">참고항목</label>
<input type="text" name="od_b_addr3" id="od_b_addr3" class="form-control input-sm" size="50" readonly="readonly" placeholder="참고항목">
<input type="hidden" name="od_b_addr_jibeon" value="">
</div>
</div>
<div class="form-group has-feedback" id="b_overseas_hidden_fields">
<label class="col-sm-2 control-label"><b>해외배송주소</b><strong class="sound_only">필수</strong></label>
<div class="col-sm-8">
<div class="addr-line">
<label class="sound_only" for="b_overseas_address_line1">Address line 1</label>
<input type="text" name="b_overseas_address_line1" id="b_overseas_address_line1" class="form-control input-sm" size="50" placeholder="Address line 1">
</div>
<div class="addr-line">
<label class="sound_only" for="b_overseas_address_line2">Address line 2 (optional)</label>
<input type="text" name="b_overseas_address_line2" id="b_overseas_address_line2" class="form-control input-sm" size="50" placeholder="Address line 2 (optional)">
</div>
<div class="addr-line">
<label class="sound_only" for="b_overseas_city">City</label>
<input type="text" name="b_overseas_city" id="b_overseas_city" class="form-control input-sm" size="50" placeholder="City">
</div>
<div class="addr-line">
<label class="sound_only" for="b_overseas_state">State / Province / Region</label>
<input type="text" name="b_overseas_state" id="b_overseas_state" class="form-control input-sm" size="50" placeholder="State / Province / Region">
</div>
<div class="addr-line">
<label class="sound_only" for="b_overseas_postal_code">Postal code</label>
<input type="text" name="b_overseas_postal_code" id="b_overseas_postal_code" class="form-control input-sm" placeholder="Postal code">
</div>
</div>
</div>
orderformupdate.php
$sql = "UPDATE {$g5['g5_shop_order_table']}
SET od_id = '$od_id',
mb_id = '{$member['mb_id']}',
od_pwd = '$od_pwd',
od_name = '$od_name',
od_email = '$od_email',
od_tel = '$od_tel',
od_hp = '$od_hp',
od_b_name = '$od_b_name',
od_b_tel = '$od_b_tel',
od_b_hp = '$od_b_hp',
od_deposit_name = '$od_deposit_name',
od_memo = '$od_memo',
od_cart_count = '$cart_count',
od_cart_price = '$tot_ct_price',
od_cart_coupon = '$tot_it_cp_price',
od_send_cost = '$od_send_cost',
od_send_coupon = '$tot_sc_cp_price',
od_send_cost2 = '$od_send_cost2',
od_coupon = '$tot_od_cp_price',
od_receipt_price = '$od_receipt_price',
od_receipt_point = '$od_receipt_point',
od_bank_account = '$od_bank_account',
od_receipt_time = '$od_receipt_time',
od_misu = '$od_misu',
od_pg = '$od_pg',
od_tno = '$od_tno',
od_app_no = '$od_app_no',
od_escrow = '$od_escrow',
od_tax_flag = '$od_tax_flag',
od_tax_mny = '$od_tax_mny',
od_vat_mny = '$od_vat_mny',
od_free_mny = '$od_free_mny',
od_status = '$od_status',
od_hope_date = '$od_hope_date',
od_time = '".G5_TIME_YMDHIS."',
od_ip = '$REMOTE_ADDR',
od_settle_case = '$od_settle_case'";
if (isset($_POST['overseas_shipping_checkbox']) && $_POST['overseas_shipping_checkbox'] == 'on') {
// 보내는 사람 해외주소 체크박스가 체크된 경우
$sql .= ", overseas_country = '$overseas_country',
overseas_address_line1 = '$overseas_address_line1',
overseas_address_line2 = '$overseas_address_line2',
overseas_city = '$overseas_city',
overseas_state = '$overseas_state',
overseas_postal_code = '$overseas_postal_code'";
} else {
// 보내는 사람 해외주소 체크박스가 체크되지 않은 경우
$sql .= ", od_zip1 = '$od_zip1',
od_zip2 = '$od_zip2',
od_addr1 = '$od_addr1',
od_addr2 = '$od_addr2',
od_addr3 = '$od_addr3',
od_addr_jibeon = '$od_addr_jibeon'";
}
if (isset($_POST['b_overseas_shipping_checkbox']) && $_POST['b_overseas_shipping_checkbox'] == 'on') {
// 받는 사람 해외주소 체크박스가 체크된 경우
$sql .= ", b_overseas_country = '$b_overseas_country',
b_overseas_address_line1 = '$b_overseas_address_line1',
b_overseas_address_line2 = '$b_overseas_address_line2',
b_overseas_city = '$b_overseas_city',
b_overseas_state = '$b_overseas_state',
b_overseas_postal_code = '$b_overseas_postal_code'";
} else {
// 받는 사람 해외주소 체크박스가 체크되지 않은 경우
$sql .= ", od_b_zip1 = '$od_b_zip1',
od_b_zip2 = '$od_b_zip2',
od_b_addr1 = '$od_b_addr1',
od_b_addr2 = '$od_b_addr2',
od_b_addr3 = '$od_b_addr3',
od_b_addr_jibeon = '$od_b_addr_jibeon'";
}
// 나머지 주문자 정보 저장
$sql .= ", od_test = '{$default['de_card_test']}'
WHERE od_id = '$od_id'";
$result = sql_query($sql, false);
$_POST 로는 잘 넘어가는데 데이터가 DB 에 저장이 되지 않습니다. 국내 주소는 또 저장이 잘 되고요 .. 왜 그런지 알 수 있을까요?
답변 1
데이터는 잘 넘어오는데, DB에 저장이안된다면,
해당 쿼리문을 echo $sql;exit; 형식으로 출력해서
그 쿼리문을 db접속 툴을 이용해서, 직접 실행해보시기 바랍니다.
쿼리문에 구문오류가 있거나, 여분필드가 확장 되지 않았을 수 있습니다.