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 :

Limiter l'insertion par apport à une équipe


Sujet :

SQL Procédural MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2013
    Messages : 174
    Points : 51
    Points
    51
    Par défaut Limiter l'insertion par apport à une équipe
    Bonjour ,

    J'ai une table inscris_course , je veut que pour une équipe 'X' les insertions soit limiter en 7 membres inscris dans cette équipe , j'ai mis la column equipe_inscris en unique .

    La structure de ma table et merci

    Nom : zedfezf.JPG
Affichages : 239
Taille : 87,0 Ko

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut zikyoubi .

    Pour résoudre votre problème, vous devez ajouter une colonne qui va numéroter chaque membre d'une équipe donnée.
    Ainsi il suffit de tester dans la table et pour une équipe donnée, si cette colonne atteint ou pas la valeur 7.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2013
    Messages : 174
    Points : 51
    Points
    51
    Par défaut
    Bonjour ,

    Alors du coup je vais simplifier les choses , je viens d'écrire un script qui permet de retourner le nombres d'inscris pour l'équipe saisis (car je veut faire le traitement via une page de connexion) , mais je ne sais pas si ça marche bien avec ça :

    mon code :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <?php
    *
    //Connexion à la base de donnée
    ...
    *
    $equipe = $_POST['equipe'];
    *
    $mdp = $_POST['mdp'];
    *
    $num_lignes = mysql_query("select count(*) from inscris where equipe_inscris = '$equipe' ");
    *
    if($num_lignes==7){
    *****
    *****
    ****echo 'Vous ne pouvez plus ajouter un membre à votre équipe(Limit 7 membres)';
    *****
    }else{
    *****
    ****if(isset('$equipe') && isset('$mdp')){
    *****
    ****//traitement de la requete de connexion
    *****
    ****//Redirection au formulaire d'ajout du membre
    *****
    *****
    }else{
    *****
    ****echo 'Les identifiants de connexion sont incorrectes';
    *****
    *****
    }
    *
    }
    *
    ?>

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut zikyoubi.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
        DEFAULT CHARACTER SET `latin1`
        DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    CREATE TABLE `test`
    ( `id`       integer unsigned  not null auto_increment primary key,
      `rang`     tinyint unsigned  not null,
      `membre`   varchar(255)      not null,
      `equipe`   varchar(255)      not null
     ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    DROP TRIGGER IF EXISTS `increment`
    --------------
     
    --------------
    CREATE TRIGGER `increment`
    BEFORE INSERT ON `test`
    FOR EACH ROW BEGIN
      DECLARE _msg  varchar(255);
     
      SET NEW.rang=ifnull((select max(rang)+1 from `test` where equipe=NEW.equipe),1);
     
      IF (new.rang > 7) then
         set _msg = concat('Insertion interdite, vous avez déjà sept membres pour "', NEW.equipe, '" !');
         SIGNAL SQLSTATE VALUE '07777' SET MESSAGE_TEXT = _msg, MYSQL_ERRNO = 7777;
      END IF;
    END
    --------------
     
    --------------
    insert into   `test` (`membre`,`equipe`) values  ('alpha',   'equipe 1')
    --------------
     
    --------------
    insert into   `test` (`membre`,`equipe`) values  ('beta',    'equipe 2')
    --------------
     
    --------------
    insert into   `test` (`membre`,`equipe`) values  ('gamma',   'equipe 1')
    --------------
     
    --------------
    insert into   `test` (`membre`,`equipe`) values  ('delta',   'equipe 1')
    --------------
     
    --------------
    insert into   `test` (`membre`,`equipe`) values  ('epsilon', 'equipe 2')
    --------------
     
    --------------
    insert into   `test` (`membre`,`equipe`) values  ('dzeta',   'equipe 2')
    --------------
     
    --------------
    insert into   `test` (`membre`,`equipe`) values  ('eta',     'equipe 1')
    --------------
     
    --------------
    insert into   `test` (`membre`,`equipe`) values  ('theta',   'equipe 2')
    --------------
     
    --------------
    insert into   `test` (`membre`,`equipe`) values  ('iota',    'equipe 1')
    --------------
     
    --------------
    insert into   `test` (`membre`,`equipe`) values  ('kappa',   'equipe 1')
    --------------
     
    --------------
    insert into   `test` (`membre`,`equipe`) values  ('lambda',  'equipe 2')
    --------------
     
    --------------
    insert into   `test` (`membre`,`equipe`) values  ('mu',      'equipe 2')
    --------------
     
    --------------
    insert into   `test` (`membre`,`equipe`) values  ('nu',      'equipe 1')
    --------------
     
    --------------
    insert into   `test` (`membre`,`equipe`) values  ('ksi',     'equipe 1')
    --------------
     
    ERROR 7777 (07777) at line 69: Insertion interdite, vous avez déjà sept membres pour "equipe 1" !
    --------------
    insert into   `test` (`membre`,`equipe`) values  ('omicron', 'equipe 2')
    --------------
     
    --------------
    insert into   `test` (`membre`,`equipe`) values  ('pi',      'equipe 2')
    --------------
     
    ERROR 7777 (07777) at line 71: Insertion interdite, vous avez déjà sept membres pour "equipe 2" !
    --------------
    select * from `test` order by equipe, rang
    --------------
     
    +----+------+---------+----------+
    | id | rang | membre  | equipe   |
    +----+------+---------+----------+
    |  1 |    1 | alpha   | equipe 1 |
    |  3 |    2 | gamma   | equipe 1 |
    |  4 |    3 | delta   | equipe 1 |
    |  7 |    4 | eta     | equipe 1 |
    |  9 |    5 | iota    | equipe 1 |
    | 10 |    6 | kappa   | equipe 1 |
    | 13 |    7 | nu      | equipe 1 |
    |  2 |    1 | beta    | equipe 2 |
    |  5 |    2 | epsilon | equipe 2 |
    |  6 |    3 | dzeta   | equipe 2 |
    |  8 |    4 | theta   | equipe 2 |
    | 11 |    5 | lambda  | equipe 2 |
    | 12 |    6 | mu      | equipe 2 |
    | 14 |    7 | omicron | equipe 2 |
    +----+------+---------+----------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
    Appuyez sur une touche pour continuer...
    A vous de tester le code retour après chaque insertion !

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/11/2007, 18h51
  2. [INSERT / UPDATE] Remplacer une valeur vide par NULL
    Par jissay dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 28/09/2006, 14h15
  3. Insertion par étape dans une base
    Par dunbar dans le forum Requêtes
    Réponses: 14
    Dernier message: 29/06/2006, 15h50
  4. comment faire insertion par une transaction sous access
    Par iam dans le forum Bases de données
    Réponses: 1
    Dernier message: 26/04/2006, 14h34
  5. [Conception] Limiter l'insertion à une occurence
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 16/03/2006, 12h50

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