Aperçu

La fourniture de déclencheurs offre aux utilisateurs la possibilité d'écrire leurs propres scripts PHP pour des choses comme la validation de données, et d'avoir leur code exécuté au moment opportun.

Les déclencheurs sont des fichiers qui sont notamment, par le biais d'une déclaration include(), execcuté conditionnellement par phpMyEdit.class.php.

Les déclencheurs SQL sont inclus avant ou après insértion, mise à jour ou suppression des enregistrements. Les déclencheurs sont inclus avant l'affichage du formulaire qui permettra à l'opération correspondante, ou après que l'utilisateur a annulé ce formulaire.

• Voir le formulaire qui est lié pour 'choisir' l'opération.
• Ajouter Copiez et les formulaires qui sont liées à l'opération “insérer”
• Modifier la formulaire qui est liée à la “mise à jour”.
• Supprimer formulaire qui est liée à la 'suppression'.

Pour les déclencheurs sql, séquence de l'opération est la suivante: avant, principale, après. Si une opération échoue, non seulement la prochaine opération(s) devrait ne pas être exécuté, mais aussi ceux qui l'ont précédé sont “anéantis” comme si elles n'étaient jamais arrivés. Si une base de données n'est pas en mesure de le faire, il ne s'agit pas de “transaction sûrs”.

Les déclencheurs sont risqués dans MySQL car il n'y a pas de support natif de transaction. Il n'existe pas de transaction sure par défaut. Il ya des types de transactions sûres sur les tables dans MySQL qui peuvent être construits sous condition (voir MySQL-Max), mais phpMyEdit ne l'a pas actuellement mis en place pour appuyer les transactions réelles. Ce qui signifie que si une opération échoue, la base de données peut être laissée dans un état intermédaire et invalide (ndlr : instabilité de la base de données).

Le programmeur doit comprendre et accepter ces risques avant d'utiliser le mécanisme des déclencheurs dans phpMyEdit. Si les déclencheurs sont utilisés, ils s'exécutent dans l'espace de nom ou dans la portée de la classe phpMyEdit. Les Déclencheur doivent retourner vrai ou faux pour indiquer la réussite ou l'échec.

Genres des Déclencheurs

Il ya des différents types de déclencheurs dans phpmyedit :

• 'pre'(avant) ces déclencheurs sont généralement utilisés pour vérifier les conditions avant d'afficher la page de l'opération. Ainsi, les utilisateurs peuvent être autorisés à Voir tous les enregistrements, mais ne peuvent modifier qu'une partie d'entre eux. Une autre utilisation consiste à verrouiller l'enregistrement afin d'éviter à d'autres utilisateurs de commencer des modifications en même temps.
• 'before' (avant) ces déclencheurs sont généralement utilisés pour vérifier les conditions préalables à l'exécution de l'opération principale. Ainsi, ils peuvent être d'une certaine utilité pour la validation.
• 'after' (après) ces déclencheurs sont généralement utilisés pour effectuer des opérations de suivi après l'opération principale. Ainsi, pour mettre à jour les tableaux secondaires et forcer l'intégrité référentielle ou de mettre à jour des tableaux globaux.
• 'cancel' (annuler) ces déclencheurs sont généralement utilisés pour effectuer des opérations de suivi après que les utilisateurs aient annuler le formulaire. Ainsi, si un enregistrement est fermé au moyen d'un déclencheur 'pre' (avant) , un 'cancel' (annuler) peut déclencher le déverrouillage.
Si un déclencheur 'pre' (avant) échoue, les utilisateurs sont renvoyés à la liste, à l'exception de l'update' (mise à jour), où les utilisateurs sont renvoyés à la page pour voir si la mise à jour avant que le déclencher a échoué.

Exemples de déclencheurs

Exemple 3-21. Sélectionner des déclencheurs

/ / Avant l'affichage de la page
$opts[’triggers’][’select’][’pre’] = ’categories.TSP.inc’;
/ / Après annulation de visualisation de la page
$opts[’triggers’][’select’][’cancel’] = ’categories.TSC.inc’;

Exemple 3-22. Insérer des déclencheurs

/ / Avant l'affichage de la page ajouter / copier
$opts[’triggers’][’insert’][’pre’] = ’categories.TIP.inc’;
/ / Après avoir demandé enregistrer ou plus dans la page ajouter / copier
$opts[’triggers’][’insert’][’before’] = ’categories.TIB.inc’;
$opts[’triggers’][’insert’][’after’] = ’categories.TIA.inc’;
/ / Après l'annulation de la page ajouter / copier
$opts[’triggers’][’insert’][’cancel’] = ’categories.TIC.inc’;

Exemple 3-23. Déclencheurs de mise à jour (Update)

/ / Avant l'affichage de la page d'édition
$opts[’triggers’][’update’][’pre’] = ’categories.TUP.inc’;
/ / Après avoir demandé de sauvegarder ou d'appliquer dans la page d'édition
$opts[’triggers’][’update’][’before’] = ’categories.TUB.inc’;
$opts[’triggers’][’update’][’after’] = ’categories.TUA.inc’;
/ / Après annulation dans la page d'édition
$opts[’triggers’][’update’][’cancel’] = ’categories.TUC.inc’;

