Bonsoir a tous,
je vous solicite car là je suis bloqué devant ma page blanche et je n'ai pas d'idée d'approche.
Imaginon une table de BD où sont stocké des avions.
nous avons:
Par exemple le MH6 est le parent du B206, de l'EC135 et du UH-B.
Les soucis que j'ai sont les suivants:
Comment approcheriez vous la chose.
Merci d'avance pour vos conseil.
Flo
Pour la base de donnée je te conseille la représentation intervallaire.
Sinon il faut utiliser une fonction récursive. Tu pourrais joindre un dump de ta base de donnée, ton problème est typique de la récursion et je pense que faire un tuto sur ton problème en particulier peut être intéréssant
Essaye d'être plus précis. Tu veux organiser tes éléments comme sur l'image et tu ne vois pas comment tout positionner sur ta page c'est ça ?
mes infos serai statique, pas de soucis avec des div en absolute et relative je me démerderai, mais elles vont bougers, donc je souhaiterai faire un php qui sache dessiner la chose de lui même, donc dans un premier la grille, pas les trait
Il te faut déjà récupérer le nombre max d'enfants de ton tableau, et en fonction de ça tu peux générer autant de colonnes qu'il y a d'enfants. Une fois ceci fait, tu identifies le nombre de parent d'un élément pour en déduire dans quelle colonne celui-ci doit se placer puis tu gères ton affichage via ton CSS comme tu l'entends :)
Par exemple sur ton image tu as 5 enfants, donc ta page contiendra 5 colonnes. Puis tu ranges chaque avion/hélico dans la colonne correspondante (ex. B-206, EC-135 & UH-IB iront dans la seconde colonne, EH-101 ira dans la 3eme ou 4eme colonne (à toi de voir) etc
Tu me suis ? Perso j'aurais fait comme ça :)
Sinon l'autre solution est de passer par une matrice mais pour ça il faut faire des maths et là je sèche :D !
Tu peux essayer des Div imbriquées : chaque div enfant a un décalage à droite par rapport à son parent.
j'ai refait un exporateur de fichiers sur ce principe, avec possibilié de déplier ou replier l'arborescence.
Tu pourrais joindre un dump de ta base de donnée
dés que je rentre je dump la BD sur la partie concerné, je l'envoie par mail ou je laisse un lien?
en tous cas merci à vous
Bonjour.
je l'envoie par mail ou je laisse un lien?
Non, pas par email puisque c'est pour le présenter dans ton sujet.
Grafikart ne te le demandait pas personnellement. :)
CREATE TABLE IF NOT EXISTS `tks_aircraft_2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(12) CHARACTER SET utf8 NOT NULL DEFAULT '',
`fullname` varchar(50) CHARACTER SET utf8 NOT NULL DEFAULT '',
`registration` varchar(30) CHARACTER SET utf8 NOT NULL,
`image_type_1` text CHARACTER SET utf8 NOT NULL,
`dependent` int(3) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=122 ;
--
-- Contenu de la table `tks_aircraft_2`
--
INSERT INTO `tks_aircraft_2` (`id`, `name`, `fullname`, `registration`, `image_type_1`, `dependent`) VALUES
(66, 'EC135', 'Eurocopter E-135', 'EC-135-1', './site/membres/images/avions_mil/ec135.jpg', 78),
(68, 'EH-101', 'AgustaWestland EH101 Merlin', 'EH-101-1', './site/membre/images/avion_mil/eh101.jpg', 91),
(77, 'MH-53J', 'MH-52J PAVE LOW III', 'MH-53-1', './site/membres/images/avion_mil/mh53.jpg', 68),
(78, 'MH-6', 'MH-6 LITTLE BIRD', 'MH-6-1', './site/membres/images/avion_mil/mh6.jpg', 78),
(88, 'UH-1H', 'Bell UH-1H Iroquois-Huey', 'UH-1-1', './site/membres/images/avion_mil/uh1.jpg', 78),
(91, 'B206B', 'Bell 206B', 'B-206-B', './site/membre/images/avion_mil/Bell206.jpg', 78),
(92, 'AH-64', 'Boeing AH-64 Apache', 'AH-64-1', './site/membre/images/avion_mil/ah-64.jpg', 108),
(95, 'CH-47D', 'Boeing CH-47 Chinook', 'CH-47D', './site/membre/images/avion_mil/ch47d.jpg', 68),
(100, 'MI-24', 'Mil Mi-24', 'ND', './site/membre/images/avion_mil/MI-24.jpg', 109),
(108, 'UH-60', 'Sikorsky UH-60 Black Hawk', 'UH-60', './site/membre/images/avion_mil/UH-60.jpg', 88),
(109, 'RAH-66', 'Boeing-Sikorsky RAH-66 Comanche', 'RAH-66', './site/membre/images/avion_mil/RAH-66.jpg', 108);
j'ai virer des colonnes qui ne servent à rien
alors pour les fonctions récursive, ok pas trop de soucis, mais j'ai essayé de coupler avec la représentation intervalaire, et ... ça m'a gonflé.
Vue que dans mon cas ce n'est pas trés justifié de l'utiliser.
function recursive_enfant($parent=NULL,$type=NULL,$db_tks=NULL,$niveau=0)
{
if ($parent==NULL or $type==NULL or $db_tks==NULL) {return;}
else
{ $c=0;
$enfant=$db_tks->query_list("SELECT * FROM ".PREFIX_TKS."_aircraft WHERE `parent` = '".$parent."' and `type`='".$type."'");
if ($enfant!=NULL)
{$c++;
$niveau++;
foreach ($enfant as $key => $value)
{
if($value->parent==$parent)
{
for ($i=0; $i <$niveau; $i++)
{
echo "-";
}
echo $value->fullname."<br>";
recursive_enfant($value->id_aircraft,$type,$db_tks,$niveau);
}
}
}
return ;
}
}
$zero=$db_tks->query_list("SELECT * FROM ".PREFIX_TKS."_aircraft WHERE `parent` = '0' and `type`='".$type."'");
if ($zero!=NULL)
{
foreach ($zero as $key => $value)
{
$value->id_aircraft.":".$value->fullname."<br>";
recursive_enfant($value->id_aircraft,$type,$db_tks,0);
}
}