[Tableaux] petit probleme de recursiviter
salut
pour alleger mon travaille je map la structure de ma base dans un fichier xml
(qui devrai etre compatible sdo)
mais dans certain cas ma methode fonctionne et pas dans d'autre
petit example( :? )
le fichier xml
Code:
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| <table>
<name>USERS</name>
<colums>id_users</colums>
<colums>firstname</colums>
<colums>lastname</colums>
<colums>login</colums>
<colums>password</colums>
<colums>email</colums>
<colums>comment</colums>
<colums>photo</colums>
<pk>id_users</pk>
</table>
<table>
<name>GROUPS</name>
<colums>id_groups</colums>
<colums>name</colums>
<pk>id_groups</pk>
</table>
<table>
<name>PERMISSION</name>
<colums>id_permission</colums>
<colums>permited</colums>
<colums>id_groups_users</colums>
<colums>id_module_actions</colums>
<pk>id_permission</pk>
<fk>
<from>MODULE_ACTIONS</from>
<to>id_module_actions</to>
</fk>
<fk>
<from>GROUPS_USERS</from>
<to>id_groups_users</to>
</fk>
</table>
<table>
<name>GROUPS_USERS</name>
<colums>id_groups_users</colums>
<colums>id_groups</colums>
<colums>id_users</colums>
<pk>id_groups_users</pk>
<fk>
<from>GROUPS</from>
<to>id_groups</to>
</fk>
<fk>
<from>USERS</from>
<to>id_users</to>
</fk>
</table>
<table>
<name>MODULE_ACTIONS</name>
<colums>id_module_actions</colums>
<colums>id_module</colums>
<colums>id_actions</colums>
<pk>id_module_action</pk>
<fk>
<from>MODULE</from>
<to>id_module</to>
</fk>
<fk>
<from>ACTIONS</from>
<to>id_actions</to>
</fk>
</table>
<table>
<name>MODULE</name>
<colums>id_module</colums>
<colums>name</colums>
<pk>id_module</pk>
</table>
<table>
<name>ACTIONS</name>
<colums>id_actions</colums>
<colums>name</colums>
<pk>id_actions</pk>
</table> |
associer a la methode suivante
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| protected function getTable($table=null,&$array=null)
{
if(isset($this->_base[$this->_table]['fk']))
{
if(isset($this->_base[$this->_table]['fk']) && $table===null)
{
$table=$this->_base[$this->_table];
$array[0]=$this->_table;
}else
$table=$this->_base[$table];
if(isset($table['fk'])){
foreach ($table['fk'] as $fk)
{
$nb=count($array);
$array[$nb++]=(string)$fk->from;
$this->getTable((string)$fk->from,$array);
}
}
return $array;
}
else
return array($this->_base[$this->_table]['name']);
} |
me retourne les nom de toute les tables avec PERMISSION en table d'entré (j'ai une autre methode pour les jointures)
mais voila cette methode fonctionne que tres partiellement avec
une autre partie de mon fichier xml
Code:
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
| <table>
<name>ARTICLE</name>
<colums>id_article</colums>
<colums>contenu</colums>
<colums>title</colums>
<colums>id_image</colums>
<colums>id_users</colums>
<colums>id_xslt</colums>
<colums>date</colums>
<colums>keyword</colums>
<pk>id_article</pk>
<fk>
<from>IMAGE</from>
<to>id_image</to>
</fk>
<fk>
<from>XSLT</from>
<to>id_xslt</to>
</fk>
<fk>
<from>USERS</from>
<to>id_users</to>
</fk>
</table>
<table>
<name>IMAGE</name>
<colums>id_image</colums>
<colums>name</colums>
<colums>description</colums>
<pk>id_image</pk>
<fk>
<from>THEME</from>
<to>id_theme</to>
</fk>
</table>
<table>
<name>THEME</name>
<colums>id_theme</colums>
<colums>name</colums>
<pk>id_theme</pk>
</table> |
ici je n'arrive pas a recuperer la table THEME :evil:
c'est le foreach qui merde, mais j'ai pas trouver le bon paliatif
merci à tous ceux qui ont lu le post jusqu'au bout
ps: petite precsion
Code:
count($this->_base['ARTICLE']['fk'])
donne 3
et
Code:
count($this->_base['IMAGE']['fk'])
donne 2 8O