Services : Actualité Emploi Blog Forum Flux
Formation Trafic : Référencement Liens sponsorisés Affiliation Ecommerce Nom de domaine E-réputation Marketing Mobile Black Hat
Formation Technique : Performance Web Html Css Sql Curl Asp Dotnet Php Ajax Wordpress Twitter Google Analytics

Forum Oseox
Oseox

Tableau de bord pour des ventes par produit et magasin

Forum Référencement et Trafic
Nous sommes le Ven 24 Mar 2017 09:08

Heures au format UTC [ Heure d’été ]




Poster un nouveau sujet Répondre au sujet
Auteur Message
MessagePosté: Jeu 21 Juil 2011 12:21 
Avatar de l’utilisateur
Bonjour tout le monde.

Je cherche à faire un tableau récapitulatif de ventes de produits par référence et par magasin, avec les totaux de chaque ligne et chaque colonne.
Encore des array php avec lesquels je me bats :shock:

Quelque chose comme ceci au final (désolée le tableau html n'apparait pas sur le forum :oops: ) :
Code:
<table border="1" cellpadding="5" cellspacing="0" style="text-align:center;">
<tr><th>Magasins</th><th>44</th><th>45</th><th>48</th><th>52</th><th>54</th><th>55</th><th>Total Prod/Ref</th></tr>
<tr><td>Reference Produit</td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td></tr>
<tr><td>A1220</td><td>5</td><td>4</td><td>11</td><td>2</td><td>5</td><td>1</td><td>28</td></tr>
<tr><td>A1230</td><td>10</td><td>3</td><td>8</td><td>1</td><td>5</td><td> </td><td>27</td></tr>
<tr><td>C5640</td><td> </td><td>5</td><td>10</td><td>3</td><td>4</td><td>3</td><td>25</td></tr>
<tr><td>C5680</td><td> </td><td>6</td><td>8</td><td>3</td><td>7</td><td>6</td><td>30</td></tr>
<tr><td>D1020</td><td>6</td><td>6</td><td>7</td><td>4</td><td>5</td><td>2</td><td>30</td></tr>
<tr><td>F8370</td><td>5</td><td>7</td><td>8</td><td>5</td><td> </td><td> </td><td>25</td></tr>
<tr><td>F8380</td><td>1</td><td> </td><td>5</td><td>4</td><td>6</td><td> </td><td>16</td></tr>
<tr><td>F8470</td><td>2</td><td>5</td><td>4</td><td>8</td><td> </td><td>6</td><td>25</td></tr>
<tr><td>H1020</td><td>8</td><td>2</td><td>9</td><td> </td><td>7</td><td>7</td><td>33</td></tr>
<tr><td>H1030</td><td>8</td><td>7</td><td>8</td><td> </td><td>6</td><td>5</td><td>24</td></tr>
<tr><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td></tr>
<tr><td>Total Prod/Mag</td><td>45</td><td>45</td><td>78</td><td>30</td><td>45</td><td>40</td><td><b>263</b></td></tr>
<tr style="text-align:center;"><td> </td><td style="text-align:center;"> 283 </td></tr>

</table>

En fait je vois a peu près comment faire au niveau des requetes sql, puis suivant le nombre de lignes et de colonnes je fais des boucles for pour l'affichage...
Bref des idées que je pressens mais rien de bien probant quand je me met au code.
Code:
<table border="1" cellpadding="5" cellspacing="0" style="text-align:center;">
<tr><th>Magasin</th>      
<?php


$req = "SELECT DISTINCT(magasin) from ventes ORDER BY magasin ASC";
$sql = mysql_query($req);
$num_cols = mysql_num_rows($sql);

while($res=mysql_fetch_array($sql))
{
   echo "<th>".$res['magasin']."</th>";
}
echo '</tr>';

echo '<tr>';

$req2 = "SELECT DISTINCT(reference_prod) from ventes ORDER BY magasin ASC";
$sql2 = mysql_query($req2);
$num_rows = mysql_num_rows($sql2);

while($res=mysql_fetch_array($sql2))
{
   echo "<td>".$res['reference_prod']."</td>";
   $req3 = "SELECT COUNT(reference_prod) AS nb from ventes WHERE reference_prod LIKE '".$res['reference_prod']."' ";
   $sql3 = mysql_query($req3);
   while($res3=mysql_fetch_array($sql3))
   {
      echo "<td>".$res3['nb']."</td>";
   }

   echo '</tr>';
}


?>
</table>



Comment gérer les totaux en lignes (par reference produit) et en colonnes (par magasin).


Je vous met le sql de ma table de test au cas où:

Code:
CREATE TABLE ventes' (
'id' INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
'reference_prod' VARCHAR( 15 ) NOT NULL ,
'magasin' VARCHAR( 5 ) NOT NULL ,
'date_vente' DATE NOT NULL
) ENGINE = MYISAM ;


