dimanche 26 juillet 2009
PhpMyAdmin "avancé" (partie 2)
Dans la rubrique PHP / PEAR
Il existe plein d'options dans phpMyAdmin pas très connues.
Trois me plaisent plus particulièrement.
- le regroupement de table par préfixe (Partie 1)
- L'historique des commandes.
- la gestion des relations
Partie 1 - Partie 2
Pour les 2 possibilités suivantes, vous devrez créer un ensemble de tables spéciales. Ces tables peuvent se trouver dans votre propre base de données, ou dans une base de données séparée.
Il faudra donner le nom de cette db dans $cfg['Servers'][$i]['pmadb'].
Mémorisation des requêtes réalisées
Il y a en fait 2 possibilités
L'historique
Il faudra créer une table dans $cfg['Servers'][$i]['pmadb']. et mettre le nom de la table dans $cfg['Servers'][$i]['history']
Il mémorisera toutes les requêtes.
Cette liste pouvant grandir un peu trop, $cfg['QueryHistoryMax']. permet de limiter leur nombre
Apparemment il y a moyen de se passer de la table et de gerer ca en javascript (base par navigateur dans ce cas)
En bookmark
(Depuis la version 2.2.0) Il faudra créer une table dans $cfg['Servers'][$i]['pmadb']. et mettre le nom de la table dans $cfg['Servers'][$i]['bookmarktable']
[Mysql] -- -- Table structure for table `pma_bookmark` -- CREATE TABLE IF NOT EXISTS `pma_bookmark` ( `id` int(11) NOT NULL auto_increment, `dbase` varchar(255) NOT NULL default '', `user` varchar(255) NOT NULL default '', `label` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL default '', `query` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM COMMENT='Bookmarks' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
la gestion des relations
(Depuis la version 2.2.4)
il faut ajouter à la config le nom de la table $cfg['Servers'][$i]['relation'] = 'pma_relation';
Donc faites comme vous le sentez mais généralement c'est pma_relation
[Mysql]
DROP TABLE IF EXISTS `PMA_relation`;
CREATE TABLE `PMA_relation` (
`master_db` VARCHAR(64) NOT NULL DEFAULT '',
`master_table` VARCHAR(64) NOT NULL DEFAULT '',
`master_field` VARCHAR(64) NOT NULL DEFAULT '',
`foreign_db` VARCHAR(64) NOT NULL DEFAULT '',
`foreign_table` VARCHAR(64) NOT NULL DEFAULT '',
`foreign_field` VARCHAR(64) NOT NULL DEFAULT '',
PRIMARY KEY (`master_db`, `master_table`,`master_field`),
KEY `foreign_field` (`foreign_db`, `foreign_table`)
) TYPE=MyISAM COMMENT='Relation table';
Pour faire un peiti test, j'ai créé dans ma db test 3 tables
[Mysql] -- Généré le : Mar 28 Juillet 2009 à 23:03 -- Version du serveur: 5.0.75 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; -- -- Base de données: `test` -- -- -------------------------------------------------------- -- -- Structure de la table `classe` -- CREATE TABLE IF NOT EXISTS `classe` ( `id` int(10) unsigned NOT NULL auto_increment, `nom` varchar(30) NOT NULL, `prof` varchar(30) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; -- -- Contenu de la table `classe` -- INSERT INTO `classe` (`id`, `nom`, `prof`) VALUES (1, 'premiere latin', 'Mr carton'), (2, 'premiere langue', 'Madame crayon'); -- -------------------------------------------------------- -- -- Structure de la table `eleve` -- CREATE TABLE IF NOT EXISTS `eleve` ( `id` int(8) unsigned NOT NULL auto_increment, `prenom` varchar(15) NOT NULL, `nom` varchar(15) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; -- -- Contenu de la table `eleve` -- INSERT INTO `eleve` (`id`, `prenom`, `nom`) VALUES (1, 'jean', 'bon'), (2, 'Marc', 'Assin'), (3, 'simon', 'brol'), (4, 'julien', 'folie'); -- -------------------------------------------------------- -- -- Structure de la table `inscription` -- CREATE TABLE IF NOT EXISTS `inscription` ( `idclasse` int(10) unsigned NOT NULL, `ideleve` int(10) unsigned NOT NULL, `role` varchar(30) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -- Contenu de la table `inscription` -- INSERT INTO `inscription` (`idclasse`, `ideleve`, `role`) VALUES (1, 1, ''), (1, 2, ''), (2, 1, ''), (2, 4, '');
Dans l'affichage de la table on a ceci 
On peut alors aller dans la structure d'une table et ensuite cliquer sur "gestion des relations".

On a une select box pour dire à quel champs d'une autre table peut-être lié les champs de la table courante

Quand ceci est fait, quand on affiche le contenu de la table, les valeurs deviennent des liens vers l'affichage des enregistrements correspondants dans l'autre table.



2
-





