Se connecter avec
S'enregistrer | Connectez-vous

optimisation d'un programme php

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte

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
Expert Programmation

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.

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.

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

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!

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

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

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;
}
Lassé par la pub ? Créez un compte
Tom's guide dans le monde