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 Liste des produits et montre Inaccurate Count Résultats par page

Ceci est la page. Le code qui interroge les résultats est ici: http://pastebin.com/d51bfa53f

Je n'ai aucun sens sur le fonctionnement d'OSCommerce. Fait moi savoir si tu as besoin de quoique ce soit d'autre. En outre, est-ce juste un problème commun dans les requêtes SQL, les boucles PHP, ou dans certains maths étant faux? Je cherche à être pointé dans la bonne direction, pas nécessairement besoin d'une réponse exacte car il s'agit d'un OsCommerce piraté/personnalisé.

+0

. Est-ce SPAM? –

+1

Malheureusement, il n'est pas, – Zachary

+0

Il ya des maths douteuses qui se passe à cause de certains mauvais SQL dans le code. De plus, le Pastebin n'est plus valide. – random

Répondre

1

Je ne pense pas que c'est un spam ..

c'est un problème commun avec oscommerce .. esp contributions de vœux personnalisées dans pour plus de problèmes en matière de requêtes .. classe de navigation oscommerce ne supporte pas l'utilisation de Distinct ou grouper par clauses .. c'est-à-dire, pour dire quand il compte pour les enregistrements, il ne considère pas ces mots-clés .. vous auriez besoin de modifier la classe de résultats de page divisée pour résoudre ce problème.

Vive Shiva

+0

c'est la meilleure suggestion à ce jour, merci beaucoup. nous allons probablement passer à ubercart avec drupal. – Zachary

+0

J'évite de modifier le code de base de l'OSC, donc plutôt que d'éditer la classe splitPageResults soit voir Gerv answer ci-dessous (lien github est utile), soit penser à étendre la classe splitPageResults pour répondre à vos besoins. – dading84

2

Le problème est dans le « groupe par » clause du code osCommerce ne peut pas traiter - dans le fichier de classe splitResults. Mal à comprendre ce pendant un certain temps, et ce fut ma première tentative de le fixer:

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))); 

Cependant, avec d'autres tests, qui ne fonctionne pas correctement non plus. J'ai ensuite passé un peu de temps à travailler sur ce qui se passait exactement, et j'ai trouvé que le code similaire existait déjà dans oscommerce à https://github.com/osCommerce/oscommerce2/blob/bda6f6df3e4ab027b72ecfe6a96ac70b6774b312/catalog/admin/stats_customers.php#L40-L45

Ici, vous pouvez voir la classe splitpageresults est la clause "group by" ... et ensuite il y a la "solution" "placer le nombre corrigé de clients dans la requête numrows. Et cette requête est ensuite appropriée par splitpageresults pour faire les "résultats x de y".

+0

Je ne sais pas si cette réponse a été développée, depuis Commentaire de Cyril, mais c'était une réponse utile pour moi. – dading84

Questions connexes