The PHP Pg frontend project is yet an another frontend for the PostgresSQL database but it fully works !
It have several cool features :
Demo database diagram (table PROD for product) :
cataweb=# \d timbre
Table "timbre"
Column | Type | Modifiers
----------------+--------------------------+-----------
id_prod | bigint | not null
nom_prod | text |
pha_prod | double precision |
pv_prod | double precision |
stock_a | integer |
stock_v | integer |
stock_p | integer |
stock_r | integer |
dat_com_prod | date |
dat_modif_prod | timestamp with time zone |
id_pays | bigint | not null
id_chapitre | bigint |
type_t | integer |
nd_t | integer |
dent_t | integer |
surch_t | integer |
val_t | integer | not null
tir_t | integer |
h_t | integer |
l_t | integer |
dat_emis_t | date |
design_t | text |
impr_t | integer |
off_t | integer |
ref_y_t | text |
cote_y_t | double precision |
ref_m_t | text |
cote_m_t | double precision |
ref_s_t | text |
cote_s_t | double precision |
classe_t | integer |
recu_t | date |
fourn_t | text |
commentaire_t | text |
Unique keys: timbre_nom_prod_key
...
cataweb=# \d pays
Table "pays"
Column | Type | Modifiers
----------------+---------+-----------
id_pays | bigint | not null
nom_pays | text |
ref_pays | text |
monnaie_pays | text |
capitale_pays | text |
continent_pays | integer |
nom_pays_2 | text |
nom_pays_3 | text |
nom_pays_4 | text |
nom_pays_5 | text |
Primary key: pays_pkey
Unique keys: pays_nom_pays_key,
pays_ref_pays_key
...
CHAPITRE (chapter) table :
cataweb=# \d chapitre
Table "chapitre"
Column | Type | Modifiers
----------------+---------+-----------
id_chapitre | bigint | not null
nom_chapitre | text |
ref_chapitre | integer | not null
nom_chapitre_2 | text |
nom_chapitre_3 | text |
nom_chapitre_4 | text |
nom_chapitre_5 | text |
Primary key: chapitre_pkey
Unique keys: chapitre_nom_chapitre_key,
chapitre_ref_chapitre_key
...
cataweb=# \d description
Table "description"
Column | Type | Modifiers
----------------------------+---------+-----------
id_description | bigint | not null
chemin_fichier_description | text |
texte_description | text |
langue_description | integer |
type_description | integer |
Primary key: description_pkey
Triggers: RI_ConstraintTrigger_1001239,
RI_ConstraintTrigger_1001237,
RI_ConstraintTrigger_1001235,
RI_ConstraintTrigger_1001233,
RI_ConstraintTrigger_1001231,
RI_ConstraintTrigger_1001229,
RI_ConstraintTrigger_1001227,
RI_ConstraintTrigger_1001225,
RI_ConstraintTrigger_1001223,
RI_ConstraintTrigger_1001221
cataweb=# \d timbre_c_descr
Table "timbre_c_descr"
Column | Type | Modifiers
-------------------+--------+-----------
id_timbre_c_descr | bigint | not null
id_prod | bigint | not null
id_description | bigint | not null
Primary key: timbre_c_descr_pkey
...
On the top, from left to right, you can see the basic treatment bar :
Information bar :
Sort bar :
For each line of data you can confirmation form, check for delete, display, modify and see a selection of fields (fully customizable).
Picture liste.jpg :
The ref_chapitre field is int4 data type (file id) but the configuration enable the display of the linked picture.
cfg-liste.jpg :
Customization files arborescence
example :
Look at the flag of each country. By default, you have the id of the
country but by the config file, you have the flag picture.
Picture liste-tri.jpg :
The files for customization are stored in a file arborescence matching the database structure.
Table list -> Field list -> one file for each basic treatment (check input, forms generation, list and item display).
Picture interface-controle.jpg :
T5, modify with custom form example :
Look at the links established (dark red column), an N-N type link between TIMBRE and DESCRIPTION tables via TIMBRE_C_DESCR link table.
Picture liaisons-etablies.jpg :