Optimisation de ma classe 'Arbre de categories' [php] - PHP - Programmation
Marsh Posté le 04-06-2008 à 22:21:29
a faire : verifier que la cat soit bien dans la bdd
utilisation :
Code :
|
en pensant a verifier que $_GET['cat'] est set
Marsh Posté le 04-06-2008 à 23:46:57
tomsoft a écrit :
Apres avoir appris l'objet cette année, j'ai decidé de reprendre mon site en objet J'utilise un singleton de connexion mysql, ma table categorie : http://img521.imageshack.us/img521/8779/dbbo1.png Le resultat à l'affichage : http://img67.imageshack.us/img67/6875/screendm9.png Je vous demande donc conseil pour essayer d'ameliorer ca, par ex, dans ma methode parents() je prefererais pas refaire une requete Mon code :... ya des optis a faire ? |
Je pense pas que ce soit tellement optimisable ...
En tout cas, c'est propre, c'est rare de voir du beau PHP comme ça, avec séparation des données et de leur traitement ...
Juste pour info, si tu veux faire du pur objet, ruby on Rails te permet de réécrire tout ce code en :
Code :
|
Tu as alors les méthodes (entre autres) :
Code :
|
et si tu fais l'équivalent d'un 'echo $c' en PHP
tu as directement tout qui s'affiche ...
Bref, tout le code est allégé ...
Marsh Posté le 04-06-2008 à 23:57:28
hum simpa ce ruby on rails
merci, mais une idée pour ma fonction parents qui integroge n fois ma bdd ?
Marsh Posté le 05-06-2008 à 00:37:53
Les associations réflexives sont très consommatrices en requêtes, la vraie bonne solution pour éviter d'avoir trop de requêtes c'est les procédures stockées mais bon niveau compatibilité c'est pas top. Sinon il y a des variantes suivant ce qu'on est prêt à sacrifier ou que l'on tient absolument à respecter. La conception ultime n'existe pas, il a toujours des avantages et des inconvénients.
Essaie juste d'éviter d'avoir la ("fonction parents qui integroge n fois ma bdd" x i x j) ^ ("fonction parents qui integroge n fois ma bdd" x k x l).
Marsh Posté le 05-06-2008 à 00:42:53
tomsoft a écrit : hum simpa ce ruby on rails |
A la limite, la représentation intervallaire :
http://www.siteduzero.com/tuto-3-2 [...] laire.html
http://sqlpro.developpez.com/cours/arborescence/#L2
tu as ton noeud courant $n
Tu veux ses ancetres :
SELECT * FROM categorie WHERE borne_gauche < {$n->borne_gauche} and borne_droite > {$n->borne_droite} ORDER BY borne_gauche
pour les enfants directs :
SELECT * FROM categorie WHERE borne_gauche > {$n->borne_gauche} and borne_droite < {$n->borne_droite} and niveau={$n->niveau}+1 ORDER BY borne_gauche
pour les descendants :
SELECT * FROM categorie WHERE borne_gauche > {$n->borne_gauche} and borne_droite < {$n->borne_droite} ORDER BY borne_gauche
C'est assez puissant ...
Et pour l'affichage
SELECT * FROM caregorie ORDER BY borne_gauche
Et tu as toutes tes catégories dans l'ordre :
Code : |
Marsh Posté le 08-06-2008 à 22:23:53
Je vais laisser comme cela pour le moment c'est assez rapide pour ce que j'ai a faire
sino je l'ai enrichit d'une nouvelle methode (2 exactment) pour selectionner une cat dans un select option :
Code :
|
une methode d'init qui appele une methode recursive
au fait, ya un moyen d'inserer une tab en html ? pour eviter le " "
Marsh Posté le 09-06-2008 à 11:19:53
Utilise plutôt les styles css, tu gagneras en souplesse pour modifier l'apparence
Marsh Posté le 09-06-2008 à 13:43:15
Code :
|
ça marche sous FF au moins
(IE 7 n'en a cure par contre)
Marsh Posté le 04-06-2008 à 22:18:38
Apres avoir appris l'objet cette année, j'ai decidé de reprendre mon site en objet
J'utilise un singleton de connexion mysql, ma table categorie :
Le resultat à l'affichage :
Je vous demande donc conseil pour essayer d'ameliorer ca, par ex, dans ma methode parents() je prefererais pas refaire une requete
Mon code :
ya des optis a faire ?
Message édité par tomsoft le 09-06-2008 à 13:17:29