Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1670 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [php] Tordu : Afficher le SUM de plusieurs DECODE passés en variable ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[php] Tordu : Afficher le SUM de plusieurs DECODE passés en variable ?

n°706508
Mosca
Posté le 22-04-2004 à 23:00:15  profilanswer
 

Rha !
C'est pas clair, et c'est vachement difficile à expliquer ...
J'ai un gros query oracle dans lequel j'ai un select decode(...) as "nom", decode(...) as "nom", decode(...) as "nom", etc
J'aimerais afficher la valeur de chaque decode dans une table HTML, sachant que cette valeur est un SUM :
Donc, sous 'nom', j'ai la somme correspondante ...
Le truc tordu, c'est que tous les decodes sont passés dans le query sous la forme d'une variable : $var qui contient le string équivalent aux decodes : $var = "decode(...),decode(...), etc"
Chaque 'nom' étant différent ...
Ensuite je fais une boucle pour afficher tout ça dans la table HTML : en fonction du nombre de 'nom', il boucle et doit m'afficher une colonne par nom ... Il devrait mettre le SUM en dessous du nom, mais il vaut pas !!! Il m'affiche le 'nom' à la place ...
Il me donne pourtant le bon nombre de lignes et de colonnes
Je ne sais pas comment récupérer la valeur SUM pour chaque decode ...
Bref : y a-t-il moyen d'extraire de mon $var les colonnes ('nom', 'nom') et les passer dans la table ($result[NOM][$i] ...) en plaçant le sum sous chaque 'nom ???
Un esprit tortueux aura-t-il compris ? Merci ! 3 jours que j'en bave !
 

mood
Publicité
Posté le 22-04-2004 à 23:00:15  profilanswer
 

n°706512
Lord II
PIB2000
Posté le 22-04-2004 à 23:02:58  profilanswer
 

Salut,
 
tu pourrais mettre un petit bou du code, car là j'y vois pas très clair avec tes explications.
 
Merci
Pierre


Message édité par Lord II le 22-04-2004 à 23:03:07
n°706548
Mosca
Posté le 22-04-2004 à 23:24:49  profilanswer
 

Oui, mais le code est encore plus tordu :D
Je vais tenter le coup ...

n°706567
Mosca
Posté le 22-04-2004 à 23:44:04  profilanswer
 

Je fais un select où je récupère les articles qui seront en paramètre des DECODE
 
Select item ...
 
Je fais deux boucles :
 
La première construit le string "decode" ($field correspond à chaque item)
La seconde construit un string pour le where : where item in ('item', 'item', ...) => $ref = chaque item
 

Code :
  1. for ($i = 0; $i < $nrows; $i++ )
  2. {
  3. $field = $result["ITEM"];
  4. $art .= "decode(c.t\$item,'$field[$i]',sum(c.t\$oqua)) as \"$field[$i]\",";
  5. }
  6. for ($i = 0; $i < $nrows; $i++ )
  7. {
  8. $ref = $result["ITEM"];
  9. $line .= "'$ref[$i]',";
  10. }


 
J'obtiens :
 
select a, b, c, $art 0 from x, y, z where ... item in ($line 0)
 
Note : les deux '0' c'est parce que je boucle en ajoutant  une virgule entre chaque item, donc à la fin il me reste une virgule "libre', alors je mets un "faux" champ 0 (pas trop un problème)
Ca donne : decode(item,item,SUM(qty)) as "item", decode(item,item,SUM(qty)) as "item", 0 .... in (item, item, 0)
 
Et je termine :
 

Code :
  1. echo "<html><body>";
  2. echo "<table border=3 cellspacing='2'>\n<tr>\n";
  3. for ($x = 0; $x < $nrow; $x++ )
  4. {
  5. echo "<tr>\n";
  6. echo "<td><small>" . $res["A"][$x]. "</small></td>";
  7. echo "<td><small>" . $res["B"][$x]. "</small></td>";
  8. echo "<td><small>" . $res["C"][$x]. "</small></td>";
  9. for ($i = 0; $i < $nrows; $i++ )
  10. {
  11. echo "<td><small>" . $field[$i] . "</small></td>";
  12. }
  13. echo "<td>" . $res["0"][$x]. "</td>";
  14. echo "</tr>\n";
  15. }
  16. echo "</body></html>\n";
  17. ?>


 
J'ai le bon nombre de lignes et de colonnes
Mais il m'affiche l'item (200.01, par ex) et non la somme qui lui correspond ...
J'arrive pas à récupérer la somme en fait ...
 
Genre :
 
NUMERO - NOM  - ITEM
0001   - TOTO - 8
0002   - TUTU - 6
 
A la place de 8,6 j'ai le numéro d'item (qui est en char)
 
Derni!re précision : tout ça c'est sur vers oracle, sur Baan ... Donc le code est vraiment peu lisible ...
J'ai fait de mon mieux ...
Y a pt'être moyen d'éviter le decode pour ça, et de passer par des fonctions oracle/php dédiées ...
(Le nombre d'article est aléatoire, il dépend d'un range de date entré en POST par formulaire, d'où la source de mes probs ...)


Message édité par Mosca le 22-04-2004 à 23:44:30

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [php] Tordu : Afficher le SUM de plusieurs DECODE passés en variable ?

 

Sujets relatifs
afficher une fenetre en avant plan[JS] Type de variable [RESOLU]
[Assembleur] Problème de définition de variable ?Afficher un gif dans mon tableau d'affichage [edit]
Peut on ouvrir plusieurs formulaire en même temps sous access 2000probleme de variable dans une formule
[C++]Pb Fstream : plusieurs fichiers successifs avec la meme variable[JS] Petit pb ! mémorisation d'une variable => RESOLU
Revenir à la page précédente après plusieurs refresh 
Plus de sujets relatifs à : [php] Tordu : Afficher le SUM de plusieurs DECODE passés en variable ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR