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 :

récursivité


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Par défaut récursivité
    Bonjour a tous,

    j'ai un petit soucis de récursivité. J'ai une fonction qui crée en javascript des puces a partir d'une base de données.

    Pour chaque puce, je souhaiterais réapeller ma fonction pour qu'elle affiche chaque sous-categorie de chaque puce et ainsi de suite.

    Le probleme est que toutes mes puces se mettent a la suite sans indentation comme si elle dépendaient du meme ul. Pouvez--vous m'aider?

    voici mon code:
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
      <?php
     
     
    $categparent=$_GET["categparent"];	
    affichercateg($categparent);
     
     
    //Fonction d'affichage des catégories
    function affichercateg($categparent) {
     
    	//Debut de liste
    	echo $categparent;
    	if ($categparent==0) {
    		echo "<div id='$categparent' style='background-color:#c0cad4;'></div>";
    		?>
    		<script type="text/javascript" language="javascript" charset="utf-8">
    		// <![CDATA[
     		var new_ul_id<?php echo $categparent ?> =  '<?php echo $categparent ?>'; 
      		var ul = document.createElement("ul");
      		var ul_id = document.createAttribute("id");
      		ul_id.nodeValue = new_ul_id<?php echo $categparent ?>;
      		ul.setAttributeNode(ul_id);
     
     
     		</script>
     		<?php
     
     	} else {
     
     		echo "<div><div id='$categparent' style='background-color:#FFFFFF;'></div>";
    		?>
    		<script type="text/javascript" language="javascript" charset="utf-8">
    		// <![CDATA[
     		var new_ul_id<?php echo $categparent ?> =  '<?php echo $categparent ?>'; 
      		var ul = document.createElement("ul");
      		var ul_id = document.createAttribute("id");
      		ul_id.nodeValue = new_ul_id<?php echo $categparent ?>;
      		ul.setAttributeNode(ul_id);
     
     		</script>
     		<?php
     	}
     
     	//Requete affichant les catégories de la catégorie categparent
    	$quer = "SELECT id_rubrique, titre, id_parent FROM spip_rubriques WHERE id_parent=$categparent ORDER BY id_parent, id_rubrique,titre";
     
    	$resul = spip_query($quer);
     
    	//Lecture de la requete
    	while ($row = spip_fetch_array($resul)) {
     
    		$titre = typo($row['titre']);	//titre de la rubrique
    		$id_rub=substr($titre,0,strpos($titre,"."));	//id titre de la rubrique
    		$id_rubrique = $row['id_rubrique'];	//id de la rubrique
    		$long=strlen($id_rubrique);
    		$id_parent=$row['id_parent'];	//id de la rubrique parente en cours
     
     
    		//Puce affichant le titre de la rubrique
    		if ($id_parent==$categparent) {
     
    			?>
    			<script type="text/javascript" language="javascript" charset="utf-8"> 
      			var li<?php echo $id_rubrique ?> = document.createElement("li");
      			li<?php echo $id_rubrique ?>.setAttribute("id", "<?php echo $categparent ?>_<?php echo $id_rubrique ?>");
      			li<?php echo $id_rubrique ?>.appendChild(document.createTextNode("<?php echo $titre ?>"));
      			ul.appendChild(li<?php echo $id_rubrique ?>);
     
     
      			</script>
    			<?php
     
    		}	
    		affichercateg($id_rubrique);
    	}
    	?>
    	<script type="text/javascript" language="javascript" charset="utf-8">
    	$('<?php echo $categparent ?>').appendChild(ul);
    	Sortable.create(new_ul_id<?php echo $categparent ?>, { onUpdate: function() {xhr=Sortable.serialize('<?php echo $categparent ?>');convertir(xhr); } });
    	</script>
     
     
    <?php
    }
    ?>
    Merci d'avance

  2. #2
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Par défaut
    je t'ai mis l'ensemble du code hier ....

    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
    25
    26
    27
    28
    29
    30
    31
    32
     
    <?php
    //Fonction d'affichage des catégories
    function affichercateg($categparent) {
     
        //Requete affichant les catégories de la catégorie categparent
       $quer = "SELECT id_rubrique, titre, id_parent FROM spip_rubriques WHERE id_parent=$categparent ORDER BY id_parent, id_rubrique,titre";
     
       $resul = spip_query($quer);
     
       echo "<ul>";
       //Lecture de la requete
       while ($row = spip_fetch_array($resul)) {
     
          $titre = typo($row['titre']);   //titre de la rubrique
          $id_rub=substr($titre,0,strpos($titre,"."));   //id titre de la rubrique
          $id_rubrique = $row['id_rubrique'];   //id de la rubrique
     
     
     
          echo "<li>";
          echo "<a href='rubrique.php3?id_rubrique=".$id_rubrique."'>";
          echo $titre;
          echo "</a>";
     
          affichercateg($id_rubrique);
          echo "</li>";
     
       }
       echo "</ul>";
    }
    ?>
    tu ouvres donc ton ul en tout début de fonction, et tu le referme tout à la fin.....
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Par défaut
    si je reposte, c'est que ça ne marche pas correctement, et que je ne peux placer mon ul comme tu le mets car je le crée en javascript...

  4. #4
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Par défaut
    de plus, déclarer deux fois le même javascript n'est pas très utile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type="text/javascript" language="javascript" charset="utf-8">
          // <![CDATA[
           var new_ul_id<?php echo $categparent ?> =  '<?php echo $categparent ?>';
            var ul = document.createElement("ul");
            var ul_id = document.createAttribute("id");
            ul_id.nodeValue = new_ul_id<?php echo $categparent ?>;
            ul.setAttributeNode(ul_id);
     
     
           </script>
    sors le de ton if, ca simplifiera déjà ton code
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Par défaut
    je crée bien mon ul au début:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    		<script type="text/javascript" language="javascript" charset="utf-8">
    		// <![CDATA[
     		var new_ul_id<?php echo $categparent ?> =  '<?php echo $categparent ?>'; 
      		var ul = document.createElement("ul");
      		var ul_id = document.createAttribute("id");
      		ul_id.nodeValue = new_ul_id<?php echo $categparent ?>;
      		ul.setAttributeNode(ul_id);
     
      		var new_ul_class =  'visible'; 
      		var ul_class = document.createAttribute("class");
      		ul_class.nodeValue = new_ul_class;
       	ul.setAttributeNode(ul_class);
       	</script>
    et je le ferme bien a la fin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<script type="text/javascript" language="javascript" charset="utf-8">
    	$('<?php echo $categparent ?>').appendChild(ul);
    	Sortable.create(new_ul_id<?php echo $categparent ?>, { onUpdate: function() {xhr=Sortable.serialize('<?php echo $categparent ?>');convertir(xhr); } });
    	</script>

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Par défaut
    au niveau de ma source, ça me met un <ul><li> ... </li></ul> pour chaque éléments...
    alors que sans récursivité ça marche correctement

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Par défaut
    personne?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Par défaut
    quelqu'un peut m'aider?

Discussions similaires

  1. Cours : algorithmes et récursivité
    Par Community Management dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 17/10/2018, 01h38
  2. [Système] Récursivité et itération
    Par Floréal dans le forum Langage
    Réponses: 8
    Dernier message: 19/04/2005, 15h57
  3. Parcours d'arbre sans récursivité
    Par Morvan Mikael dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 12/04/2005, 14h57
  4. [PS] Récursivité !
    Par maitrebn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/10/2004, 13h18
  5. récursivité
    Par krimson dans le forum PostgreSQL
    Réponses: 12
    Dernier message: 06/05/2004, 16h54

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