INSERT INTO 'ventes' (
'id' ,
'reference_prod' ,
'magasin' ,
'date_vente'
)
VALUES (
NULL , 'A1220', '44', '2011-07-21'
), (NULL , 'H1030', '45', '2011-07-21'
), (NULL , 'C5680', '48', '2011-07-21'
), (NULL , 'D1020', '52', '2011-07-21'
), (NULL , 'A1220', '44', '2011-07-21'
), (NULL , 'D1020', '54', '2011-07-21'
), (NULL , 'F8380', '44', '2011-07-21'
), (NULL , 'A1220', '55', '2011-07-21'
), (NULL , 'C5640', '48', '2011-07-21'
), (NULL , 'A1220', '44', '2011-07-21'
), (NULL , 'F8370', '45', '2011-07-21'
), (NULL , 'H1030', '52', '2011-07-21'
), (NULL , 'F8380', '54', '2011-07-21'
), (NULL , 'A1220', '44', '2011-07-21'
), (NULL , 'F8470', '55', '2011-07-21'
), (NULL , 'F8370', '54', '2011-07-21'
), (NULL , 'D1020', '48', '2011-07-21'
), (NULL , 'H1020', '44', '2011-07-21'
), (NULL , 'A1220', '45', '2011-07-21'
), (NULL , 'F8470', '55', '2011-07-21'
), (NULL , 'C5680', '45', '2011-07-21'
), (NULL , 'A1230', '44', '2011-07-21'
), (NULL , 'A1220', '45', '2011-07-21'
), (NULL , 'C5640', '44', '2011-07-21'
), (NULL , 'A1220', '48', '2011-07-21'
), (NULL , 'F8370', '55', '2011-07-21'
), (NULL , 'A1230', '45', '2011-07-21'
), (NULL , 'A1230', '44', '2011-07-21'
), (NULL , 'D1020', '52', '2011-07-21'
), (NULL , 'A1220', '44', '2011-07-21'
), (NULL , 'H1020', '52', '2011-07-21'
), (NULL , 'C5640', '52', '2011-07-21'
), (NULL , 'H1030', '44', '2011-07-21'
), (NULL , 'F8370', '54', '2011-07-21'
), (NULL , 'C5680', '44', '2011-07-21'
), (NULL , 'A1220', '55', '2011-07-21'
), (NULL , 'F8470', '48', '2011-07-21'
), (NULL , 'A1220', '44', '2011-07-21'
), (NULL , 'C5640', '45', '2011-07-21'
), (NULL , 'D1020', '55', '2011-07-21'
), (NULL , 'F8380', '48', '2011-07-21'
), (NULL , 'A1220', '52', '2011-07-21'
), (NULL , 'A1230', '54', '2011-07-21'
), (NULL , 'H1030', '44', '2011-07-21'
), (
NULL , 'A1230', '45', '2011-07-21'
);



Merci pour votre aide :) .

Daphn !


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Jeu 21 Juil 2011 14:43 
Administrateur
Avatar de l’utilisateur
Je passe pour cette fois, tu n'as même pas dis merci ici :)


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Jeu 21 Juil 2011 15:12 
Avatar de l’utilisateur
:oops: Gloups !
que dire sinon que tu as mille fois raison... de plus j'avais prévu de poster la solution que j'ai trouvée pour ce problème, puis avec les jours qui passent ( suis tête en l'air :shock: . ) j'ai complètement oublié. :o .. et du coup mes bonnes manières aussi envers ceux, et donc toi, qui m'apportent de l'aide...( nb: je suis pas totalement ingrate je t'avais remercié pour presque tous tes messages d'aide... mais c'est pas une excuse je sais )

Alors MEA MAXIMA CULPA !!!

Je potasse donc encore et encore et je prépare le script pour conclure nos derniers échanges ( et faire amende honorable ) :D et en faire profiter tout le monde.

Daphn.


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Sam 23 Juil 2011 10:04 
Administrateur
Avatar de l’utilisateur
Ca roule ;)


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Mer 27 Juil 2011 07:13 
Professionnel
Professionnel
Avatar de l’utilisateur
Le code que tu as posté me donne la migraine, j'ai donc regardé très rapidement ^^

Tu peux obtenir un récapitulatif par référence et par produit en une seule requête grâce à la fonction d'agrégation COUNT() et une clause GROUP BY , tu n'as pas besoin de davantage d'info pour obtenir ce que tu affiches à l'heure actuelle :

Code:
SELECT *,COUNT(reference_prod) AS nb from ventes GROUP BY reference_prod ORDER BY magasin


date_vente ne te sert alors à rien dans le résultat (je pense qu'il prend la première ou la dernière entrée), tu peux éventuellement extraire le dernier :

Code:
SELECT *,COUNT(reference_prod), MAX(date_vente) AS nb from ventes GROUP BY reference_prod ORDER BY magasin


Haut
 Profil Envoyer un e-mail  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 5 messages ] 

Heures au format UTC [ Heure d’été ]


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
Abonnez-vous au flux RSS

Blog

Forum

Offres d'emploi

Copyright : Moteur, traduction et optimisation
Merci de votre visite sur le forum Oseox