테스트 사이트 - 개발 중인 베타 버전입니다

영카트5 search.php의 정렬부분에 대한 질문드립니다.

움직이는용 6년 전 조회 2,391

저는 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개

L
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 값에 대한 제한을 한 부분이 있어서 그런 것은 아닌지 추측하고 있는데, 그렇다면 어디를 수정해야 하는지? 아니면 소스 코드에 문제가 있는지 궁금합니다.

감사합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

L
6년 전

위소스를 봐서는 문제가 없어보니는데 링크 부분에 qsort=A&qorder=asc  혹은 qsort=A&qorder=desc 로  존재하는지여부에 따라 순서정렬 기능이 제대로 작동하는지 확인해보세요. 링크가 제대로 되지않았으면 html 부분의 문제일거구요 링크가 문제없다면 A필드의 값을 한번 확인해보세요.

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변 갑사합니다.

물론 search.php에 추가한 필드를 지정하였고, search.skin.php에 "정렬" 옵션 부분도 변경하였습니다. 그 후, 모두 정상 동작하지만 추가 필드에 대한 정렬 동작은 동작하지 않아서 문의 드린 것입니다.

 

감사합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

밑에 선택옵션에도 추가해주세요

판매많은순, 낮은가격순, ....

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인