Tom's Guide > Forum > Programmation > optimisation d'un programme php

optimisation d'un programme php

Forum Programmation : optimisation d'un programme php

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour,

Je cherche à optimiser un programme :

Vla le résultat

http://www.solidaritok.com/index.p [...] he-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.

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

bonjour,
tu peux mettre tous les noms de colonnes dans un tableau en premier et ensuite faire des boucles, ca sera plus lisibles :)

Code :
  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&amp;trier=$val\">$val</a></th>\n";
  19. }
  20. //...
  21. // ainsi de suite


c'est un début :)
et ca raccourcira vachement le prog

Répondre à coca25

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.

Répondre à crazycat@idn

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&amp;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.

Message cité 1 fois
Message édité par solidaritok le 26-01-2007 à 19:28:27
Répondre à solidaritok

solidaritok a écrit :


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 :)


Message édité par coca25 le 26-01-2007 à 21:56:09
Répondre à coca25

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.

Répondre à solidaritok

Le compilateur trouve une erreur

Warning: Invalid argument supplied for foreach() in /home/www/enfants/www/nutrition/affiche-moyenne2.php on line 49
correspondant à :
foreach ($tab as $val)

http://www.solidaritok.com/txt/affiche-moyenne2.txt

Répondre à solidaritok

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!


Message édité par coca25 le 29-01-2007 à 10:39:01
Répondre à coca25

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?

Répondre à solidaritok

ca te donnera un point de départ http://php.benscom.com/manual/fr/l [...] .scope.php

EDIT: enleve les 2 global, et mets:

Code :
  1. echo affichage ($ordre, $tab);


Message édité par coca25 le 29-01-2007 à 11:09:38
Répondre à coca25

Warning: Invalid argument supplied for foreach() in /home/www/enfants/www/nutrition/affiche-moyenne2.php on line 48

foreach ($tab as $val)

http://www.solidaritok.com/txt/affiche-moyenne2.txt

Répondre à solidaritok

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

Code :
  1. function affichage($ordre, $tab)



Message édité par coca25 le 29-01-2007 à 11:24:42
Répondre à coca25

Ca marche, merci beaucoup.

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";
}


http://www.solidaritok.com/nutriti [...] e2&trier=A

Au revoir.

Message cité 1 fois
Message édité par solidaritok le 29-01-2007 à 14:35:06
Répondre à solidaritok

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

Répondre à solidaritok

solidaritok a écrit :


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 ;)

Répondre à coca25

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;
}


Message édité par solidaritok le 29-01-2007 à 18:35:57
Répondre à solidaritok
Tom's Guide > Forum > Programmation > optimisation d'un programme php
Aller à :

Il y a 779 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens