Bonjour à tous !
Je suis en école d’informatique, et j’ai un petit projet à effectuer pour pouvoir faire une présentation de drupal.
J’ai un petit soucis par rapport aux trigger.
En fait, j’ai créé deux types de contenus avec le module CCK : un livre, et un emprunt.
Donc grâce à mon site, les utilisateurs abonnés et administrateurs peuvent maintenant visualiser un livre et l’emprunter, puis le rendre.
Seulement, j’aimerais pouvoir faire la chose suivante :
Un utilisateur ne peut pas emprunter plus de 3 livres simultanément.
J’ai donc pensé à la notion de trigger (petite fonction qui se déclenche sur une action qui agit sur la base de données), qui va vérifier combien l’utilisateur a de livre emprunté actuellement, et dire si oui ou non l’emprunt doit être enregistré en base de données. Si ce n’est pas possible, il renvoie un message d’erreur et n’enregistre rien.
J’ai mis le module Trigger à mon site, mais je ne vois pas du tout comment l’utiliser pour faire ce que je veux, c’est à dire en gros :
Juste après avoir appuyé sur le bouton de création du contenu emprunt, avant même l’insertion en base de données :
vérifier le nombre d’emprunts de l’utilisateur en cours
si nombre d’emprunt >= 3 : renvoie un message d’erreur, ou une page d’erreur
si nombre d’emprunt < 4 : ça enregistre en BD et tout le monde est content !
Voila, j’espère avoir bien expliqué mon problème.
Sauriez-vous comment (avec ou sans le module trigger) faire ce que je veux avec drupal ?
Merci à tous !
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

salut
je n’ai pas de solution à ton probleme mais j’ai juste une idée qui me passe par la tête : utilises-tu ubercart (systeme de boutique en ligne de drupal) ou pas ? peut être que certaines options de configuration pourrait t’aider (peut être peut-il limiter le nombre de produits qu’on met dans le panier par exemple).
Bon je dis ça au pif mais ça me semble intéressant d’explorer ubercart sur cette histoire.
http://formation.ideia.fr/formation/drupal-la-carte | http://twitter.com/nyl_auster
nyl auster
838
Apparement ce module est fait seulement pour l’achat en ligne… Et ce n’est pas ce qui m’interesse.
J’aimerais quelque chose qui pourrais me permettre les données entrantes en base, ou quelque chose agissant directement sur la base de données…
Mais merci de ton aide !
didinho88
4
salut
Oui c’est une boutique en ligne, je me disais qu’il y avait peut être moyen de détourner son usage pour les emprunts : le suivi des achats (emprunts dans ton cas) et la gestion de stock pourrait être une bonne base pour tout ça. Et comme il existe pas mal de modules qui vont avec ubercart, je me dis que tu aurais peut être trouvé ton bonheur dedans.
Peut tu me décrire comme tu gère la notion d’emprumt avec ton systeme ? car je ne comprends pas avec ce que tu décris.
http://formation.ideia.fr/formation/drupal-la-carte | http://twitter.com/nyl_auster
nyl auster
838
En fait, j’ai créé deux types de contenus :
Un livre : un champ titre et un champ description
Un emprunt : un champ titre, un champ texte référençant le livre (en auto complétion), un champ text référençant l’utilisateur abonné qui emprunte (en auto complétion), une date d’emprunt (remplie par défaut à la date d’aujourd’hui), une date de retour.
Après, j’ai deux type d’utilisateurs :
user authentifié : capable de voir les contenus de type livre
bibliothécaire : capable de voir tous les contenus (livre et emprunt), capable de créer un livre, et capable de créer un emprunt.
En gros, un user normal peut voir les livres. Et la bibliothécaire gère les emprunts sur les livres.
didinho88
4
donc en gros tu créer une fiche emprunt ; mais qu’advient t-il de cette fiche une fois le livre rendu ? elle est supprimée ?
Si c’est le cas tu pourrais peut être utiliser un module qui s’appelle «node limit», qui interdit à un utilisateur de créer plus du nombre de node que tu as décidé. Mais ça suppose que l’utilisateur crée lui même la fiche d’emprunt…
Ou bien cela suppose que tu attribues la fiche d’emprunt le nom de l’emprunteur en tant qu’auteur de la fiche (ça me parait pas une mauvaise solution, vu qu’il s’agit justement d’un champ autocomplete je crois)
Je n’ai pas testé trigger donc je ne peux malheureusement pas t’aider plus avant.
Si tu connais un peu de php, tu peux faire un petit module, ce que tu cherche à réaliser semble simple et le hook «nodeapi» te permet d’insérer le php que tu veux à n’importe quel moment du processus de la vie d’un node.
http://formation.ideia.fr/formation/drupal-la-carte | http://twitter.com/nyl_auster
nyl auster
838
Oh merci !
Le module node limit serait pas mal, ca m’empecherais d’avoir un historique des emprunts, mais ce n’est pas trop important je pense.
Je vais étudier le module nodeapi aussi.
Je te remercie. :)
didinho88
4