IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Système récursif


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 3
    Par défaut Système récursif
    Bonjour

    J'essaye de créer une fonction me permettant de récupérer des données a partir d'une id père.

    Donc a partir d'une id,je dois trouver ses fils,les fils de ses fils,les fils des fils de ses fils etc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function affichage(){
    	$req=mysql_query("SELECT * FROM membres WHERE CLE_PERE='$_SESSION[id]' ORDER by type");
    	while ($res=mysql_fetch_array($req)){
    		echo $res['CLE_INT'].' | '.$res['CLE_PERE'].' | '.$res['type'].' | '.$res['nomprenom'].'<br>';
    		$reqid=mysql_query("SELECT * FROM membres WHERE CLE_PERE='$res[CLE_INT]' ORDER By type");
    		while ($resid=mysql_fetch_array($reqid)){
    				echo $resid['CLE_INT'].' | '.$resid['CLE_PERE'].' | '.$resid['type'].' | '.$resid['nomprenom'].'<br>';
     
    		}
    	}
    }
    Le code ci-dessus montre très vite ses limites et je n'arrive tout simplement pas à automatiser le tout(récursivité?),du moins sans faire planter mon wamp.

    J'ai besoin d'une petite explication sur ce qui m'échappe dans cette histoire.
    Merci.

  2. #2
    Membre chevronné Avatar de Neroptik
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2005
    Messages
    337
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2005
    Messages : 337
    Par défaut
    Il faut en effet utiliser la récursivité dans ton cas.

  3. #3
    Membre chevronné Avatar de Neroptik
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2005
    Messages
    337
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2005
    Messages : 337
    Par défaut
    Dans le concept cela donnerai quelque chose comme ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FONCTION ChercheFils(IDPere) {
     POUR CHAQUE Elément ayant comme père IDPere
       ChercheFils(IDElement);
    }

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 3
    Par défaut
    C'est pas le concept qui me pose problème mais son applications.

    Je n'arrive pas a réintroduire les nouvelles id(obtenu après la première requête) dans la fonction pour pouvoir rechercher leur pères/fils et ainsi de suite jusqu'au résultat final.

    Merci en tout cas.

  5. #5
    Membre très actif
    Avatar de ProgVal
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 636
    Par défaut
    Bonjour,

    J'ai réalisé une fonction pour faire ceci; elle servait à compter les messages dans une catégorie, ses catégories filles, ... Elle utilisait la récurisivité.

    Je ne peux pas te la donner dans l'immédiat, mais le principe est le suivant:
    • récupération de l'ID de la section (par l'argument)
    • recherche des nouveaux messages se trouvant dans cette catégorie
    • Recherche des catégories filles
    • Appel de la fonction pour chacune des catégories filles
    • Renvoi de la somme du premier résulat et des résultats renvoyés


    Cordialement,
    ProgVal

  6. #6
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Salut,

    un petit exemple tiré de php.net qui pourrait t'ouvrir les idées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    function recursion($a)
    {
        if ($a < 20) {
            echo "$a\n";
            recursion($a + 1);
        }
    }
    ?>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [tables systèmes] extraction de la structure d'une base
    Par laffreuxthomas dans le forum Autres SGBD
    Réponses: 6
    Dernier message: 23/03/2006, 14h24
  2. [système] Comment ajouter un item dans le context menu de Windows ?
    Par ddmicrolog dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 29/06/2005, 18h03
  3. [Système] Vider le Presse Papier
    Par babe dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/09/2002, 18h46
  4. IA avec le système de note
    Par scorpiwolf dans le forum C
    Réponses: 4
    Dernier message: 06/05/2002, 13h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo