Rapport dynamique: Liste des attributs d’une table dans #Postgre

Disposant d’une base de données GeoNework , je me suis interrogé sur comment intégrer la liste des attributs  d’une table dans  sa fiche de métadonnées. Et surtout comment les visualiser d’une manière dynamique.  Alors j’ai regardé du coté  PGAdmin, et oui on peut générer directement un rapport en html. Mais comment le rendre dynamique?

D’abord après de fructueuses recherches voici la requête qui me permet d’afficher pour une table donnée:  les attributs, les types, le nom de la table, les commentaires, s’il est rempli ou pas par défaut, la clef primaire…

Voici un exemple avec la table bâtiment dans le schéma majic (données foncières)


 SELECT a.attnum as numero,
 a.attrelid::regclass as table
 ,a.attname AS attribut
 ,format_type(a.atttypid, a.atttypmod) AS type
 ,a.attnotnull AS notnull
 ,coalesce(p.indisprimary, FALSE) AS primary_key
 ,f.adsrc AS default_val
 ,d.description AS commenatire
 FROM pg_attribute a
 LEFT JOIN pg_index p ON p.indrelid = a.attrelid AND a.attnum = ANY(p.indkey)
 LEFT JOIN pg_description d ON d.objoid = a.attrelid AND d.objsubid = a.attnum
 LEFT JOIN pg_attrdef f ON f.adrelid = a.attrelid AND f.adnum = a.attnum
 WHERE a.attnum > 0
 AND NOT a.attisdropped
 AND a.attrelid = 'majic_2014.d44_2014_batiment'::regclass -- A adapter
 ORDER BY a.attnum;
 

Voici le résultat:

majic.png

Et avec le rapport de pgAdmin(fichier/rapport rapide) ça donne ça:

rapport pgadmin.png

 

Alors tout ça c’est magique. Mais comment le rendre dynamique pour éviter de générer des milliers de pages tml? Je suis donc passé par du php pour transmettre des données par url.

Par exemple,  vous voulez afficher les attributs de la table « majic_2014.d44_2014_lotslocaux »   voici l’url à transmettre dans GeoNework :

http://localhost/developpement/rapport/rapport.php?table=majic_2014.d44_2014_lotslocaux
Vous remarquerez que la variable "table" permet de récupérer les attributs de la table que vous voulez afficher

Voici le résultat dans GeoNework :metadonnees.png

Voici le résultat :

rapport postgresql.png

Vous trouverez le code ici :

Évidemment vous pouvez également l’utiliser pour générer directement d’autres requêtes.

Pour plus de détails concernant la transmissions de variables ici

 

 

 

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s