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 :

auto incrémentation de variable [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Par défaut auto incrémentation de variable
    bonjour je suis face a un problème que je n'arrive pas a résoudre. Je vais essayer d’être le plus clair possible dans mon explication

    (ma base est faite sur phpMyAdmin)

    je dispose d'une table CODIFICATION (NATURE, CODE , LIBELLE) et je fais saisir a un utilisateur via un formulaire une NATURE et un LIBELLE. Suite a cela je dois ajouter via une requête UPDATE ses 2 information a ma table et le CODE dois s'incrémenter en fonction de NATURE .

    exemple de ce que ça doit faire:

    NATURE | CODE | LIBELLE
    ------------------------------
    médecin | 1 | chirurgien
    médecin | 2 | cardiologue
    employer prod | 1 | chef de projet
    commercial | 1 | representant (nom de l'entreprise)
    commercial | 2 | representant (nom d'une autre entreprise)

    et si je ne me trompe pas en mettant auto incrémente pour l'attribut CODE même si la nature est différente il incrémente systématiquement CODE non?

    je vous remercie d'avance pour les éventuelles solution

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Billets dans le blog
    1
    Par défaut
    (ma base est faite sur phpMyAdmin)
    phpMyAdmin n'est qu'un outil, ta base de données est sous le SGBD MySQL en réalité.

    L'autoincrémente incrémentera systématiquement ton code oui, indépendamment des autres champs !
    Pour faire ce que tu veux, il te faut d'abord récupérer le nombre maximum d'élément que tu as en base (avec une requête de type SELECT MAX(CODE) FROM ... WHERE NATURE = MA_Nature) et l'incrémenter avant l'insertion en base.
    Tu peux très bien le faire en PHP au moment de l'insertion (ou via une sous requête, mais c'est déjà plus compliqué et pas forcément plus optimisé)
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Par défaut
    oui désoler j'aurai du dire que c'était sous MySQL mais je voulais préciser l'outil pour au cas ou il y est un paramètre qui me permette de gérer ça sans bidouiller en php .

    Donc si j'ai bien compris je laisse mon champ CODE en int et dans le code php je récupère ça valeur max en fonction de NATURE pour l'incrémenter manuellement et faire mon INSERT après (je viens de me rendre compte que j'ai mis UPDATE dans mon premier post désoler).

    il n'y a pas d'autre moyen plus optimiser pour faire cela? (du genre mysql_fetch_object ou autre chose?)

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Billets dans le blog
    1
    Par défaut
    Tu peux attendre d'avoir d'autres réponses, sait-on jamais, il y a peut être une méthode plus simple à laquelle je n'ai pas pensé, mais je n'en vois que deux pour le moment :
    - celle que tu décris, en PHP
    - le passage par une sous-requête, qui ne fonctionne de mémoire que sur les versions les plus récentes de MySQL (à confirmer).
    Ça consisterai à modifier ta requête SQL d'insertion pour avoir quelque chose qui ressemblerai à :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO `codification`(NATURE, COUNT)
    VALUES (:NATURE, (SELECT MAX(COUNT)+1 FROM `codification` WHERE NATURE = :NATURE))
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Par défaut
    ok merci je vais faire comme ça on verra bien ^^

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    La vraie question est je pense : pourquoi veux-tu faire ça ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Variable auto incrément
    Par kroma23 dans le forum InterBase
    Réponses: 1
    Dernier message: 01/11/2013, 14h35
  2. variable auto-incrémentées mois +1
    Par PAYASS59 dans le forum PL/SQL
    Réponses: 3
    Dernier message: 01/03/2011, 14h44
  3. [CODE] auto incrémentation ?
    Par Roi dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 25/09/2003, 15h09
  4. [débutant][xsl]incrémenter une variable
    Par guitalca dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 01/04/2003, 15h19
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

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