영카트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 일때는 정렬이 작동않되는겁니다.
밑에 선택옵션에도 추가해주세요
판매많은순, 낮은가격순, ....
답변 갑사합니다.
물론 search.php에 추가한 필드를 지정하였고, search.skin.php에 "정렬" 옵션 부분도 변경하였습니다. 그 후, 모두 정상 동작하지만 추가 필드에 대한 정렬 동작은 동작하지 않아서 문의 드린 것입니다.
감사합니다.
위소스를 봐서는 문제가 없어보니는데 링크 부분에 qsort=A&qorder=asc 혹은 qsort=A&qorder=desc 로 존재하는지여부에 따라 순서정렬 기능이 제대로 작동하는지 확인해보세요.
링크가 제대로 되지않았으면 html 부분의 문제일거구요 링크가 문제없다면 A필드의 값을 한번 확인해보세요.
감사합니다.
위에서 설명하신 내용은 정상적으로 표시됩니다.
search.php 및 search.skin.php 수정하여 링크부분에서 qsort=A&qorder=asc 혹은 qsort=A&qorder=desc로 정상적으로 표시되지만 새로 추가된 필드에 대해서는 동작하지 않습니다. 그래서 mysql에서 트랜잭션 로그를 캡쳐할 수 있도록 환경을 변경하여 로그를 분석해보면 링크에서는 정상적으로 보이는 값이 쿼리 문에서는 누락된 형태로 쿼리가 수행됩니다.
그래서 개인적으로는 search.php에 sort 값에 대한 제한을 한 부분이 있어서 그런 것은 아닌지 추측하고 있는데, 그렇다면 어디를 수정해야 하는지? 아니면 소스 코드에 문제가 있는지 궁금합니다.
감사합니다.
감사합니다.
원인은 찾아서 수정을 했는데, 이유를 알 수 없어서 추가로 문의 드립니다.
$qsort = strtolower($qsort);
$qorder = strtolower($qorder);
$order_by = ""
부분을 주석처리하여 문제를 해결했습니다. 아마도 위 문장을 통해서 sort에 사용할 수 있는 필드를 지정한 것 같습니다.
감사합니다.