IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

Trigger Php Admin


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 10
    Par défaut Trigger Php Admin
    Bonjour a tous, voila je débute en trigger et j'ai toujours des problèmes de syntaxe lors de la création de mon trigger que voici:

    Je veux qu'avant l'ajout dans la table inscrit, on parcourt la table inscrit et que si la valeur a insérer se trouve dans le champs mot de passe, alors on quitte le trigger, sinon on effectue l'ajout =)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE TRIGGER AJOUT  BEFORE INSERT ON inscrit
     
    BEGIN
     
    DECLARE temp varchar(20);
    DECLARE curs CURSOR FOR select motdepasse from inscrit;
    FETCH curs INTO temp 
    if (temp <> New.motdepasse) THEN
    LEAVE ;
    END IF ;
    END $$
    Voila, mon délimiteur est $$

    Mon message d'erreur est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #1064 - Erreur de syntaxe près de 'BEGIN DECLARE temp varchar(20); DECLARE curs CURSOR FOR select motdepasse fr' à la ligne 3
    Si quelqu'un peut m'éclairer la dessu ca serait cool =)

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 815
    Billets dans le blog
    14
    Par défaut
    Il manque FOR EACH ROW avant le BEGIN je pense.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 10
    Par défaut
    Merci Cinéphil =) maintenant ca bloque à la ligne 9 oO :

    requête SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #1064 - Erreur de syntaxe près de '; end if ; END §§' à la ligne 9

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 10
    Par défaut
    J'ai beau remuer dans tous les sens ce trigger je n'y arrive pas....

  5. #5
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    il manque un ; à la fin de ton fetch...

    tu ne fais pas de boucle avec ton curseur... ça revient à faire:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT motdepasse into temp FROM inscrit limit 1;

    en plus, comment garantir que lis la bonne ligne avec ton select? il n'y a qu'un seul inscrit?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 10
    Par défaut
    Merci de ton intérêt pour mon post,je pensais que le fetch permettait de parcourir mon curseur... j'ai rajouté un ; aprés le fetch, maintenant ca bloque à la ligne 9

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #1064 - Erreur de syntaxe près de '; end if; END' à la ligne 9
    je vais chercher comment parcourir un curseur oO

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 10
    Par défaut
    Aprés des petites recherches;, j'arrive à ce code suivant, et encore une fois ca bloque dans le bloc if end if .....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    CREATE TRIGGER AJOUT  BEFORE INSERT ON inscrit
    FOR EACH ROW
    BEGIN
     
    DECLARE temp varchar(20);
    DECLARE curs CURSOR FOR select motdepasse from inscrit;
    open curs;
    loop
    FETCH curs INTO temp; 
    if (temp = New.motdepasse) THEN // g modifé <> en = 
    LEAVE ;
    end if;
    end loop;
    Close curs;
    END $$
    Message d'érreur .... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1064 - Erreur de syntaxe près de '; end if; end loop; Close curs; END' à la ligne 11
    Ne faut il pas plutot boucler avec genre un while curseur n'est pas vide?

    Désolé c'est mon premier trigger oO Dépucelage :p

Discussions similaires

  1. [PHP5.2][MySQL5.0.27] Creation de triggers depuis PHP
    Par frochard dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 05/12/2006, 10h16
  2. [PHP-JS] admin console login et mot de passe
    Par kitty2006 dans le forum Langage
    Réponses: 18
    Dernier message: 03/10/2006, 23h20
  3. Réponses: 4
    Dernier message: 11/08/2006, 13h43
  4. agenda dans flash administrable par admin php
    Par cosmicgab dans le forum Dynamique
    Réponses: 4
    Dernier message: 04/05/2006, 22h01
  5. [Sécurité] sécurité admin avec PHP
    Par carter15_2001 dans le forum Langage
    Réponses: 3
    Dernier message: 04/01/2006, 02h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo