주문내역조회에 페이징 기능을 달았는데 페이징이 좀 이상하게 됩니다 ㅜㅜ
본문
영카트를 거의 다 뜯어 고쳐 쓰고 있습니다
주문내역조회에 기간별 조회/상품이름 검색 기능을 달고 검색했을때 15개씩 끊어서 페이징 시켜주고 있는데요,
다른건 잘 되지만 상품이름 검색을 할때 페이징이 이상합니다 ㅜㅜ
만약 검색된 전체 상품수가 67개고 한페이지당의 갯수가 15개면 총5페이지가 나오고
마지막 페이지인 5번째 페이지에 4개만 출력되어야 하는데
뜬금없이 2페이지에서 4개가 출력되고 1,3,4,5페이지에선 15개가 출력됩니다
순서가 뒤바뀐거 같은데 ㅜㅜ 어딜 수정해야 저 순서가 바뀔지 모르겠네요
<?php
include_once('./_common.php');
if (G5_IS_MOBILE) {
include_once(G5_MSHOP_PATH.'/orderinquiry.php');
return;
}
define("_ORDERINQUIRY_", true);
$order_info = array();
$request_pwd = isset($_POST['od_pwd']) ? $_POST['od_pwd'] : '';
$od_pwd = get_encrypt_string($request_pwd);
$od_id = isset($_POST['od_id']) ? safe_replace_regex($_POST['od_id'], 'od_id') : '';
$od_time=isset($_GET['od_time']) ? $_GET['od_time'] : '';
$od_from=isset($_GET['od_from']) ? $_GET['od_from'] : '';
$od_to=isset($_GET['od_to']) ? $_GET['od_to'] : '';
$it_name = utf8_strcut(get_search_string(trim($_GET['it_name'])), 30, "");
//$it_count=isset($_GET['it_count']) ? $_GET['it_count'] : '';
// 회원인 경우
if ($is_member)
{
if($it_name){
$mcart="select * from {$g5['g5_shop_cart_table']}";
if($od_from && $od_to){
$od_time='';
if($od_from > $od_to){
echo '<script> alert("정확한 날짜를 입력해주세요.")</script>';
}
else{
$sql_common=" from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' and it_name like '%".$it_name."% and od_time between '{$od_from}' and '{$od_to} 23:59:59' order by od_time desc";
}
}
else if($od_time == 7 ){
$sql_common=" from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' and it_name like '%".$it_name."% and od_time between date_add(now(), interval -{$od_time} day) and now() order by od_time desc";
}
else if($od_time ==3 ){
$sql_common=" from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' and it_name like '%".$it_name."% and od_time between date_add(now(), interval -{$od_time} month) and now() order by od_time desc";
}
else if($od_time ==6 ){
$sql_common=" from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' and it_name like '%".$it_name."% and od_time between date_add(now(), interval -{$od_time} month) and now() order by od_time desc";
}
else if($od_time ==1 ){
$sql_common=" from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' and it_name like '%".$it_name."% and od_time between date_add(now(), interval -{$od_time} year) and now() order by od_time desc";
}
else{
$sql_common=" from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' and it_name like '%".$it_name."% order by od_time desc";
}
}else{
$mcart="select * from {$g5['g5_shop_cart_table']}";
if($od_from && $od_to){
$od_time='';
if($od_from > $od_to){
echo '<script> alert("정확한 날짜를 입력해주세요.")</script>';
}
else{
$sql_common=" from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' and od_time between '{$od_from}' and '{$od_to} 23:59:59' order by od_time desc";
}
}
else if($od_time == 7 ){
$sql_common=" from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' and od_time between date_add(now(), interval -{$od_time} day) and now() order by od_time desc";
}
else if($od_time ==3 ){
$sql_common=" from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' and od_time between date_add(now(), interval -{$od_time} month) and now() order by od_time desc";
}
else if($od_time ==6 ){
$sql_common=" from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' and od_time between date_add(now(), interval -{$od_time} month) and now() order by od_time desc";
}
else if($od_time ==1 ){
$sql_common=" from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' and od_time between date_add(now(), interval -{$od_time} year) and now() order by od_time desc";
}
else{
$sql_common=" from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' order by od_time desc";
}
}
$mcart="select * from {$g5['g5_shop_cart_table']}";
if($od_from && $od_to){
$od_time='';
if($od_from > $od_to){
echo '<script> alert("정확한 날짜를 입력해주세요.")</script>';
}
else{
$sql_common=" from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' and od_time between '{$od_from}' and '{$od_to} 23:59:59' order by od_time desc";
}
}
else if($od_time == 7 ){
$sql_common=" from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' and od_time between date_add(now(), interval -{$od_time} day) and now() order by od_time desc";
}
else if($od_time ==3 ){
$sql_common=" from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' and od_time between date_add(now(), interval -{$od_time} month) and now() order by od_time desc";
}
else if($od_time ==6 ){
$sql_common=" from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' and od_time between date_add(now(), interval -{$od_time} month) and now() order by od_time desc";
}
else if($od_time ==1 ){
$sql_common=" from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' and od_time between date_add(now(), interval -{$od_time} year) and now() order by od_time desc";
}
else{
$sql_common=" from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' order by od_time desc";
}
}
else if ($od_id && $od_pwd) // 비회원인 경우 주문서번호와 비밀번호가 넘어왔다면
{
if( defined('G5_MYSQL_PASSWORD_LENGTH') && strlen($od_pwd) === G5_MYSQL_PASSWORD_LENGTH ) {
$sql_common = " from {$g5['g5_shop_order_table']} where od_id = '$od_id' and od_pwd = '$od_pwd' ";
} else {
$sql_common = " from {$g5['g5_shop_order_table']} where od_id = '$od_id' ";
$order_info = get_shop_order_data($od_id);
if (!check_password($request_pwd, $order_info['od_pwd'])) {
run_event('password_is_wrong', 'shop', $order_info);
//alert('주문이 존재하지 않습니다.');
//exit;
}
}
}
else // 그렇지 않다면 로그인으로 가기
{
goto_url(G5_BBS_URL.'/login.php?url='.urlencode(G5_SHOP_URL.'/orderinquiry.php'));
}
// 테이블의 전체 레코드수만 얻음
$sql = " select count(*) as cnt " . $sql_common;
$row = sql_fetch($sql);
$total_count = $row['cnt'];
// 비회원 주문확인시 비회원의 모든 주문이 다 출력되는 오류 수정
// 조건에 맞는 주문서가 없다면
if ($total_count == 0)
{
//if ($is_member) // 회원일 경우는 메인으로 이동
//alert('주문이 존재하지 않습니다.', G5_SHOP_URL);
//else // 비회원일 경우는 이전 페이지로 이동
//alert('주문이 존재하지 않습니다.');
}
//총 갯수
//$items = 1 * 15; //-> 한줄에 15개씩
$rows =15;
//print_r($a_count);
if($it_name){
$sql="select count(*) as cnt from g5_shop_order where od_id in(select od_id from g5_shop_cart where it_name like '%".$it_name."%') and mb_id = '{$member['mb_id']}'";
$row=sql_fetch($sql);
$total_count=$row['cnt'];
}
$total_page = ceil($total_count / $rows); // 전체 페이지 계산 //블럭
if ($page < 1) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
// 비회원 주문확인의 경우 바로 주문서 상세조회로 이동
if (!$is_member)
{
if( defined('G5_MYSQL_PASSWORD_LENGTH') && strlen($od_pwd) === G5_MYSQL_PASSWORD_LENGTH ) {
$sql = " select od_id, od_time, od_ip from {$g5['g5_shop_order_table']} where od_id = '$od_id' and od_pwd = '$od_pwd' ";
$row = sql_fetch($sql);
} else if( $order_info ){
if (check_password($request_pwd, $order_info['od_pwd'])) {
$row = $order_info;
}
}
if ($row['od_id']) {
$uid = md5($row['od_id'].$row['od_time'].$row['od_ip']);
set_session('ss_orderview_uid', $uid);
goto_url(G5_SHOP_URL.'/orderinquiryview.php?od_id='.$row['od_id'].'&uid='.$uid);
}
}
$g5['title'] = '주문내역조회';
include_once('./_head.php');
?>
<!-- 주문 내역 시작 { -->
<div id="sod_v">
<?php
$limit = " limit $from_record, $rows ";
if($total_count<15){
$sqltest = " select * $sql_common ";
}
else{
$sqltest = " select * $sql_common " .$limit;
}
//echo $sqltest;
include "./orderinquiry.sub.php";
?>
<?php
echo get_paging($rows, $page, $total_page, "{$_SERVER['SCRIPT_NAME']}?od_time=".$od_time."&od_from=".$od_from."&od_to=".$od_to."&it_name=".$it_name."&page="); ?>
</div>
<!-- } 주문 내역 끝 -->
<?php
include_once('./_tail.php');
고수분들 코드 한번 봐주시면 감사하겠습니다 ㅠㅠ
+)코드올려놓고 보니 왜 다 주석처리된것처럼 색깔이 저런지 모르겠네요 ㅠㅠ
!-->답변 2
include "./orderinquiry.sub.php";
이 파일 안에 있는 sql도 봐야겠네요.
$limit 처리되어지는 부분이 어떻게 표기되고 있는지 체크해 보셔야 할듯 합니다.
답변을 작성하시기 전에 로그인 해주세요.