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 :

Fonction récursive qui ne renvoie pas le résultat


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut Fonction récursive qui ne renvoie pas le résultat
    Salut,
    J'y perds un peu mon latin...

    Dans une table où sont classées des rubriques de manière hiérarchique, j'ai besoin de retrouver la rubrique la plus haute.
    La table est composée de 3 champs : id_rubrique (int), parent (int) et nom (varchar).

    Pour cela, j'utilise la fonction suivante:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <?php
    function rubrique_parente($id_rubrique){
     
    	$q = mysql_query("SELECT * FROM rubrique WHERE id_rubrique=".$id_rubrique);
     
    	if($q == true){
    		$r = mysql_fetch_object($q);
    		$nom = $r->nom;
    		$parent_rub = $r->parent;
     
    		if(intval($parent_rub) > 0){
    			rubrique_parente($parent_rub);
    		}
    		elseif(intval($parent_rub) === 0){
    			$top_parent = $nom;
    		}
    		else{
    			$top_parent = 'orpheline';
    		}
    	}
    	else{
    		$top_parent = 'abandonnée';
    	}
            echo $top_parent.'<br />';    // pour débugger
    	return ($top_parent);
    }
    ?>

    Je prends l'exemple suivant : la rubrique n°5 intitulée PHP est l'enfant directe de la rubrique n°1 intitulée Webmasters.

    J'utilise donc la fonction pour retrouver le parent de plus haut niveau :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo 'La rubrique est '.rubrique_parente(5); ?>
    Et là, alors que je ne devrais sortir qu'avec un seul résultat, j'obtiens
    webmasters

    webmasters
    La rubrique est
    Je n'aurais pas dû avoir plusieurs passages et je devrais aussi avoir un résultat !

    Quelqu'un peut-il m'aider sur ce point SVP?

    Merci !
    GAMIN !!!!
    _______________________________________________
    PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX

  2. #2
    Membre averti Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Points : 332
    Points
    332
    Par défaut
    Etrange effectivement, c'est quoi les données exactement dans ta tables (du moins celles de l'exemple présent?)
    Linio

  3. #3
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Oui, c'est bizarre !...

    Les données sont les suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      id_rubrique  +  parent  +   nom
    --------------------------------------
           1       |    0     |   webmasters
           2       |    0     |   news
           3       |    0     |   forum
           4       |    0     |   codes
           5       |    1     |   PHP
    Voilà, c'est pas plus compliqué ...

    ça me rend dingue ce truc !

    Je suis sûr que c'est une erreur débile en plus !

    Merci
    GAMIN !!!!
    _______________________________________________
    PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Petite piste lorsque tu lances ton appel récursif tu n'en stockes pas le résultat, donc il est normal de voir les deux retours chariot.

    En revanche pourquoi il s'affiche deux fois, je bloque.
    Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ?

    Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée"

  5. #5
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    @ratapapa : Merci !
    La solution résidait en effet dans le stockage du résultat !

    Maintenant, je n'ai plus de résultat vide mais bien le bon résultat !

    J'ai fait le test sur une rubrique enfant de la rubrique PHP (utilisée dans l'exemple) et cela me renvoie bien le bon résultat.

    Merci à tous les deux pour votre aide, je savais que c'était une bêtise !

    Bonne journée
    GAMIN !!!!
    _______________________________________________
    PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX

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

Discussions similaires

  1. Requete qui ne renvoie pas de résultat
    Par bruno782 dans le forum Requêtes
    Réponses: 6
    Dernier message: 01/08/2019, 13h39
  2. Fonction Aggr qui ne renvoie pas les résultats attendus
    Par christelle_s dans le forum QlikView
    Réponses: 1
    Dernier message: 21/11/2013, 14h07
  3. requete SQL incomplète qui ne renvoie pas le résultat attendu
    Par ballantine's dans le forum Langage SQL
    Réponses: 14
    Dernier message: 07/10/2010, 07h23
  4. Fonction récursive qui ne fonctionne pas
    Par Sadar007 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/09/2009, 16h24
  5. fonction avec if sur input radio qui ne renvoie pas la bonne valeur
    Par eddflo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/06/2009, 01h20

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