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] system de parent calcul de level [Fait]


Sujet :

Langage PHP

  1. #1
    Fabouney
    Invité(e)
    Par défaut [Système] system de parent calcul de level
    Bonjour à tous et à toute,

    j'ai un petit problème de conception, au sujet de mon system de translation de mon site.
    tout ce passe dans une table ("trs_pages").
    chaque pages peut avoir un parent dans trs_pages.
    donc en gros il y a un champ page_id et page_parent.

    je voudrais à partir de ca générer le level pour chaque noeud actuellement j'ai une fonction récusive qui fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function MapDisplay($parent_id,$level=-1)
    {
        if(strlen($parent_id))
        {
            //affichage des infos de la page
        }
     
        $sql=dbreader_query("SELECT page_id FROM trs_pages WHEREparent_id='$parent_id' ORDER BY page_id");
        while($page_info=mysql_fetch_array($sql))
          MapDisplay($page_info['page_id'],$level+1);
      }
    et en fait j'aimerais récupérer quelque chose comme :

    level 1
    level 1.1
    level 1.2
    level 2.1
    level 2.2
    level 2.2.1

    Je vous remercie de votre aide.

    Cordialement.

  2. #2
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    salut,
    pour ceux de premier niveau quel ai leur parent_id ? 0 ou eux même ?
    pour l'exemple je vais prendre le premier cas, le but est de suivre l'algo suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function mafunction($idpere)
    {
    	$query = "select * from table where idpere = 0";
    	//execution_requete
    	while ('tant que donnee')
    	{
    		$tab[$monid]['fils'] = mafunction($monid);
    		$tab[$monid]['info'] = $mesinfos;
    	}	
    	return $tab_mesinfos;
     
    }
     
    mafunction (0);
    Tout énigme a une solution ! Tout est question de discipline !

  3. #3
    Fabouney
    Invité(e)
    Par défaut
    Premiere niveau egal 1.
    le soucis c'est que je sais pas comment incrémenté la variable level pour l'avoir sous la forme 1.1 1.2 1.3 etc etc, car idpere contrairement est pas un INT mais une STRING.
    je comrpend ce que tu a fait mais la c'est pour récupérer les enfants des parents, ca me pose pas de problème, mon problème et comment gérer les level.


    [EDIT]
    en fait le probleme que je rencontre vraiment c'est quand le level faire quelque chose comme ca

    level 2
    level 2.1
    level 2.2
    levle 2

    quand le level s'incrémente, mais qu'ensuite on retrouve une page où sont parent est à un niveau en dessous.
    je ne sais pas comment garder le level 2 est le réutilisé ensuite si jamais une autre page est à ce niveau.

  4. #4
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    ok alors dans ce cas la essaye quelque chose dans ce style
    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
    23
    24
    function mafunction($idpere,$niveau)
    {
    	$query = "select * from table where idpere = $idpere";
    	//execution_requete
    	$i = 1;
    	while ('tant que donnee')
    	{
    		if($niveau = "")
    		{
    			$tab[$monid]['niveau'] = $i;	
    		}
    		else
    		{
    			$tab[$monid]['niveau'] = $niveau . '.' . $i;
    		}
    		$tab[$monid]['info'] = $mesinfos;
    		mafunction ($monid,$tab[$monid]['niveau']);
    		$i++;
    	}
    	return $tab;
     
    }
     
    mafunction (1,"");
    Tout énigme a une solution ! Tout est question de discipline !

  5. #5
    Fabouney
    Invité(e)
    Par défaut
    J'ai édité mon post précédent si ca peut t'éclaircir sur mon PB ...
    Comment gérer s'il y a plusieur niveau et tout .. :s

  6. #6
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Si je comprends bien ton problème est que tu recuperes toutes tes données d'un bloc et qu'elles ne sont pas triées. Normalement si tu recuperes tes données au fur et a mesure comme je te l'ai données ca devrait resoudre ton problème.
    Tout énigme a une solution ! Tout est question de discipline !

  7. #7
    Fabouney
    Invité(e)
    Par défaut
    non ca ne marche plus s'il y a 2 niveau :

    2.1.1

    par exemple.

  8. #8
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    et en remplacant l'affectation par un echo
    le resultat donne quoi?
    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 mafunction($idpere,$niveau)
    {
    	$query = "select * from table where idpere = $idpere";
    	//execution_requete
    	$i = 1;
    	while ('tant que donnee')
    	{
    		if($niveau = "")
    		{
    			echo "niveau $i";	
    		}
    		else
    		{
    			echo "niveau $niveau.$i";
    		}
    		mafunction ($monid,$tab[$monid]['niveau']);
    		$i++;
    	}
    }
    mafunction (1,"");
    Tout énigme a une solution ! Tout est question de discipline !

  9. #9
    Fabouney
    Invité(e)
    Par défaut
    je te tiens au courant plus tard, merci pour tous pour ton aide à de suite.

    P.S : je suis tout de même très préssimiste sur ta solutions, car le multi-niveau ne peux pas être gérer comme ca (à mon avis)

  10. #10
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Si c'est juste pour de l'affichage, cela devrait suffire, après pour autre chose, ce n'est surement pas la façon la plus optimisée.

    après personnellement pour gérer des arborescences, je prefere utilisé des arborescence intervallaire plutot que type pere-fils. C'est un peu plus long a mettre en place au niveau des MAJ. Mais niveau lecture est interrogation je trouve cette méthode beaucoup plus efficace.
    Tout énigme a une solution ! Tout est question de discipline !

  11. #11
    Fabouney
    Invité(e)
    Par défaut
    Je suis en train de reagarder ce tuto :

    N-level nested in PHP

    Tu peux me dire ce que tu en penses

    Cordialement.

  12. #12
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Bah c'est a peu près ce que j'ai implementé pour mon arborescence. En moins détaillé mais dans l'esprit c'est ca.
    En plus le tuto m'a semble très bien détaillé et très bien fait.
    Mais aussi tout dépend de l'utilisation que tu veux en faire. si c'est pour faire quelque chose de simple, je pense que ca risque d'etre un peu lourd a mettre en place pour rien.
    Tout énigme a une solution ! Tout est question de discipline !

Discussions similaires

  1. [Système] Exécution Formule de calcul dans une chaîne
    Par san--antonio dans le forum Langage
    Réponses: 2
    Dernier message: 16/06/2006, 08h11
  2. [Système] Systeme d'apprentissage a partir de C++
    Par black.out dans le forum Langage
    Réponses: 4
    Dernier message: 14/03/2006, 16h33
  3. [Système] Systeme antileech et téléchargement
    Par Invité dans le forum Langage
    Réponses: 15
    Dernier message: 08/02/2006, 14h49
  4. [Système] Systeme de navigation
    Par Ralfman68 dans le forum Langage
    Réponses: 3
    Dernier message: 28/01/2006, 16h15
  5. [Système] systeme d'annonces....
    Par maverick7680 dans le forum Langage
    Réponses: 6
    Dernier message: 18/01/2006, 11h38

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