Arborescence recursive dynamique

Description

Cette source sert a afficher et a indenter dynamiquement les données d'une base(la base utilisée et PostgreSQL mais tres facilement portable sur mysql car les fonctions sont les memes,seul le prefixe change)en utilisant le pere et le fils de chaque données.
Ce code n'est pas entierement de moi, c'est une modification du code posté par Titatou.
J'espere que vous serez indulgeant car je debute en php et c'est ma premiere source :).

Source / Exemple :


<?php

	/*
	--------------------------------------------------------------
	|			  INFORMATIONS DE CONNEXION A LA BASE			 |
	--------------------------------------------------------------

  • /
$hote = "127.0.0.1"; //il vous suffit de remplacer avec vos parametres de connexion. $port = "5430"; $base = "mandbweb"; $user = "user"; $pwd = "password"; // connexion a postgreSQL $conn_string = "host=$hote port=$port dbname=$base user=$user password=$pwd"; $conn = pg_connect($conn_string); /* ----------------------------------------------------- | AFFICHAGE INDENTÉ DES DONNEES | -----------------------------------------------------
  • /
$recherche='1'; //cette variable a ete mise 'en dur' juste pour tester le bon fonctionnement function espace($rang) { $ch= ''; for ($x=0;$x<$rang;$x++) { $ch.= '&nbsp;&nbsp;&nbsp;&nbsp;'; } $ch.= '<img src=pointilles.gif>&nbsp;'; return $ch; } /* FUNCTION recur($pere,$rang,$conn) fonction récursive d'affichage de l'arbre $pere :Element courant $rang :Décallage de l'element $conn :Index de la connexion a utiliser
  • /
function recur($pere,$rang,$conn) { if($conn) { // recherche des articles $sql="select ref_nom,ref_article_psf from psf where ref_nom='$pere'"; $resultat=pg_query($sql); $nblignes=pg_num_rows($resultat); if($nblignes > 0)// si il y a au moins 1 resultat { for($i=0 ;$i<$nblignes ;$i++)// tant qu'il y a des lignes on affiche les enfants { $ligne=pg_fetch_array($resultat,$i, PGSQL_ASSOC); $parent=$ligne["ref_nom"]; $enfant=$ligne["ref_article_psf"]; if ($parent==$pere)// si un élément a pour père : $pere { echo espace($rang),"<font color='blue'><b>".$enfant."</b></font><BR />"; // on l'affiche avec le décallage courrant et on recherche ses fils recur($enfant,$rang+1,$conn); // en rappelant la fonction recur() (+ incrémentation du décallage) } } } } else { echo"Erreur de connexion"; } } echo"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color='red'><b>$recherche</b></font><br>"; recur($recherche,1,$conn); ?>

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (balisong1)