Se connecter / S'enregistrer
Votre question

optimisation d'un programme php

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
26 Janvier 2007 01:20:38

Bonjour,

Je cherche à optimiser un programme :

Vla le résultat

http://www.solidaritok.com/index.php?page=nutrition-affiche-moyenne

et vla le code source :
http://www.solidaritok.com/txt/affiche-moyenne.txt

je voudrais aussi que si les valeurs sont a zéro, qu'elle s'écrivent en gris.

En vous remericant, amicalement, SOL.

Autres pages sur : optimisation programme php

26 Janvier 2007 10:46:03

bonjour,
tu peux mettre tous les noms de colonnes dans un tableau en premier et ensuite faire des boucles, ca sera plus lisibles :) 
  1. $tab = array ('nom', 'A', 'B1');
  2. if (isset ($_GET['trier']) and in_array ($_GET['trier'], $tab))
  3. {
  4. $ordre = $_GET['trier'];
  5. echo affichage($ordre);
  6. }
  7. else
  8. {
  9. // La demande trier ne correspond pas on l'oubli et on affiche le tableau de base
  10. $ordre = 'nom';
  11. echo affichage($ordre);
  12. }
  13. //....
  14. $tableau .= "<table border='1'>\n";
  15. $tableau .= " <tr>\n";
  16. foreach ($tab as $val)
  17. {
  18. $tableau .= " <th ><a href=\"?page=nutrition-affiche-moyenne&trier=$val\">$val</a></th>\n";
  19. }
  20. //...
  21. // ainsi de suite

c'est un début :) 
et ca raccourcira vachement le prog
a c 145 L Programmation
26 Janvier 2007 12:27:49

Deux petits détails supplémentaires...
1) tu commences à construire ta variable $tableau avant de vérifier que tu as bien un résultat dans ta requète... ça ne me semble pas bien logique :) 
2) ta fonction reçoit $ordre comme argument... pourquoi on trouve un global $ordre?
Bon, ça ne va pas optimiser le code mais ce sont des petits détails qui peuvent jouer à terme.
Contenus similaires
26 Janvier 2007 19:22:00

Bonjour,

Merci beaucoup pour ta réponse.

la première modif est bien
# $tab = array ('nom','A','B1','B3','B5','B6','B7','B8','B9','B12','C','D','E','K','paba','bore','calcium','chlore','chrome','cobalt','cuivre','fer','fluor','iode','magnesium',
'manganese','molybdene','phosphore','potassium','selenium','silicium','sodium','soufre','zinc','protide','lipide','glucide','choline','omega3','Asp','Glu','Ala','Arg','Asn','CySH',
'Gln','Gly','His','Ile','Leu','Lys','Met','Phe','Pro','Ser','Thr','Tyr','Try','Val','fibre',
'eau','Kcalories','Kjoules');
# if (isset ($_GET['trier']) and in_array ($_GET['trier'], $tab))
# {
# $ordre = $_GET['trier'];
# echo affichage($ordre);
# }
# else
# {
# // La demande trier ne correspond pas on l'oubli et on affiche le tableau de base
# $ordre = 'nom';
# echo affichage($ordre);
# }
Ca marche.

La deuxième passe pas :
$tableau .= "<table border='1'>\n";
$tableau .= " <tr>\n";
foreach ($tab as $val)
{
$tableau .= " <th ><a href=\"?page=nutrition-affiche-moyenne&trier=$val\">$val</a></th>\n";

}
$tableau .= " </tr>\n";
il dit :
Warning: Invalid argument supplied for foreach() in /home/www/enfants/www/nutrition/affiche-moyenne2.php on line 53

Merci car déjà, la première boucle passe et ça allège énormément.

Pour la deux, je sais pas ou est l'erreur.

La troisième pourrait peut etre aussi allégée.

Et tes remarques sont bonnes mais ce n'est pas moi qui est fait ces programmes.

J'ai demandé de l'aide et j'ai adapté comme j'ai pu c pour ca que je ne sais pas trop modifier ce qu'il faut.
vla le nouveau code source ,
http://www.solidaritok.com/txt/affiche-moyenne2.txt

Au fait, comment on peut faire pour que si la valeur est nul, ça s'affiche en gris clair?
Je te remercie encore, amicalement, solidaritok.
26 Janvier 2007 21:55:44

solidaritok a dit :

mais ce n'est pas moi qui est fait ces programmes.


j'ai remarqué ;) 

il te faut les bases, fonction, visibilité des variables etc...

$tab est une variable déclarée au début du programme, le remplissage du tableau est effectué dans une fonction.
les fonctions n'ont pas accès au variables global (sauf indication contraire) et c'est pour ça qu'il te lève un warning.

pour ce qui est de la couleur, c'est la balise <font> en html



ah oui j'ai failli oublié:
- google est ton ami
- il faut utiliser la balise [code] pour afficher du code :) 
27 Janvier 2007 08:47:05

Ah oui d'accord, mais concrètement, comment on fait stp pour que l'accès à tab soit possible et ou je peux tester la variable pour <font>?
Merci.
a c 145 L Programmation
29 Janvier 2007 09:19:28

global $tab;
29 Janvier 2007 10:37:49

c'est un interpreteur et non un compilateur.
global est mal placé (en passant le fait de mettre l'affichage dans une fonction ne sert à rien dans ton cas)
et si tu veux pas lire la doc, demandes gentiment à ce qu'on te le fasse, y aura surement qq un qui aura l'âme charitable ;) 


EDIT: d'ailleurs ca donnait le bon resultat avant, laisse le donc comme c'était!
29 Janvier 2007 10:59:19

De temps en temps, je dois rajouter des champs, ca qui fait que ça complique tout.

Encore, la ce n'est que le programme d'affiche, car pour le calcul de la moyenne, c'est quatre fois plus lourd.

Elle est ou la doc pour dans mon cas stp?

29 Janvier 2007 11:22:23

serieux c'est limite mais juste pour en finir, je vais repondre, effectivement j'avais oublie de dire qu'il fallait changer la fonction par
  1. function affichage($ordre, $tab)

29 Janvier 2007 17:50:13

Salut, g une nouvelle question svp :

transformer
$ta[0]=$valeurs['nom'];
$ta[1]=$valeurs['A'];
$ta[2]=$valeurs['B1'];
$ta[3]=$valeurs['B2'];
$ta[4]=$valeurs['B3'];

en
$tab = array ('nom','A','B1','B3');
...
$ta=array();
foreach ($ta as $value) {
$value = $tab;
}

Ca n'inscrit qu'une seule ligne.
Help svp
29 Janvier 2007 18:27:56

solidaritok a dit :

J'ai même réussi grâce à vous à me débrouiller pour la troisième boucle :
foreach ($tab as $val)
{
$tableau .= "<th align=right>".$valeurs[$val]."</th>\n";
}

em meme temps, copier/coller, c'est a la portée de tout le monde
quoique, ta question me laisse pensif ;) 

29 Janvier 2007 18:32:38

comment je peux faire pour remplir les valeurs du tableau $ta avec celles du tableau $tab svp?

et que le jour où je doive modifier le tableau $tab, $ta soit modifié automatiquement.

transformer
$ta[0]=$valeurs['nom'];
$ta[1]=$valeurs['A'];
$ta[2]=$valeurs['B1'];
$ta[3]=$valeurs['B2'];
$ta[4]=$valeurs['B3'];

en
$tab = array ('nom','A','B1','B3');
...
//mais pour ce qui suit???
$ta=array();
foreach ($ta as $value) {
$value = $tab;
}
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS