Aide - Recherche - Membres - Calendrier
Version complète : Création statistiques. Besoin d'aide ou précision en MySQL
Forum osCommerce-fr > Adapter OsCommerce MS2 > Echanges développeurs
bedford
Bonsoir,

je suis en train de créer une contribution permettant de réaliser des statistiques avec affichage graphique (en me basant sur des librairies gratuites).
J'ai installées 2 contributions, dont une créée par un utilisateur de ce forum (Xaglo si je me trompe pas - superbe contrib au demeurant !!!).

Le but serait que le système permette à tout un chacun de créer ses propres statistiques. Il devrait être possible de définir les champs à afficher et de créer la requête pour avoir ce que l'on veut (ça va pas aller jusqu'au Datawarehouse, je n'ai de loin pas cette prétention). Ceci permettra d'avoir un moteur de statistiques et il faudra créer les "scripts" pour ce que l'on veut (le but étant que l'on puisse ensuite partager ces scripts).

Le problème c'est que les deux contributions installées donnent déjà des résultats différents entre elles...bien entendu mes résultats sont différents des deux autres.
Je suis dans la moyenne en connaissances MySQL mais je connais pas encore tous les méandres de OsCommerce. Je vous demanderai donc de l'aide pour réaliser une partie des requêtes afin d'être certain d'être sur le bon chemin. Pour l'instant il s'agit d'un affichage plus que basique, le but étant d'avoir déjà quelques chose de "fonctionnel". On fera beau après.
Voici le code pour la première stat (Total des ventes par marque):
$tot_sale_query_raw_brand = "select sum(op.final_price) as total, m.manufacturers_name as brand from " .
TABLE_ORDERS_PRODUCTS . " op, " . TABLE_PRODUCTS . " p, ". TABLE_MANUFACTURERS . " m
where op.products_id = p.products_id
and p.manufacturers_id = m.manufacturers_id";
$tot_sale_query_raw_brand .= ' group by p.manufacturers_id order by total desc';
echo '<br /><strong>Total by Brand</strong>';
echo '<table>';
$tot_sale_query_brand = tep_db_query($tot_sale_query_raw_brand);
$total = 0;
while($tot_sale_brand = tep_db_fetch_array($tot_sale_query_brand)){
echo '<tr><td>'.$tot_sale_brand['brand'].'</td><td>'.$currencies->format($tot_sale_brand['total']).'</td></tr>';
$total += $tot_sale_brand['total'];
}
echo '</table>';
echo '<h2>'.$currencies->format($total).'</h2>';

J'ai aussi créé le total des ventes par catégorie:
$tot_sale_query_raw_brand = "select sum(op.final_price) as total, cd.categories_name as categoryname from " .
TABLE_ORDERS_PRODUCTS . " op, " . TABLE_PRODUCTS . " p, ". TABLE_PRODUCTS_TO_CATEGORIES ." pc, ". TABLE_CATEGORIES_DESCRIPTION . " cd
where op.products_id = p.products_id
and p.products_id = pc.products_id
and pc.categories_id = cd.categories_id
and language_id = 4";
^ $tot_sale_query_raw_brand .= ' group by cd.categories_id order by total desc';
//echo $tot_sale_query_raw_brand;
echo '<br /><strong>Total par Catégorie</strong>';
echo '<table>';
$tot_sale_query_brand = tep_db_query($tot_sale_query_raw_brand);
$total = 0;
while($tot_sale_brand = tep_db_fetch_array($tot_sale_query_brand)){
echo '<tr><td NOWRAP>'.$tot_sale_brand['categoryname'].'</td><td>'.$currencies->format($tot_sale_brand['total']).'</td></tr>';
$total += $tot_sale_brand['total'];
}
echo '</table>';
echo '<h2>'.$currencies->format($total).'</h2>';

Hors là aussi entre les deux, j'ai des totaux complètement différents alors qu'ils devraient être identiques.

Voilà, je fais appel à vous pour que vous puissiez m'aider pour les requêtes et surtout me proposer de nouvelles requêtes et stats qui vous intéresseraient pour mieux voir ce qui se passe dans nos shops.
Prochaines étapes:
- Le total par pays (éventuellement segmenté par catégorie) ou continent
- L'évolution des ventes par semaines/mois/années
- L'évolution des ventes par semaines/mois/années par marque
- L'évolution des ventes par semaines/mois/années par catégorie

C'est ambitieux certes mais autant avoir des stats qui serviront à tous et qui soit modulaire.
PS: pour ceux qui aident, merci d'indiquer vos nom/prénom/pseudo afin que je puisse vous citer dans la contrib. Je pourrai peut-être pas mettre tout le monde s'il y a trop de gens, mais sait-on jamais...

Bonne soirée et merci de m'avoir lu.
FoxP2
Dans les applications de gestion, les dev se servent très souvent des vues.
Elles peuvent te permettre de sélectionner certains champs, d'agréger des colonnes,de rapatrier des tables complètes et ensuite d'écrire des requêtes dynamiques.
Mais il te sera difficile d'universaliser des règles de gestion ou métier.
Parfois, il est plus utile d'expliquer comment on réalise un tableau de bord efficace.
bedford
Citation (FoxP2 @ 16 Jul 2010, 00:11) *
Dans les applications de gestion, les dev se servent très souvent des vues.
Elles peuvent te permettre de sélectionner certains champs, d'agréger des colonnes,de rapatrier des tables complètes et ensuite d'écrire des requêtes dynamiques.
Mais il te sera difficile d'universaliser des règles de gestion ou métier.
Parfois, il est plus utile d'expliquer comment on réalise un tableau de bord efficace.


Bonjour FoxP2, merci pour ton message.
Pour l'instant je vais "faire en dur" pour voir si je peux ensuite réutiliser du code (version future) sans aller jusqu'à la sélection des champs dynamiquement. Je pensais plutôt à un fichier PHP ou XML par statistique (plugin) dans laquelle il y aurait la requête, la définition des champs et labels, éventuellement les champ de saisie....mais c'est de la musique d'avenir....
Si j'arrive à mettre en place un système "visuellement attrayant" et surtout utile pour les stats d'un site, les gens s'impliqueront plus facilement au projet, surtout que ce genre de stats peut faire booster les ventes d'un site !
La première version va dans le sens du "tableau de bord", où je pose les bases pour afficher des stats et où chacun pourra ensuite créer ses propres stats (en dur dans le code) en se basant sur la contrib. La difficulté étant d'être le plus ouvert possible.
Les versions futures évolueront en cas de besoin, ça ne sert à rien de faire compliqué si personne ne l'utilise. Il s'agit actuellement d'un besoin personnel, je ne sais pas si les gens ont besoin (ou l'envie) d'avoir autant d'informations.

@+

Gabriel
paddybl
Salut bedford, si sa t'interesse j'avais pondu un utilitaire de stats ou y a pas mal de requetes qui pourront te gagner du temps.
http://addons.oscommerce.com/info/5541

Bon courage dans l'aventure développement
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2013 Invision Power Services, Inc.