tableau croisé ???

Eléphant du PHP | 289 Messages

06 oct. 2005, 08:06

Bonjour,

Je voulais savoir s'il etait possible de faire une sorte de tableau croisé dynamique en php/sql?

je vous explique.
Actuelement, j'ai un tableau qui est sous la forme suivante:
Secteur | Element | Nombre

Je fait un count par element et par secteur (+tri decroissant par nombre), dans le but de trouver l'element ET et le secteut qui reviennent le plus souvent.

Cette mise en page est correcte pour pourrait etre bcq mieux si je trouvais le moyen de faire mon tableau sous une forme:

........... |Element1|Element2|...
Secteur1|
Secteur2|

je ne sais pas si vous voyez ce que je cherche a faire :?

Pour le moment, j'ai le code + la requete sql pour fair le tableau sous la 1ere forme, pê que ca peut servir pour le nouvelle forme :wink:

merci de votre aide,
FAb
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 568 Messages

06 oct. 2005, 10:32

Il te faudra exécuter plusieurs requêtes...

En gros, tu exécutes la même requête mais en ajoutant un where selon le secteur.... Tu récupèreras donc les valeurs pour chaque éléments pour le secteur... En bouclant dessus, tu créés les cellules et place les valeurs...

Puis tu passes à la ligne suivante, avec un nouveau secteur dans le where...
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Eléphant du PHP | 289 Messages

06 oct. 2005, 11:05

Euh, vi, si tu le dis, :wink:

actuellement, g deja mes requetes, tu pourrais me donner un coup de patte pour faire la fusion? :oops:

Merci bcq,
FAb
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 568 Messages

06 oct. 2005, 11:06

Montre ce que tu as déjà fais...
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Eléphant du PHP | 289 Messages

06 oct. 2005, 11:51

voici la requete sql pour le tableau forme n°1:

Code : Tout sélectionner

SELECT secteurs.secteurs as toto, elements.details as tata ,count(*) as titi FROM expertise, secteurs, elements, registre WHERE registre.ID= expertise.numdossier and secteurs.id=registre.secteur and expertise.element=elements.ID GROUP BY expertise.Element, secteurs.Secteurs ORDER BY titi DESC [quote] tu penses que ca va etre faisable? FAb[/quote]
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 568 Messages

06 oct. 2005, 12:01

Donc je refais... Cette requête, tu la ré-exécutes autant de fois que de secteur... Sauf que dans ta requête, tu ne groupes plus que par element et tu rajoutes une clause dans le where pour définir le secteur souhaité...

Tu auras au final une requête avec chaque element et le count.
Tu inserts les résultats de count dans les cellules d'une ligne du tableau, puis tu ré-exécutes la requêtes avec le secteur suivant, tu remplis les cellules d'une ligne suivantes, etc...
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Eléphanteau du PHP | 11 Messages

08 oct. 2005, 17:28

Fabrice j'ai eu, je pense, exactement le même pb de tablé croisé que toi.
Tu peux voir mon code pour t'en inspirer : http://www.phpfrance.com/forums/voir_sujet-9233.php

Eléphant du PHP | 289 Messages

10 oct. 2005, 08:29

salut,


je viens d'aller sur ton ancien post et j'ai essayé d'adapter ton code a mon cas mais ca plante :=(

Pour le moment, j'ai la requete suivante:

Code : Tout sélectionner

SELECT secteurs.secteurs as toto, elements.details as tata ,count(*) as titi FROM expertise, secteurs, elements, registre WHERE registre.ID= expertise.numdossier and secteurs.id=registre.secteur and expertise.element=elements.ID GROUP BY expertise.Element, secteurs.Secteurs ORDER BY titi DESC
et le tableau
//...
    <table border="1">
    <tr>
      <td width="215"><div align="center"><strong>SECTEUR</strong></div></td>
      <td width="215"><div align="center"><strong>DEFAUT</strong></div></td>
      <td width="175"><div align="center"><strong>DENOMBREMENT</strong></div></td>
      <td width="180"><div align="center"><strong>RATIO GLOBAL </strong></div></td>
      </tr>
    <?php do { ?>
    <tr>
      <td width="215"><div align="center"><?php echo $row_avisot['toto']; ?></div></td>
      <td width="215"> <div align="center">
        </div>
      <div align="center"><?php echo $row_avisot['tata']; ?></div>      </td>
      <td width="175"><div align="center"><?php echo $row_avisot['titi']; ?></div></td>
      <td width="180"><div align="center"><?php echo number_format($row_avisot['titi']/$row_totalparelement['count(defaut)']*100,2); ?> % </div></td>
    </tr>
    <?php } while ($row_avisot = mysql_fetch_assoc($avisot)); ?>
  </table>
  <p>&nbsp;</p>
je ne vois pas pourquoi je n'arrive pas a adapter ton code :oops: donc si tu as 5 min ... :wink:

merci de ton aide,
FAb
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 19672 Messages

10 oct. 2005, 08:50

Fabrice, scrongneugneu, + de 200 messages et tu me mets encore du code avec le bouton [quote] [-X

Bon, dans ton code, tu utilises "$row_totalparelement['count(defaut)']" : "count(default)" n'est pas dans ta requête, donc déjà, ça va planter à cet endroit.

Est-ce que ta requête exécutée directement te retourne les résultats voulus ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

10 oct. 2005, 09:37

Salut

La requete fonctionne parfaitement telqu'elle est ecrite.

le "$row_totalparelement['count(defaut)']" : "count(default)" correspond en effet a une autre requete de la plage qui me permet de compter le nobre de defauts total. rien ne vous echappe :wink:

est ce que tu vois une sol a ce pb? :oops:

ps: dsl pour l'utilisation abusive du "quote" ;=)

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

10 oct. 2005, 10:05

Qu'est-ce qu'un tableau croisé ? Un tableau multi-dimensionnel ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 289 Messages

10 oct. 2005, 10:25

c un tableau dans lequel le nombre de colonnes et de lignes n'est pas fixé!
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

10 oct. 2005, 10:45

Comme tous les tableaux :) c'est extensible.
Mais tu parles bien de tableau PHP ? (type Array)

Eléphant du PHP | 289 Messages

10 oct. 2005, 18:54

alut,

Pour le moment, le type du tableau est defini dans un de mes post précédent.
S'il faut le passer en array, je ne suis pas contre :wink:
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Eléphant du PHP | 289 Messages

11 oct. 2005, 10:11

bonjour,

personne ne voit de solution a mon pb? :cry:
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)