Export->Export diagram to image) */ error_reporting(E_ALL & ~E_NOTICE); class db_doc { private $t_table; private $t_parcours; private $t_att; private $t_relation; private $titre; public $ID; public function __construct() { $this->t_table=array(); $this->t_parcours=array(); $this->t_att=array(); $this->t_relation=array(); $this->titre="

Base de données PMB

"; $this->ID=-1; } public function get_table(){ return $this->t_table; } public function get_parcours(){ return $this->t_parcours; } public function get_attribut(){ return $this->t_att; } public function get_relation(){ return $this->t_relation; } public function getTitre(){ return $this->titre; } public function parsage(){ $f="./scheme.xml"; $content=file_get_contents($f); $rx = "//m"; if (preg_match($rx, $content, $m)) $encoding = strtoupper($m[1]); else $encoding = "ISO-8859-1"; //$encoding = "UTF-8"; $parser = xml_parser_create($encoding); xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $encoding); xml_set_object($parser, $this); xml_set_element_handler($parser, "debutBalise", "finBalise"); xml_set_character_data_handler($parser, "texte"); xml_parse( $parser, $content, TRUE ); asort($this->t_parcours); } public function debutBalise($parser, $tag, $att=array()) { //complète $t_table avec son nom, sa description et la table de toutes ses relations if ($tag=='TABLE' && count($att) && $att['NAME'] ) { $this->ID=$att['ID']; $this->t_table[$att['ID']]=array('NAME'=>$att['NAME'],'DESC'=>$att['DESC'],'LIENS'=>array(),'KEY'=>$att['PKID']); $this->t_parcours[$att['ID']]=$att['NAME']; } //complète $t_relation qui lie les indices de deux tables et décrit ce lien. if ($tag=='LIEN'&& count($att) && $att['NAME']) { $t_lienF=explode('-',$att['CHILD']); $t_lienP=explode('-',$att['PARENT']); $this->t_table[$t_lienF[0]]['LIENS'][]=$att['ID']; $this->t_table[$t_lienP[0]]['LIENS'][]=$att['ID']; $this->t_relation[$att['ID']]=array('DESC'=>$att['DESC'],'T_PERE'=>$t_lienP[0],'F_PERE'=>$att['PARENT'],'T_FILS'=>$t_lienF[0],'F_FILS'=>$att['CHILD']); $this->t_table[$t_lienF[0]]['ATTRS'][$att['CHILD']]['REF']=$t_lienP[0]; if (empty($this->t_table[$t_lienF[0]]['ATTRS'][$att['CHILD']]['KEY'])){ $this->t_table[$t_lienF[0]]['ATTRS'][$att['CHILD']]['KEY']="Clé étrangère";} } //complète 'Lien' de $t_table afin de regrouper le informations à afficher if ($tag=='FIELD'&& count($att) && $this->ID!=-1) { $cle="Signé"; if($att['UNSIGNED']=="1"){$cle="Non signé";} $tmp=explode('-',$att['ID']); $pk=""; $rep=explode(',',$this->t_table[$this->ID]['KEY']); if(in_array($tmp[1],$rep)){$pk="Clé primaire";} $this->t_table[$this->ID]['ATTRS'][$att['ID']]=array('NAME'=>$att['NAME'],'DESC'=>$att['DESC'],'TYPE'=>$att['TYPE']."(".$att['LENGTH'].")",'SIGNE'=>$cle,'DEFVAL'=>$att['DEFVAL'],'KEY'=>$pk); } //Construit le titre if ($tag=='TITRE'&& count($att) ) { $att['DATE']=date("d/m/Y"); $this->titre="

".$att['NAME']."

"."
".$att['DATE']."
"; } } public function finBalise($parser, $tag, $att=array()) { if ($tag=='TABLE' && count($att) && $att['NAME'] ) { $this->ID=-1; } } public function texte($parser, $data) { } }