Pb pour croiser le résultat souhaité [Résolu]

Signaler
Messages postés
244
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
12 juillet 2006
-
Messages postés
244
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
12 juillet 2006
-
Bonjour,
je reviens avec un nouveau tableau à mettre en forme car là j'y arrive vraiment pas et je ne comprends pas comment le faire si quelqu'un pouvait à nouveau m'aider!!! désolé de revenir à la charge sur mes tableau mais là c'est mon dernier tableau !!!!! svp !!!
il s'agit de croisé ANNEE PAR TRANCHE ET PAR CODE ACTIVITE
J'arrive bien à croisé ANNEE ET CODE ACTIVITE, mais pas les 3 en même temps,

voici ma requete qui marche bien puisque lorsque je lui dit d'afficher tout bête les résultats il m'affiche bien les trucs :

if ($act!="" and $act!="00" and $codeact=="TOUTES" and $sexe!="1" and ($donnees=="ET_TRANCHE" or $donnees=="EMP_TRANCHE"))
{
$actlib=$act._LIB;
if ($donnees=="ET_TRANCHE") {
$donnees1="ET1_4ET";
$donnees2="ET5_9ET";
$donnees3="ET10_19ET";
$donnees4="ET20_49ET";
$donnees5="ET50_99ET";
$donnees6="ET100_199E";
$donnees7="ET200_499E";
$donnees8="ET500PLUSE"; }
if ($donnees=="EMP_TRANCHE") {
$donnees1="ET1_4T";
$donnees2="ET5_9T";
$donnees3="ET10_19T";
$donnees4="ET20_49T";
$donnees5="ET50_99T";
$donnees6="ET100_199T";
$donnees7="ET200_499T";
$donnees8="ET500PLUST"; }
//SELECTION DU TERRITOIRE SOUHAITE ET LA LISTE DU TERRITOIRE
$query_reqa = mysql_query("SELECT b1.TYPE_ELT,
b1.CODE_GROUPE,
b1.CODE_REGROUPT,

b2.NOM_REGROUPT,
b2.CODE_REGROUPT,

b3.CODE_GROUPE,
b3.CODE_ELT,

b4.NAF700,
b4.$act,
b4.$actlib,

b5.DECOM,
b5.NAF700,
b5.ANNEE,
SUM( b5.$donnees1 ) AS somme1,
SUM( b5.$donnees2 ) AS somme2,
SUM( b5.$donnees3 ) AS somme3,
SUM( b5.$donnees4 ) AS somme4,
SUM( b5.$donnees5 ) AS somme5,
SUM( b5.$donnees6 ) AS somme6,
SUM( b5.$donnees7 ) AS somme7,
SUM( b5.$donnees8 ) AS somme8
FROM $cnx.groupes AS b1,
$cnx.regroupt AS b2,
$cnx.det_grp AS b3,
$cnx.sir_nafcdcol AS b4,
$unedic.bsunedic AS b5
WHERE b1.CODE_REGROUPT = '$territoire' AND
b1.TYPE_ELT = b2.CODE_REGROUPT AND
b1.CODE_GROUPE = b3.CODE_GROUPE AND
b1.CODE_GROUPE = '$CODE_GROUPEB' AND
b5.DECOM = b3.CODE_ELT AND
b5.NAF700 = b4.NAF700 AND
b5.ANNEE>='$debut' AND
b5.ANNEE<='$fin'
GROUP BY b5.ANNEE, b4.$act
ORDER BY b5.ANNEE, b4.$act");

voici mon script du tableau :
$tab1 = array();
$tab2 = array();
$tab3 = array();
$tab4 = array();
$tab5 = array();
$tab6 = array();
$tab7 = array();
$tab8 = array();
$listeparam1 = array();
$listeparam2 = array();
while($row = mysql_fetch_array($query_reqa)) {
$row[$concact]=$row[$act].$row[$actlib];
$listeparam1[$row['ANNEE']] = $row[ANNEE];
$listeparam2[$row[$concact]] = $row[$concact];
$tab1[$row[ANNEE]][$row[$concact]] = $row[somme1];
$tab2[$row[ANNEE]][$row[$concact]] = $row[somme2];
$tab3[$row[ANNEE]][$row[$concact]] = $row[somme3];
$tab4[$row[ANNEE]][$row[$concact]] = $row[somme4];
$tab5[$row[ANNEE]][$row[$concact]] = $row[somme5];
$tab6[$row[ANNEE]][$row[$concact]] = $row[somme6];
$tab7[$row[ANNEE]][$row[$concact]] = $row[somme7];
$tab8[$row[ANNEE]][$row[$concact]] = $row[somme8];

echo 'annee:';
echo $listeparam1[$row['ANNEE']];
echo 'activité:';
echo $listeparam2[$row[$concact]];
echo 'somme1=';
echo $tab1[$row[ANNEE]][$row[$concact]];
echo 'somme2=';
echo $tab2[$row[ANNEE]][$row[$concact]];
echo 'somme3=';
echo $tab3[$row[ANNEE]][$row[$concact]];
echo 'somme4=';
echo $tab4[$row[ANNEE]][$row[$concact]];
echo 'somme5=';
echo $tab5[$row[ANNEE]][$row[$concact]];
echo 'somme6=';
echo $tab6[$row[ANNEE]][$row[$concact]];
echo 'somme7=';
echo $tab7[$row[ANNEE]][$row[$concact]];
echo 'somme8=';
echo $tab8[$row[ANNEE]][$row[$concact]];
}
if(!empty($listeparam1)) {
echo '' , \"\n\";
echo ' ----
', \"\n\";
echo ' NAF ET ANNEE PAR TRANCHE, ', \"\n\";
foreach($listeparam1 as $ANNEE) {
echo '' , $ANNEE,', ', \"\n\";
echo '' , $ANNEE, ', ', \"\n\";
echo '' , $ANNEE, ', ', \"\n\";
echo '' , $ANNEE, ', ', \"\n\";
echo '' , $ANNEE, ', ', \"\n\";
echo '' , $ANNEE, ', ', \"\n\";
echo '' , $ANNEE, ', ', \"\n\";
echo '' , $ANNEE, ', ', \"\n\"; }
echo ' ', \"\n\";
echo ' ----
', \"\n\";
echo '' , ACTIVITE , ', ', \"\n\";
foreach($listeparam1 as $ANNEE) {
echo '' , TRANCHEa , ', ', \"\n\";
echo '' , TRANCHEb , ', ', \"\n\";
echo '' , TRANCHEc , ', ', \"\n\";
echo '' , TRANCHEd , ', ', \"\n\";
echo '' , TRANCHEe , ', ', \"\n\";
echo '' , TRANCHEf , ', ', \"\n\";
echo '' , TRANCHEg , ', ', \"\n\";
echo '' , TRANCHEh , ', ', \"\n\"; }
echo ' ', \"\n\";
echo ' ----
', \"\n\";
foreach($listeparam2 as $concact){
echo '' ,$concact, ', ', \"\n\";
foreach($listeparam1 as $ANNEE) {

if(isset($tab1[$row['ANNEE']][$row[$concact]])){
echo '' ,$tab1[$row['ANNEE']][$row[$concact]], ', ', \"\n\"; }
else {
echo ' 0, ', \"\n\"; }
if(isset($tab2[$row['ANNEE']][$row[$concact]])){
echo '' ,$tab2[$row['ANNEE']][$row[$concact]], ', ', \"\n\"; }
else {
echo ' 0, ', \"\n\"; }
if(isset($tab3[$row[ANNEE]][$row[$concact]])){
echo '' ,$tab3[$row[ANNEE]][$row[$concact]], ', ', \"\n\"; }
else {
echo ' 0, ', \"\n\"; }
if(isset($tab4[$row[ANNEE]][$row[$concact]])){
echo '' ,$tab4[$row[ANNEE]][$row[$concact]], ', ', \"\n\"; }
else {
echo ' 0, ', \"\n\"; }
if(isset($tab5[$row[ANNEE]][$row[$concact]])){
echo '' ,$tab5[$row[ANNEE]][$row[$concact]], ', ', \"\n\"; }
else {
echo ' 0, ', \"\n\"; }
if(isset($tab6[$row[ANNEE]][$row[$concact]])){
echo '' ,$tab6[$row[ANNEE]][$row[$concact]], ', ', \"\n\"; }
else {
echo ' 0, ', \"\n\"; }
if(isset($tab7[$row[ANNEE]][$row[$concact]])){
echo '' ,$tab7[$row[ANNEE]][$row[$concact]], ', ', \"\n\"; }
else {
echo ' 0, ', \"\n\"; }
if(isset($tab8[$row[ANNEE]][$row[$concact]])){
echo '' ,$tab8[$row[ANNEE]][$row[$concact]], ', ', \"\n\"; }
else {
echo ' 0, ', \"\n\"; }
}
echo ' ', \"\n\"; }

echo '
', "\n";
}
else {echo 'ça marche pas tableau b';}
}

7 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
J'ai rien fait...lol.



Ouvre ton php.ini, et cherche la ligne error_reporting.

Mets ça à E_ALL.

Sauvegarde, évidemment, et relance ton serveur.
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,



c'est imbuvable ton code, Fredo...



TU veux les croiser comment ? un ORDER BY sur 3 critères fonctionne très bien.

Je me refuse à lire ton code, c'est vraiment trop fouilli. Essaye
plutôt de donner un exemple simple. A priori, ton problème doit se
situer au niveau de la construction de ta requête, je suppose, puisque
croiser des tables, ça se fera à ce niveau.



Tu t'y retrouves avec une requête pareille, au passage, lol ? J'ai
rarement vu aussi long et peu intuitif (b1, b2...t'aurais pu être plus
inventif pour les alias! Si tu dois te replonger dans ce code après
l'avoir laissé de côté quelques mois, tu regretteras ces alias...).



Bref, je ne suis pas sûr que tu trouves de l'aide avec ça. Essaye
vraiment de simplifier pour qu'on ait envie de regarder de plus près
:-) (c'est pas une critique hein, juste un conseil : c'est vraiment
trop chiant à lire, là).
Messages postés
244
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
12 juillet 2006

salut,

oui c'est clair mais hier soir j'étais dépité donc je savais pas trop comment expliqué mon problème.

En fait, je pense que ma requete est bonne mais mon problème est pour mettre dans un tableau. Alors pour faire simple voici, ma problématique:
A partir de plusieurs tables je souhaite obtenir des sommes par tranche.
Voici ce que j'obtiens après ma requete :

CODEACTIVITE ANNEE SUMTRANCHE1 SUMTRANCHE.....
CODEA 2000 12 25
CODEA 2001 15 20
CODEB 2000 10 12
CODEB 2001 15 15

Maintenant je souhaite les disposer de la manière suivante :

2000 2000 2001 2001
STRANCHE1 STRANCHE2 STRANCHE1 STRANCHE2
CODEA 12 25 15 20
CODEB 10 12 15 15

Et c'est ça que je n'arrive pas à faire j'arriveà le faire lorsque que je dois juste croisé ANNEE ET CODE mais pas quand j'ai une troisième variante !!!

J'espère que c'est plus clair ainsi !!! mais je pense que mon code n'est pas très loin de la solution mais qu'il me manque il petit truc (comme d'hab ...)
Merci d'avance pour ton aide !!!!...
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hmm, ok. Ca ne va pas être simple.

Cherche sur le forum, tableau croise ou un truc comme ça. Il y a eu un
long sujet là-dessus justement, la même problématique exactement, et ça
a été à peu près résolu.

C'était il y a 3 semaines je pense, dans ces eaux-là.



Moi ce que je peux te conseiller : essaye de représenter déjà ce tableau en tableau php. TU verras que ce n'est pas simple...

Si tu trouves une structure de tableau php (array quoi) pouvant donner
un résultat satisfaisant, tu sauras alors le construire à partir de ta
requête.
Messages postés
244
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
12 juillet 2006

alors depuis ce matin, j'ai avancé un peu il me rest plus qu'un paramètre à lui dire, car il met bien les valeurs dans mon tableau sauf qu'il ne tient pas compte de l'année !!! C'est à dire qu'il met la même valeur pour l'année 2000 et l'année 2001 !! J'suis pas loin j'suis sûr mais il me manque juste un petit truc pour que mon tableau soit correct je mets le code du tableau au cas où avec en rouge la partie qui ne fonctionne pas très bien car il me mets bien mes valeurs dans le tableau mais sans tenir compte de l'année c'est à dire qu'il me met 2 fois la même somme (mais au bon endroit quand même)!!!:

En tout cas merci de ton aide !!
echo '' , \"\n\";
echo ' ----
', \"\n\";
echo ' NAF ET ANNEE PAR TRANCHE, ', \"\n\";
foreach($listeparam1 as $ANNEE) {
echo '' , $ANNEE,', ', \"\n\";
echo '' , $ANNEE, ', ', \"\n\";
echo '' , $ANNEE, ', ', \"\n\";
echo '' , $ANNEE, ', ', \"\n\";
echo '' , $ANNEE, ', ', \"\n\";
echo '' , $ANNEE, ', ', \"\n\";
echo '' , $ANNEE, ', ', \"\n\";
echo '' , $ANNEE, ', ', \"\n\"; }
echo ' ', \"\n\";
echo ' ----
', \"\n\";
echo '' , ACTIVITE , ', ', \"\n\";
foreach($listeparam1 as $ANNEE) {
echo '' , TRANCHEa , ', ', \"\n\";
echo '' , TRANCHEb , ', ', \"\n\";
echo '' , TRANCHEc , ', ', \"\n\";
echo '' , TRANCHEd , ', ', \"\n\";
echo '' , TRANCHEe , ', ', \"\n\";
echo '' , TRANCHEf , ', ', \"\n\";
echo '' , TRANCHEg , ', ', \"\n\";
echo '' , TRANCHEh , ', ', \"\n\"; }
echo ' ', \"\n\";
echo ' ----
', \"\n\";
foreach($listeparam2 as $concact){
echo '' ,$concact, ', ', \"\n\";
foreach($listeparam1 as $ANNNEE){
if(isset($tab1[$ANNEE][$concact])){
echo '' ,$tab1[$ANNEE][$concact], ', ', \"\n\"; }
else {
echo ' 0, ', \"\n\"; }
if(isset($tab2[$ANNEE][$concact])){
echo '' ,$tab2[$ANNEE][$concact], ', ', \"\n\"; }
else {
echo ' 0, ', \"\n\"; }
if(isset($tab3[$ANNEE][$concact])){
echo '' ,$tab3[$ANNEE][$concact], ', ', \"\n\"; }
else {
echo ' 0, ', \"\n\"; }
if(isset($tab4[$ANNEE][$concact])){
echo '' ,$tab4[$ANNEE][$concact], ', ', \"\n\"; }
else {
echo ' 0, ', \"\n\"; }
if(isset($tab5[$ANNEE][$concact])){
echo '' ,$tab5[$ANNEE][$concact], ', ', \"\n\"; }
else {
echo ' 0, ', \"\n\"; }
if(isset($tab6[$ANNEE][$concact])){
echo '' ,$tab6[$ANNEE][$concact], ', ', \"\n\"; }
else {
echo ' 0, ', \"\n\"; }
if(isset($tab7[$ANNEE][$concact])){
echo '' ,$tab7[$ANNEE][$concact], ', ', \"\n\"; }
else {
echo ' 0, ', \"\n\"; }
if(isset($tab8[$ANNEE][$concact])){
echo '' ,$tab8[$ANNEE][$concact], ', ', \"\n\"; }
else {
echo ' 0, ', \"\n\"; }
}
echo ' ', \"\n\"; }

echo '
', "\n";
Messages postés
244
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
12 juillet 2006

ça y est j'ai trouvé où ça déconnait !!! je suis vert de l'erreur !!!!!
j'avais mis 3 "N" à ANNEE !!! : foreach($listeparam1 as $ANNNEE){

donc maintenant ça marche nickel !!
PS : pourquoi j'ai pas eu de message d'erreru ou que rien ne marche ???!!

merci encore !!! mais j'suis trop énervé de cette erreur de naze !!
Messages postés
244
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
12 juillet 2006

ok dac !!