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 php


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 22
    Points : 12
    Points
    12
    Par défaut fonction récursive php
    bonjour

    je galère depuis quelques heures déjà sur mon petit problème. Les fonction récursives, je ne domine pas.

    voila, je doit simplement lister des catégories.
    exemple :
    j'ai les catégories suivantes

    Cat principale 1
    -- Ss catégorie 1
    -- Ss catégorie 2
    -- Ss catégorie 3
    -- -- Ss Ss catégorie 1

    Cat principale 2
    -- Ss catégorie 1
    -- Ss catégorie 2
    -- -- Ss Ss catégorie 1
    -- Ss catégorie 3
    je suis dans la sous sous catégorie 1 de la cat princiale 2 (en souligné ici) et je veux afficher :
    Cat principale 2 > Ss catégorie 2 > Ss Ss catégorie 1.


    j'ai donc créé cette fonction pour y parvenir

    Code : 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
    function arrayNavigueBoutique($parent,$niveau,$array) {
     
    	//==> boucle d'affichage des cat
    	foreach ($array AS $noeud) 
    	{
     
    		if ($parent == $noeud['cat_id']) 
    		{ 
    		$parent = $noeud['cat_id_parent'];
    		$array2['cat_id'][] = $noeud['cat_id'];
    		$array2['cat_nom'][] = $noeud['cat_nom'];
    		$array2['cat_id_parent'][] = $noeud['cat_id_parent'];
     
    		// récusrsivité pour sous catégories
    		arrayNavigueBoutique($parent,($niveau + 1),$array);
    		}
    	}
     
    return $array2;
    }


    $parent = l'id de la catégorie active
    $niveau, = je ne m'en sert pas pour le moment, mais il représente le niveau de catégorie ici c'est le départ donc 0
    $array = un tableau associatif de toutes mes catégories

    Mais je ne parvient pas à obtenir le résultat escompté
    Donc voila, si quelqu'un pouvait m'aider solutionner ce problème

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    petite précision

    mon tableau des catégories ressemble à ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cat_id (index de l'entré)
    cat_nom (nom de la catégorie)
    cat_publication (publication)
    cat_id_parent (catégorie parent)
    cat_description (description de la catégorie)
    si il s'agit d'une catégorie principale, la cat_id_parent est égale à 0

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 101
    Points : 144
    Points
    144
    Par défaut
    Salut,

    Essai un code comme celui ci :


    Code : 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
     
    function trier_categories($parent, $niveau, $categories) {
     
    	$categories_triees = array();
     
    	foreach($categories as $categorie) {
     
    		if($parent == $categorie['cat_id_parent']) { 
     
    			$categorie['childs'] = trier_categories($categorie['cat_id'], $niveau + 1, $categories);
     
    			array_push($categories_triees, $categorie);
     
    		}
     
    	}
     
    	return $categories_triees;
     
    }
     
    $categories_triees = trier_categories(0, 0, $categories);
    Le clé "childs" d'une categorie contiendra ses filles

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Merci pour ce code,

    finalement je ne vais pas transférer ma variable avec return, j'affiche le résultat directement dans la fonction, même si j'aurais préféré l'autre solution.
    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
    28
    29
    30
    31
    32
     
    function arrayNavigueBoutique($parent,$niveau,$array,$array2) {
     
    	//==> boucle d'affichage des cat
    	foreach ($array AS $noeud) 
    	{
     
    		if ($parent == $noeud['cat_id'] AND $parent != 0 AND $niveau == 0) 
    		{ 
    		$parent = $noeud['cat_id_parent'];
    		$array2['cat_id'][] = $noeud['cat_id'];
    		$array2['cat_nom'][] = $noeud['cat_nom'];
    		$array2['cat_id_parent'][] = $noeud['cat_id_parent'];
     
    			if ($noeud['cat_id_parent'] != 0 ) {
     
    				// récusrsivité pour sous catégories
    				arrayNavigueBoutique($parent,($niveau++),$array,$array2);
     
    			}
    		}
    	}
     
    	if ($niveau == 0) {
    		$nb_produit = count($array2['cat_id']);
    		echo '<br>';
    		for($i = $nb_produit; $i > 0 ; $i--)
    		{	
    		echo $array2['cat_nom'][$i].' || ';
    		}
    	}
    }

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

Discussions similaires

  1. [MySQL] migration de Fonction récursive PHP/MYSQL vers PHP5 CodeIgniter /mysql
    Par Hasret dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 13/03/2013, 19h32
  2. Fonction récursive identique php
    Par drick35 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/10/2012, 10h54
  3. [PHP 5.3] fonction récursive php
    Par ghaoui dans le forum Langage
    Réponses: 1
    Dernier message: 29/05/2012, 14h10
  4. [PHP 5.3] Fonction récursive et connexion
    Par remi5 dans le forum Langage
    Réponses: 5
    Dernier message: 08/06/2010, 11h01
  5. [FLASH MX] Problème flash et fonction mail() php
    Par proutcore dans le forum Flash
    Réponses: 7
    Dernier message: 21/05/2007, 12h21

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