J'utilise un bout de script qui fonctionne bien, mais qui me semble beaucoup trop lourd par rapport au résultat qu'il donne. Vu que je ne suis pas un pro du maniement de tableaux, si quelqu'un veut bien me filer un coup de pouce pour optimiser ca ce sera avec plaisir
Alors, je commence par récupérer une liste de produits (catégorie mère + nom) et à la stocker dans un tableau, qui sera utilisé plus loin. Le tableau est réalisé ainsi :
Code :
- $requete = mysql_query("SELECT cat_produit, nom_produit FROM produits", $db);
- $nbproduits = mysql_num_rows($requete);
- if($nb_nbproduits ) {
- do {
- $liste_produits[] = array($myrow[0] => $myrow[1]);
- } while($myrow = mysql_fetch_row($requete));
- }
|
Un peu plus loin donc, je décompose ce tableau. Ca se fait à l'intérieur d'une boucle qui liste plusieurs infos en provenance d'une autre table. Parmi ces infos on retouve la catégorie mère ($donnees[$i][0]), et lorsqu'elle coincide avec la catégorie des produits récupérés plus haut je fais un simple echo du nom du produit :
Code :
- while(list($null, $produit) = each($liste_produits)) {
- while(list($cat_produit, $nom_produit) = each($produit)) {
- if($cat_produit == $donnees[$i][0]) {
- echo $nom_produit;
- }
- }
- }
|
Ce bout de script n'est pas catastrophique prit de manière isolée, mais quand il s'exécute à l'identique autant de fois qu'il y a de lignes $i dans ma deuxième boucle, c'est pas génial. Je suis un adepte de la bidouille, mais quand elle ne se fait pas au détriment des performances. Une idée pour améliorer ca ?
PS : je précise que j'ai déjà testé une fonction qui me permet de me passer de la première partie du script, en sélectionnant dans la seconde uniquement les enregistrements qui m'intéressent (SELECT nom_produit FROM produits WHERE cat_produit = $donnees[$i][0]). Il n'y a pas redondance d'infos et ca économise une boucle*$i, par contre c'est plus couteux niveau MySQL et ca se voit en temps processeur (chiffres à l'appui). Je préfère donc faire une seule requête MySQL en laissant PHP se démerder pour traiter ca derrière, plutôt que d'avoir plusieurs petites requetes (d'autant plus que MySQL est installé sur un serveur distant au perfs aléatoires).
Message édité par Core 666 le 15-12-2002 à 23:46:41