Pb pour croiser le résultat souhaité

Résolu
fredo35m Messages postés 244 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 12 juillet 2006 - 17 oct. 2005 à 17:37
fredo35m Messages postés 244 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 12 juillet 2006 - 18 oct. 2005 à 13:40
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

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 oct. 2005 à 12:32
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.
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 oct. 2005 à 09:33
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à).
0
fredo35m Messages postés 244 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 12 juillet 2006
18 oct. 2005 à 09:54
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 !!!!...
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 oct. 2005 à 10:24
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fredo35m Messages postés 244 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 12 juillet 2006
18 oct. 2005 à 10:46
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";
0
fredo35m Messages postés 244 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 12 juillet 2006
18 oct. 2005 à 11:05
ç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 !!
0
fredo35m Messages postés 244 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 12 juillet 2006
18 oct. 2005 à 13:40
ok dac !!
0
Rejoignez-nous