2010-02-09 1 views
0

http://www.roguevalleyroses.com/rose_list.php?search_id=&class=&height=&growth=&color=&bloom_size=&bloom_type=&shade=&fragrance=&disease=&rebloom=&thorns=&zone=&hybridizer=Ashdown%20Roses&date_range=&text=&view=&show=&page=4osCommerce의 제품 목록이이 페이지입니다 부정확 개수 및 페이지

당 결과를 표시합니다. 결과를 쿼리하는 코드는 다음과 같습니다. http://pastebin.com/d51bfa53f

OSCommerce의 작동 방식을 이해할 수 없습니다. 네가 필요한 것이 있으면 알려줘. 또한, 이것은 SQL 쿼리, PHP 루프 또는 일부 수학에서 일반적인 문제일까요? 올바른 방향으로 지적되고 싶습니다. 해킹 된/사용자 정의 OsCommerce이므로 반드시 정확한 답변이 필요하지 않습니다. 이 그것이 ... osCommerce의 탐색 클래스는 별개의 사용을 지원하지 않습니다 쿼리에 올 때 ESP 사용자 지정 기부금은 더 많은 문제를위한에서 추가 ... osCommerce에있는 일반적인 문제입니다

나는이 스팸이라고 생각하지 말아

+0

. 이 스팸이 맞습니까? –

+1

불행히도, 그렇지 않습니다. – Zachary

+0

코드에 나쁜 SQL이 있기 때문에 일부 dodgy 연산이 진행됩니다. 게다가 붙여 넣기는 더 이상 유효하지 않습니다. – random

답변

1

.. 또는 그룹 by by clauses .. 즉, 레코드를 계산할 때 키워드를 고려하지 않는다면 이것을 고치려면 분할 페이지 결과 클래스를 수정해야합니다.

건배 시바

+0

그게 지금까지 최선의 제안이야, 정말 고마워. 아마도 우리는 드루팔 (drupal)을 사용하여 우버 캣 (ubercart)으로 이동할 것입니다. – Zachary

+0

OSC 핵심 코드 수정을 피하기 위해 splitPageResults 클래스를 편집하는 대신 아래의 Gerv 응답 (github 링크가 유용함)을 보거나 필요에 맞게 splitPageResults 클래스를 확장한다고 생각하십시오. – dading84

2

문제는 osCommerce의 코드를 처리 할 수없는 조항 "에 의해 그룹의"에서합니다 - splitResults 클래스 파일입니다. 잠시 동안 고생,이 내 먼저 고정에 시도했다 :

if (strpos($sql_query, 'group by')) { 
    $reviews_count_query = tep_db_query("select count(*) as total from (select count(*)" . substr($sql_query, $pos_from) .") as GroupedResult"); 
} else { 
    $reviews_count_query = tep_db_query("select count(*) as total " . substr($sql_query, $pos_from, ($pos_to - $pos_from))); 
} 
//$reviews_count_query = tep_db_query("select count(*) as total " . substr($sql_query, $pos_from, ($pos_to - $pos_from))); 

그러나, 추가 시험으로, 그 중 제대로 작동하지 않습니다. 그런 다음 정확히 어떤 일이 벌어지고 있는지 조사하고 oscommerce에 비슷한 코드가 이미 있음을 확인했습니다. https://github.com/osCommerce/oscommerce2/blob/bda6f6df3e4ab027b72ecfe6a96ac70b6774b312/catalog/admin/stats_customers.php#L40-L45

여기에서 splitpageresults 클래스는 "그룹 기준"절을 볼 수 있습니다. 그 다음 아래는 "수정 사항 "수정 된 금액의 고객을 numrows 쿼리에 배치합니다. 그리고 그 쿼리는 splitpageresults에 의해 "y 결과의 x 표시"를 위해 사용됩니다.

+0

Cyril의 코멘트 이후로이 답변이 확장되었는지 확실하지 않지만 유용합니다. – dading84