Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 05/02/2010, 18h50   #1 (permalink)
Membre actif
 
Date d'inscription: mai 2008
Messages: 173
Par défaut Récupération récursive de catégorie

Bonjour à tous,
Voila j'aurai besoin d'un avis, j'ai une table forum_cat qui enregistre toute les catégorie, les sous catégorie et sous-sous catégorie.
Afin de récupéré le tout pour afficher la home du forum, vaut il mieux que je fasse:
Code :
CREATE PROCEDURE `ForumParentGet`(
    IN _parentID INT
)
BEGIN
    SELECT
        SQL_CACHE
        c1.id as categorieID,
        c1.title as categorieTitle,
        c1.description as categorieDesc,
        c1.nbtopic as categorieNbTopic,
        c1.nbreply as categorieNbReply,
        CONCAT(c2.id,';;', c2.title,';;', c2.description,';;', c2.nbtopic,';;', c2.nbreply) as categorieChild,
        CONCAT(c3.id,';;', c3.title,';;', c3.description,';;', c3.nbtopic,';;', c3.nbreply) as categorieUnderChild
        
    FROM forum_cat c1
        LEFT OUTER JOIN forum_cat c2 ON c2.parentID = c1.id
        LEFT OUTER JOIN forum_cat c3 ON c3.parentID = c2.id
    WHERE c1.parentID = _parentID;
END
ce qui retourne:
Code :
Array ( [categorieID] => 1 [categorieTitle] => Forum 1 [categorieDesc] => [categorieNbTopic] => 0 [categorieNbReply] => 0 [categorieChild] => 3;;Forum 1-1;;description;;0;;0 [categorieUnderChild] => 7;;Forum 1-1-1;;description;;0;;0 )
Array ( [categorieID] => 1 [categorieTitle] => Forum 1 [categorieDesc] => [categorieNbTopic] => 0 [categorieNbReply] => 0 [categorieChild] => 3;;Forum 1-1;;description;;0;;0 [categorieUnderChild] => 8;;Forum 1-1-2;;description;;0;;0 )
Array ( [categorieID] => 1 [categorieTitle] => Forum 1 [categorieDesc] => [categorieNbTopic] => 0 [categorieNbReply] => 0 [categorieChild] => 4;;Forum 1-2;;description;;0;;0 [categorieUnderChild] => 9;;Forum 1-2-1;;description;;0;;0 )
Array ( [categorieID] => 1 [categorieTitle] => Forum 1 [categorieDesc] => [categorieNbTopic] => 0 [categorieNbReply] => 0 [categorieChild] => 4;;Forum 1-2;;description;;0;;0 [categorieUnderChild] => 10;;Forum 1-2-2;;description;;0;;0 )
Array ( [categorieID] => 2 [categorieTitle] => Forum 2 [categorieDesc] => [categorieNbTopic] => 0 [categorieNbReply] => 0 [categorieChild] => 5;;Forum 2-1;;description;;0;;0 [categorieUnderChild] => 11;;Forum 2-1-1;;description;;0;;0 )
Array ( [categorieID] => 2 [categorieTitle] => Forum 2 [categorieDesc] => [categorieNbTopic] => 0 [categorieNbReply] => 0 [categorieChild] => 5;;Forum 2-1;;description;;0;;0 [categorieUnderChild] => 12;;forum 2-1-2;;description;;0;;0 )
Array ( [categorieID] => 2 [categorieTitle] => Forum 2 [categorieDesc] => [categorieNbTopic] => 0 [categorieNbReply] => 0 [categorieChild] => 6;;Forum 2-2;;description;;0;;0 [categorieUnderChild] => 13;;Forum 2-2-1;;description;;0;;0 )
Array ( [categorieID] => 2 [categorieTitle] => Forum 2 [categorieDesc] => [categorieNbTopic] => 0 [categorieNbReply] => 0 [categorieChild] => 6;;Forum 2-2;;description;;0;;0 [categorieUnderChild] => 14;;Forum 2-2-2;;description;;0;;0 )

ou:
Code :
CREATE PROCEDURE `ForumParentGet`(
)
BEGIN
    SELECT
        SQL_CACHE
        id,
        parentID,
        title,
        description,
        nbtopic,
        nbreply
        
    FROM forum_cat;
END
 
ce qui retourne:
Code :
Array ( [id] => 1 [parentID] => 0 [title] => Forum 1 [description] => [nbtopic] => 0 [nbreply] => 0 )
Array ( [id] => 2 [parentID] => 0 [title] => Forum 2 [description] => [nbtopic] => 0 [nbreply] => 0 )
Array ( [id] => 3 [parentID] => 1 [title] => Forum 1-1 [description] => [nbtopic] => 0 [nbreply] => 0 )
Array ( [id] => 4 [parentID] => 1 [title] => Forum 1-2 [description] => [nbtopic] => 0 [nbreply] => 0 )
Array ( [id] => 5 [parentID] => 2 [title] => Forum 2-1 [description] => [nbtopic] => 0 [nbreply] => 0 )
Array ( [id] => 6 [parentID] => 2 [title] => Forum 2-2 [description] => [nbtopic] => 0 [nbreply] => 0 )
Array ( [id] => 7 [parentID] => 3 [title] => Forum 1-1-1 [description] => [nbtopic] => 0 [nbreply] => 0 )
Array ( [id] => 8 [parentID] => 3 [title] => Forum 1-1-2 [description] => [nbtopic] => 0 [nbreply] => 0 )
Array ( [id] => 9 [parentID] => 4 [title] => Forum 1-2-1 [description] => [nbtopic] => 0 [nbreply] => 0 )
Array ( [id] => 10 [parentID] => 4 [title] => Forum 1-2-2 [description] => description [nbtopic] => 0 [nbreply] => 0 )
Array ( [id] => 11 [parentID] => 5 [title] => Forum 2-1-1 [description] => description [nbtopic] => 0 [nbreply] => 0 )
Array ( [id] => 12 [parentID] => 5 [title] => forum 2-1-2 [description] => description [nbtopic] => 0 [nbreply] => 0 )
Array ( [id] => 13 [parentID] => 6 [title] => Forum 2-2-1 [description] => description [nbtopic] => 0 [nbreply] => 0 )
Array ( [id] => 14 [parentID] => 6 [title] => Forum 2-2-2 [description] => description [nbtopic] => 0 [nbreply] => 0 )
sachant que dans les deux cas c'est php qui gèrera la construction de l'arborecence.

Merci beaucoup d'avance

Edit:
j'ai remarquer que a deuxième requete SQL s'éxecute pus rapidement mais le traitement php est plus long pour l'organisation.
à terme, c'est à dire, imaginons, avec plusieurs milliers de membres, mieux vaut il allégé le serveur mysql au détriement de php ou l'inversse ?

Merci encore

Dernière modification par xxkirastarothxx ; 05/02/2010 à 19h08.
xxkirastarothxx est déconnecté   Envoyer un message privé Réponse avec citation
NEWS PHPFAQ PHPCours PHPSources PHPLivres PHPScripts PHPOutils PHPComparatifsZend Framework

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 18h19.


Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.