영카트5 search.php의 정렬부분에 대한 질문드립니다.
저는 PHP 초보자입니다.
그런데 아래와 같이 영카트5의 search.php에서 $qsort에 추가 필드를 넣어서 정렬하면 동작하지 않는데, 해결책이 무엇인지요?
좀더 상세히 설명 드리면 shop_item 테이블에 A라는 필드를 추가하고 $qsort에 추가했을 때, 실행될 수 있는 방법에 대해서 문의 드립니다.
==================================================================
기존에 아래와 같은 문장을
if (($qsort == "it_sum_qty" || $qsort == "it_price" || $qsort == "it_use_avg" || $qsort == "it_use_cnt" || $qsort == "it_update_time") && ($qorder == "asc" || $qorder == "desc")) { $order_by = ' order by ' . $qsort . ' ' . $qorder . ' , it_order, it_id desc';
아래와 같이 수정
if (($qsort == "it_sum_qty" || $qsort == "it_price" || $qsort == "it_use_avg" || $qsort == "it_use_cnt" || $qsort == "A") && ($qorder == "asc" || $qorder == "desc")) { $order_by = ' order by ' . $qsort . ' ' . $qorder . ' , it_order, it_id desc';
답변 6개
필드값을 A 로 하였을시 $qsort = strtolower($qsort); 이부분때문에
strtolower("A") = a 대문자를 소문자로 변환시켰으니 그 하단부분에서 $qsort == "A" 랑 조건이 맞지 않아 $qsort 가 A 일때는 정렬이 작동않되는겁니다.
댓글을 작성하려면 로그인이 필요합니다.
감사합니다.
원인은 찾아서 수정을 했는데, 이유를 알 수 없어서 추가로 문의 드립니다.
$qsort = strtolower($qsort); $qorder = strtolower($qorder); $order_by = ""
부분을 주석처리하여 문제를 해결했습니다. 아마도 위 문장을 통해서 sort에 사용할 수 있는 필드를 지정한 것 같습니다.
감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
감사합니다.
위에서 설명하신 내용은 정상적으로 표시됩니다.
search.php 및 search.skin.php 수정하여 링크부분에서 qsort=A&qorder=asc 혹은 qsort=A&qorder=desc로 정상적으로 표시되지만 새로 추가된 필드에 대해서는 동작하지 않습니다. 그래서 mysql에서 트랜잭션 로그를 캡쳐할 수 있도록 환경을 변경하여 로그를 분석해보면 링크에서는 정상적으로 보이는 값이 쿼리 문에서는 누락된 형태로 쿼리가 수행됩니다.
그래서 개인적으로는 search.php에 sort 값에 대한 제한을 한 부분이 있어서 그런 것은 아닌지 추측하고 있는데, 그렇다면 어디를 수정해야 하는지? 아니면 소스 코드에 문제가 있는지 궁금합니다.
감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
위소스를 봐서는 문제가 없어보니는데 링크 부분에 qsort=A&qorder=asc 혹은 qsort=A&qorder=desc 로 존재하는지여부에 따라 순서정렬 기능이 제대로 작동하는지 확인해보세요. 링크가 제대로 되지않았으면 html 부분의 문제일거구요 링크가 문제없다면 A필드의 값을 한번 확인해보세요.
댓글을 작성하려면 로그인이 필요합니다.
답변 갑사합니다.
물론 search.php에 추가한 필드를 지정하였고, search.skin.php에 "정렬" 옵션 부분도 변경하였습니다. 그 후, 모두 정상 동작하지만 추가 필드에 대한 정렬 동작은 동작하지 않아서 문의 드린 것입니다.
감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인