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
|
// définition d'une classe représentant tes données
class Machin{
public $id , $label , $childs = array();
function __construct( $id , $label ){
$this->id = $id;
$this->label = $label;
}
function addChild( Machin $machin ){
$this->childs[] = $machin;
}
function affiche( $tab = ''){
$out = $tab . $this->id . ' -- ' . $this->label . "\n";
foreach( $this->childs as $child ){
$out .= $child->affiche( $tab . "\t" ) . "\n";
}
return $out;
}
}
// définition d'un array temporaire contenant les objets "à plat"
$mesTrucs = array();
// définition de la racine de ta structure de données
$racine = new Machin( '0' , 'Racine du bidule' );
// ajout de cette racine au tableau "plat"
$mesTrucs[0] = $racine;
$q = mysql_query( "SELECT id , id_parent , label FROM matable ORDER BY id_parent ASC, id ASC" );
while( $data = mysql_fetch_object( $q ) ){
//création d'un objet Machin à partir des données de la DB
$obj = new Machin( $data->id , $data->label );
// ajout à la liste plate de l'objet avec comme clé son id
$mesTrucs[ $data->id ] = $obj;
// ajout de l'objet à son parent
$mesTrucs[ $data->id_parent ]->addChild( $obj );
}
// affichage de la structure des machins
echo $racine->affiche(); |
Partager