Joomladay francophone 2018 à Paris 18 et 19 mai

EventList inscription automatique (trigger)

Réduire
X
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] EventList inscription automatique (trigger)

    Bonjour,
    j'aimerais que dans le composant Eventlist la personne qui crée un événement soit automatiquement inscrite à cet evenement.

    Pour cela j'ai rajouter dans component/com_eventlist/model/editevent le code suisvant
    Code PHP:
    /*****************************************************
    * inscription automatique evenement
    ******************************************************/
                
                
    $db =& JFactory::getDBO();
                
    $user         = & JFactory::getUser();
                
    $elsettings = & ELHelper::config();
                
    $tzoffset    $mainframe->getCfg('offset');

                
    $event         = (int) $this->_id;
                
    $uid         = (int) $user->get('id');


                
    //IP
                
    $uip         $elsettings->storeip getenv('REMOTE_ADDR') : 'DISABLED';
                
                
    $obj = new stdClass();
                [
    B]$obj->event     = (int)$event;[/B]
                
    $obj->uid       = (int)$uid;
                
    $obj->uregdate     gmdate('Y-m-d H:i:s');
                
    $obj->uip       $uip;
                
    $query=("Insert Into #__eventlist_register (event, uid, uregdate, uip) VALUES('".$obj->event ."','".$obj->uid ."','".$obj->uregdate ."','".$obj->uip ."' )");
                
    $db->setQuery($query);
                
    $db->query(); 
    Mais il y a un probléme celui ci ne fonctionne que si j'edite l'evenement pas quand je le crée.
    Je pense que c'est du au fait que lorsque je veux inscrire l'auteur de l'evenement au troc, j'envoie un numero d'evenement ($obj->event = (int)$event; )qui n'existe pas encore puisque l'evenement na pas encore été enregistrer dans la base de donnée.

    Si quelqu'un à une solution merci
    Dernière édition par katsuya à 29/07/2009, 15h06

  • #2
    Re bonjour,

    Je pense que je vais créer un trigger qui fera apres chaque ajout d'evenement un nouvel enregistrement dans une autre table .

    Pour la syntaxe je pense que c'est bon par contre pour récupérér les champs pour le nouvel enregistrement je ne voit pas trop comment faire.

    Ici c'est la structure de la table ou j'enregistre un nouveau evenement
    Code PHP:
    --
    -- 
    Structure de la table `jos_eventlist_events`
    --

    CREATE TABLE IF NOT EXISTS `jos_eventlist_events` (
      `
    idint(11unsigned NOT NULL auto_increment,
      `
    locidint(11unsigned NOT NULL default '0',
      `
    catsidint(11unsigned NOT NULL default '0',
      `
    datesdate NOT NULL default '0000-00-00',
      `
    enddatesdate default NULL,
      `
    timestime default NULL,
      `
    endtimestime default NULL,
      `
    titlevarchar(100NOT NULL default '',
      `
    aliasvarchar(100NOT NULL default '',
      `
    created_byint(11unsigned NOT NULL default '0',
      `
    modifieddatetime NOT NULL default '0000-00-00 00:00:00',
      `
    modified_byint(11unsigned NOT NULL default '0',
      `
    author_ipvarchar(15NOT NULL default '',
      `
    createddatetime NOT NULL default '0000-00-00 00:00:00',
      `
    datdescriptionmediumtext NOT NULL,
      `
    meta_keywordsvarchar(200NOT NULL default '',
      `
    meta_descriptionvarchar(255NOT NULL default '',
      `
    recurrence_numberint(2NOT NULL default '0',
      `
    recurrence_typeint(2NOT NULL default '0',
      `
    recurrence_counterdate NOT NULL default '0000-00-00',
      `
    datimagevarchar(100NOT NULL default '',
      `
    checked_outint(11NOT NULL default '0',
      `
    checked_out_timedatetime NOT NULL default '0000-00-00 00:00:00',
      `
    registratinyint(1NOT NULL default '0',
      `
    unregistratinyint(1NOT NULL default '0',
      `
    publishedtinyint(1NOT NULL default '0',
      `
    NbPlaceint(2NOT NULL default '0',
      `
    LstAttenteint(2NOT NULL default '0',
      
    PRIMARY KEY  (`id`)
    ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=140 

    Ici c'est la table ou je souhaiterais que la personne qui cree un evenement soit inscrite automatiquement apres la création de l'evenement
    Code PHP:
    --
    -- 
    Structure de la table `jos_eventlist_register`
    --

    CREATE TABLE IF NOT EXISTS `jos_eventlist_register` (
      `
    idint(11unsigned NOT NULL auto_increment,
      `
    eventint(11NOT NULL default '0',
      `
    uidint(11NOT NULL default '0',
      `
    uregdatevarchar(50NOT NULL default '',
      `
    uipvarchar(15NOT NULL default '',
      
    PRIMARY KEY  (`id`)
    ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=234 


    donc pour la structure du trigger sa doit être :
    Code PHP:
    Create Trigger Inscription_Auto
    After insert on jos_eventlist_events
    for each row
    Begin
    declare @idAuto int, @event int,@uid int, @uregdate varchar, @uip varchar
    select 
    @event=id ,@uid=created_by  ,@uregdate=modified ,@uip=author_ip from  jos_eventlist_events
    Insert into jos_eventlist_register 
    (idevent,uid,uregdateuip  values(@idAuto, @event,@uid,@uregdate, @uip )
    end 
    mais il m'affiche l'erreur suivante:
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Trigger Inscription_Auto
    After insert on jos_eventlist_events
    as
    begin
    decla' at line 1
    Dernière édition par katsuya à 29/07/2009, 15h31

    Commentaire


    • #3
      Re bonjour,
      Bon en faite pour le trigger j'ai trouver l'erreur fallait rajouter un delimiter
      Code PHP:
      delimiter //
      CREATE or REPLACE trigger Inscription_Auto
      on jos_eventlist_events
      after insert 
      as
      begin
      declare 
      @
      event int,
      @
      userid int
      @
      uregdate varchar(50), 
      @
      uip varchar(15)
      begin
      select 
      @event=id ,@userid=created_by  ,@uregdate=modified ,@uip=author_ip  from inserted ;
      end
      begin
      Insert into jos_eventlist_register  
      values
      ( new.id, @event, @userid, @uregdate, @uip );
      END// 
      delimiter 
      Lorsque je l'execute il n'y a pas d'erreur mais sa ne m'insere rien dans ma base de donnée donc je pense que je récupere mal les champs à inséré quelqu'un sait comment faire?

      Commentaire


      • #4
        Re : EventList inscription automatique (trigger)

        Je répond un peut tard, mais je suis en train de faire un peut la même chose.

        Dans ton TRIGGER le
        after insert
        devrai être avent le
        on jos_eventlist_events
        Normalement c'est l’écriture normaliser d'un TRIGGER.

        En espérant que ca aide.

        cordialement titiste35.

        Commentaire

        Annonce

        Réduire
        1 sur 2 < >

        C'est [Réglé] et on n'en parle plus ?

        A quoi ça sert ?
        La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

        Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

        Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
        Comment ajouter la mention [Réglé] à votre discussion ?
        1 - Aller sur votre discussion et éditer votre premier message :


        2 - Cliquer sur la liste déroulante Préfixe.

        3 - Choisir le préfixe [Réglé].


        4 - Et voilà… votre discussion est désormais identifiée comme réglée.

        2 sur 2 < >

        Assistance au forum - Outil de publication d'infos de votre site

        Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

        Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

        Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

        UTILISER À VOS PROPRES RISQUES :
        L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

        Problèmes connus :
        FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

        Installation :

        1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

        Archive zip : https://github.com/AFUJ/FPA/zipball/master

        2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

        3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

        4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

        5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

        6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
        et remplacer www. votresite .com par votre nom de domaine


        Exemples:
        Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
        Télécharger le script fpa-fr.php dans: /public_html/
        Pour executer le script: http://www..com/fpa-fr.php

        Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
        Télécharger le script fpa-fr.php dans: /public_html/cms/
        Pour executer le script: http://www..com/cms/fpa-fr.php

        En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

        Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
        Voir plus
        Voir moins
        Travaille ...
        X