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

PHP & Base de données Discussion :

generer matricule automatique pour etudiant [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Par défaut generer matricule automatique pour etudiant
    bonjour, je développe une application d'inscriptions des étudiants, pour cela je veux attribuer pour chaque étudiant un matricule mais je ne sais pas comment générer ce matricule, j ai pensé a utiliser la fonction random() mais
    cela m'arrange pas car j'aurai une génération aléatoire et peut être même qu'il y aura des doublons, je veux avoir ceci par exemple AB1000,AB1001,AB1002 ainsi de suite c'est à dire ça s incrémente.

    merci d'avance de votre aide .

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    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 818
    Billets dans le blog
    14
    Par défaut
    Si ton code commence toujours par deux lettres puis est toujours suivi d'un nombre, tu extrais les (longueur du code - 2) caractères, tu convertis la chaîne de chiffres obtenue en entier, tu cherches le max entier, tu y ajoutes 1, tu concatènes avec les lettres du début du code.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CONCAT('AB', MAX(CAST(RIGHT(code, LENGTH(code) - 2) AS UNSIGNED)) + 1) AS nouveau_code
    FROM etudiant
    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 éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Par défaut
    merci de ton aide , mais j ai pas compris plus de précisément sur l enregistrement du matricule dans la base de données merci d'avance

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    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 818
    Billets dans le blog
    14
    Par défaut
    En fait, je pense que ma requête ne fonctionne pas comme ça directement mais c'était pour traduire un peu en SQL ce que j'avais écrit en français.

    Dans ta requête d'insertion d'un nouvel étudiant, pour lui affecter son matricule, il faut que tu utilises une requête de ce genre mais comme tu travailles directement sur la table dans laquelle tu vas insérer l'étudiant, il faut passer, avec le mauvais MySQL, par une table temporaire, ou peut-être par une vue.

    Pas le temps de développer ça maintenant.
    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 !

  5. #5
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    ben il te faut un générateur de sequence pour compter les élèves (genre une clé primaire en autoint /mysql) ou une sequence directement en oracle et les deux lettres sont pseudo constante.

    moi j'utiliserai une clé artificielle comme clée primaire en autoint qui par construction s'incrémente de 1 à chaque élève donc tant que pas d'effacement = pas de troux et qui est utilisé dans un second temps pour la construction du matricule avec le formatage qui va bien pour avoir une forme en AB000293 si désiré. ( AB+ clé primaire ).

    yep ça fait 2 clé uniques dans la table mais abondance de bien ne nuit pas (enfin ce n'est que mon avis). C'est un algo qui tourne 2 fois par an mais avec 10 secretaires en parallele max, non ? te fatigue pas trop alors.

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Par défaut
    Citation Envoyé par gene69 Voir le message
    ben il te faut un générateur de sequence pour compter les élèves (genre une clé primaire en autoint /mysql) ou une sequence directement en oracle et les deux lettres sont pseudo constante.

    moi j'utiliserai une clé artificielle comme clée primaire en autoint qui par construction s'incrémente de 1 à chaque élève donc tant que pas d'effacement = pas de troux et qui est utilisé dans un second temps pour la construction du matricule avec le formatage qui va bien pour avoir une forme en AB000293 si désiré. ( AB+ clé primaire ).

    yep ça fait 2 clé uniques dans la table mais abondance de bien ne nuit pas (enfin ce n'est que mon avis). C'est un algo qui tourne 2 fois par an mais avec 10 secretaires en parallele max, non ? te fatigue pas trop alors.

    merci bien, mais comment je vais combiner la clé primaire et la chaine AB pour former la matricule merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/04/2012, 14h04
  2. Réponses: 3
    Dernier message: 25/01/2006, 17h54
  3. [VB.NET] ScrollBar automatique pour Listbox
    Par Aspic dans le forum VB.NET
    Réponses: 6
    Dernier message: 19/12/2005, 13h58
  4. Defilement automatique pour un diaporama
    Par Paniez dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 11/12/2005, 10h26
  5. Generer un script pour une BDD "*.sql"+"*.bat
    Par subzero82 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/08/2005, 16h47

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