Exemple 3-24. Déclencheurs de suppression

/ / Avant l'affichage de la page de suppression
$opts[’triggers’][’delete’][’pre’] = ’categories.TDP.inc’;
/ / Après avoir demandé la suppression
$opts[’triggers’][’delete’][’before’] = ’categories.TDB.inc’;
$opts[’triggers’][’delete’][’after’] = ’categories.TDA.inc’;
/ / Après l'annulation de la suppression
$opts[’triggers’][’delete’][’cancel’] = ’categories.TDC.inc’;

Veuillez noter que les déclencheurs ['select']['after'] et ['select']['before'] actuellement n'existent pas.

Dans l'exemple suivant les étapes lors d'un Affichage, Edition, Application et Annulation sont décrites. Tous ces déclencheurs retourne la valeur Vrai (true) à leur execution.

• l'utilisateur commence à la page contenant la liste
• l'utilisateur d'afficher un enrregistrement
• le déclencheur [’select’][’pre’] est inclus (le cas échéant)
• si vrai (true) est retourné par le déclencheur continuer, sinon revenir à la page contenant la liste
• utilisateur est maintenant dans la page edition
• demande à l'utilisateur de modifier l'enregistrement
• le déclencheur [’update’][’pre’] est inclus (le cas échéant)
• si vrai (true) est retourné par le déclencheur continuer, sinon retourner pour voir la page
• l'utilisateur est maintenant dans la page d'édition
• l'utilisateur apporte des changements et demande à appliquer (sauver et continuer)
• [’update’][’before’] déclencheur est inclus (le cas échéant)
• si vrai (true) est retourné continuer, sinon, retour à la liste, sans mise à jour
• l'enregistrement est mis à jour dans la base de données
• le déclencheur [’update’][’after’] est inclus (le cas échéant)
• le délcencheur [’update’][’pre’] est inclus (le cas échéant)
• si vrai (true) est retourné continuer, sinon retourner pour voir la page
• l'utilisateur est maintenant de retour à la page
• l'utilisateur fait quelques autres changements, mais demande de les annuler
• le déclencheur [’update’][’cancel’] est inclus (le cas échéant)
• l'utilisateur est de retour à la liste de la page

Déclencheurs de variables

Dans fichier de déclencheur vous avez une ensemble de variables utilisables. Certaines d'entre elles ne concernent qu'une action en particulier.

$this objet de référence
$this→dbh base de données MySQL à initialiser
$this→key nom de la clé primaire
$this→key_type clé primaire de type
$this→key_delim delimitateur de clé primaire
$this→rec. valeur de clé primaire (mise à jour et supprimer uniquement)
$newvals tableau associatif des nouvelles valeurs (mise à jour et insérer seulement)
$oldvals tableau associatif des anciennes valeurs (mettre à jour et supprimer uniquement)
$Changed tableau de clés avec les valeurs changé

Il existe également d'autres variables disponibles. Par exemple, chaque classe de propriété peut être consulté en utilisant $this Objet de référence. Toutes les variables se produisent dans un déclencheur 'before' (avant) ainsi que dans un déclencheur 'after' (après).
Seule actuellement la classe Propriétés se produit dans un déclencheur 'pre' (avant) et 'cancel' (annuler).

Il est recommandé d'utiliser la méthode $ this→ myQuery () afin d'effectuer des requêtes pour la base de données pour récupérer des données supplémentaires ou faire des insertions ou mises à jour des autres tables de bases de données.

Enchaîner les déclencheurs

Vous pouvez configurer plusieurs déclencheurs pour la même opération. Cela permet d'isoler le code, afin de partager plus facilement le déclencheur entre les multiples appels de scripts et de réutiliser du code produit par d'autres utilisateurs de phpMyEdit.

L'ordre dans lequel les déclencheurs sont exécutés est important. Il est fixé par des clés de déclencheurs enchaînés. Dès que l'un des déclencheurs enchaînés échoue, la valeur est fausse (false) est retournée, et à la suite de déclencheurs ne sont pas éxécutés. Si aucun des déclencheurs enchaine n'échoue, alors la valeur retournée est vrai (true).

Exemple 3-25. Mise à jour avant de déclencheurs enchainées

$opts[’triggers’][’update’][’before’][1] = ’lock.TUA.inc’;
$opts[’triggers’][’update’][’before’][0] = ’check.TUB.inc’;

Dans cet exemple, lorsque l'utilisateur clique sur le bouton Enregistrer au cours de l'édition d'un enregistrement, check.TUB.inc va Être exécuté en premier. Si elle renvoie vrai (true), alors lock.TUB.inc sera exécutée. Si l'un de ces déclencheurs échoue, la mise à jour de la base de données ne sera pas effectuée, comme si une simple déclencheur [’update’][’before’] avait échoué.

Il est à noter que bien que la valeur de rendement global du déclencheur 'annuler' n'inluence pas phpMyEdit comportement, la valeur retourné par chaque déclencheur enchaîné est importante.

 
declencheurs_triggers.txt · Dernière modification: 2007/12/11 23:02 par fabrice
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki