visualiser ma bd

Répondre
undertaker705
le 03/07/2008 à 21:51
undertaker705
Slt tou le monde , j'ai un petit probleme au niveau d'un jeu d'enregistrement de base de données
on ma demander de faire une application web en php qui permet la gestion,l'ajout et la suppression d'indicateur;
Je voudrai afficher ma base sous cette forme :



5 Metiers
51 Autorisations
51,1 Réseaux indépendants
5111 Nombre de réseaux indépendants
5112 Nombre de réseaux indépendants
5113 Nombre de réseaux autorisés par
5114 Nombre de demandes par an
5115 Chiffre d'affaires total



Metiers Autorisation reseaux independants sont tous des indicateurs ,

la complexité c kon a pas de nbre fini,chaque indicateur peut avoir des sous indicateurs
J'ai crée une base de données comme suit:





phpMyAdmin SQL Dump
-- version 2.9.2
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Jeudi 03 Juillet 2008 à 20:30
-- Version du serveur: 5.0.27
-- Version de PHP: 5.2.1
--
-- Base de données: `bdanrt`
--

-- --------------------------------------------------------

--
-- Structure de la table `indicateur`
--

CREATE TABLE `indicateur` (
`num_ind` varchar(100) NOT NULL,
`indicateur` varchar(100) NOT NULL,
`num_sind` varchar(100) NOT NULL,
`sous_indicateur` varchar(100) NOT NULL,
PRIMARY KEY (`num_ind`,`num_sind`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;



Remarque: les num_ind et num_sind sont des chaines de caracteres (10.2.3),ya pas d'auto increment
je peu facilemen les gerer a partir d'un code php au momen de l'insertion dans mon application web


il me faut de l'aide pour pouvoir afficher ma base de données sans avoir de redoublement ni aucune repetition et que chaque indicateur possede tous les sous indicateurs classer et decaler comme dans l'exemple.
AIDEZ MOI SVPP!!

exemple d'enregistrement:
1 environnemnt 1.1 foret
1 environnement 1.2 terre
1 environnement 1.3 mer
1.1 foret 1.1.1 arbre
1.1 foret 1.1.2 buisson
1.1.1 arbre 1.1.1.1 feuille
2 industrie 2.1 petrol

j'attend votre aide et mercii d'avance
LupusMic
le 04/07/2008 à 09:55
LupusMic
Dans un premier temps, tu vas me faire le plaisir d'installer un correcteur orthographique, et de te relire avant de valider tes futurs messages :)

Générer l'indicateur dans ton script PHP plutôt que de laisser la base le faire automatiquement, c'est s'assurer que tes identifiant entrerons en collision un jour.

integer est un type de choix pour représenter un nombre entier. varchar, c'est bien pour les chaînes de caractères, dans lesquelles il y a autre chose que des chiffres.

Ce que tu veux faire, c'est aplatir un arbre dans une base de données. C'est pénible à faire, ce n'est pas ce qu'il y a de plus facile pour aborder le développement. Mais bon, c'est pas insurmontable. Alors je vais te conseiller la démarche suivante :

Développes un modèle PHP permettant la représentation d'un arbre. Tu peux implémenter une l'interface suivante :
<?php
interface iNode
{
function __construct($precious, $parent=null, $childs=null) ;
function set_parent(iNode $new_parent) ;
function append_child(iNode $new_child) ;

/** Permet d'attacher quelque chose au nœud.
*/
function set_burden($precious) ;
}

class node implements iNode
{
public $parent ;
public $childs ;

public $precious ;

/* l'impementation que tu auras choisi */
}

// Exemple d'utilisation :

$doc = new node(null) ;
$section = $doc->append_child(new node('1')) ;
$section->append_child(new node('1')) ;
$section->append_child(new node('2')) ;
$soussection = $section->append_child(new node('3')) ;

$soussection->append_child(new node('1')) ;
$soussection->append_child(new node('2')) ;

?>


La gestion d'un arbre dont les nœuds transportent un nombre est bien sûr un exemple. Tu peux très bien imaginer remplacer les nombres par un objet qui représentes un indicateur.

Maintenant que tu as ton arbre, modélises les précieux fruits qu'il transporte, à savoir tes indicateurs.

Ceci fait, écrit le code qui permet de traduire un arbre chargé de fruits en sa représentation visuelle.

La suite à mon prochain poste ;)
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 04/07/2008 à 10:28
LupusMic
À cette étape, le plus simple est fait. Maintenant, on va s'attaquer au schéma de base de données.
Le schéma que tu as fait n'est pas bon. La raison est simple : le nombre d'enfants d'un nœud est arbitraire. On dit que la cardinalité du lien parent-enfant est 1-n. Alors qu'au contraire, un enfant ne peut avoir qu'un parent ou aucun, ce qui fait que la carinalité du lien enfant-parent est de 1-1?. On aurait alors quelque chose dans ce goût là :

create table indicateur
( id integer auto_increment
, label varchar(100) not null
, indice integer
, parent_id integer

, primary key (id)
, foreign key (parent_id) references indicateur (id)
) engine='InnoDB' ;


Ainsi tu insérerais les données comme suit :

insert into table indicateur (label, indice)
values ('environnemnt', 1)
, ('industrie', 2)
;

insert into table indicateur (label, indice, parent_id)
values ('foret', 1, (select id from indicateur where indice = 1))
;

insert into table indicateur (label, indice, parent_id)
values ('arbre', 1
, (select id from indicateur where label = 'foret'))
;


Une fois que tu as fait tout ça, tu peux commencer à réfléchir aux requêtes de consultation de la table, d'en utiliser les résultats pour décorer ton arbre de Noël, puis d'afficher l'arbre.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
jackbocar
le 05/07/2008 à 07:17
jackbocar
LupusMic

Bonjour,

Je vois la construction et le développement de ton arbre.

J'aimerais savoir si tu as appris ces fonctions d'après un ouvrage ?
Si oui, peux-tu donner le titre de cet ouvrage ou des ouvrages.

Je suis toujours à la recherches de nouvelles fonctionnalités pour mes codes PHP5.

Merci

Jack Bocar
Keika
le 05/07/2008 à 13:35
Keika
je pense qu'il a plutot appris ca en cours.

Par contre, ca ferait bien dans un cours... GLOBULE, a toi de voir.

Et sinon c'est interessant de voir ce raisonnement.
Le PHP --> C'est dur !
undertaker705
le 06/07/2008 à 16:37
undertaker705
Merci pour ton aide concernant la base de données , le vrai probleme que je n'est pas réussit à résoudre est l'affchage de ma structure hiearchique sous cette forme :
A
-- AA
-- AAA
-- AAB
-- AABA
--- AABAA
-- AB
-- ABA
B
C
-- CA
-- CB

Pouvez vous m'en dire plus a se sujet??smiley
je n'utiserais pas l'id , sa me servira a parcourir la base tou simplement . Je ferais un code qui affichera des string (1.2.3).
Merci pour votre aide.
Keika
le 07/07/2008 à 17:55
Keika
salut,

avec mon experience toute nouvelles, je ferais des for dans des for, c'est gros, c'est lourd, mais ca marche.

Apres il faut savoir de combien de for tu as besoin, si tu ne sais pas ca et que c'est variable, il te faut un for pour ca aussi. :D

En clair un truc ressemblant a ca:

http://www.lephpfacile.com/wall/wall-1571.php
Bon bien entendu avec ta propre pagination...

Bon courage
Le PHP --> C'est dur !
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours