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 :

Incrémentation de numéro réference commande


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
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Par défaut Incrémentation de numéro réference commande
    Bonjour

    Je possède une base mysql avec une table comportant un id, un nom, un prix et un numeroRef sous cette forme "OS000001, OS000002, OS00003 etc.."
    J'aimerais faire en sorte qu'à chaque fois que je valide une facture via mon form et mon button submit qu'une facture soit créer avec ce numeroRef incrémenté à chaque nouvelle facture.
    J'arrive bien à créer ma facture mais toutefois je n'arrive pas à incrémenter mon numeroRef à chaque nouvelle facture, il reste toujours OS000001.

    voici 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
     public function create()
         {
            include 'connexion.php';
            $dbValue = 1; 
             try 
                {   
     
                    $dbValue = "OS".str_pad($dbValue, 6, "0", STR_PAD_LEFT);
                    $req = "INSERT INTO Facture (id, nom, prix, numeroRef) VALUES (NULL, ?, ?, ?)";
                    $stmt = $pdo->prepare($req);
                    $params = [$this->_nom, $this->_prix, $dbValue];
     
                    $stmt->execute($params);
                    $dbValue++;
                }
                 catch(Exception $e){print "Erreur ! ".$e->getMessage()."<br/>";}
     
         }
    Je comprends bien qu'a chaque fois que j'appelle ma fonction dbvalue sera réinitialiser à 1 malgré mon $dbvalue++.
    Comment pourrais-je y remedier ? Que ce soit en php ou alors d'une autre manière (JS, SQL etc..)
    Merci !

  2. #2
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Bonjour,

    Pour ne pas s'embêter, pourquoi ne pas utiliser les champs auto-incrémentés ?
    https://mysql.developpez.com/faq/?pa...to-incrementes

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Par défaut
    Citation Envoyé par vttman Voir le message
    Bonjour,

    Pour ne pas s'embêter, pourquoi ne pas utiliser les champs auto-incrémentés ?
    https://mysql.developpez.com/faq/?pa...to-incrementes
    Bonjour et merci de ta réponse,

    Le problème est que mon id est déjà un champ autoincrémenté et donc impossible d'en avoir 2 dans la même table.
    L'autre probèlem est au sujet de la forme de référence. J'aimerais qu'il reste sous la même forme ou dans une forme différente (OS00001 ou 000001)

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Bonjour,

    Je pense que sur ce genre de questions, c'est peut-être plus simple de faire ça en SQL et de passer par une vue.
    Je m'explique, tu dis que ta table facture est faite ainsi
    facture (id, nom, prix, numeroRef)

    Si tu n'as absolument rien d'autre, pas de clé étrangère et compagnie, tu peux faire ainsi

    facture( id, nom, prix, saisi_le)
    saisi_le étant un timestamp (jusqu'à la micro seconde)

    Ensuite tu peux par une vue te construire ton numero de ref
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    create or replace view v_factures as 
    select concat('OS',LPAD(id, 6, '0')) as num_ref, nom, prix, saisi_le as saisi_le_en, date_format(saisi_le, "%d/%m/%Y %H:%i:%s") as saisi_le
    from facture;

    Ensuite, tu n'auras plus qu'à faire en mode lecture select * from v_factures where num_ref="OS000548";ou
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select * from v_factures 
    order by saisi_le_en desc;

    En mode écriture, par contre, c'est dans ta table directe, pas dans ta vue.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into facture values(NULL, "Charles Dupont", 854, now() );
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

Discussions similaires

  1. incrémenter le numéro de l'objet
    Par lesafir dans le forum Langage
    Réponses: 5
    Dernier message: 07/06/2007, 15h41
  2. [MySQL] Nomenclature pour générer un numéro de commande
    Par wjc dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/05/2007, 23h26
  3. Incrémentation du numéro de version (dll et exe) en C
    Par biglolo dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 07/02/2007, 18h09
  4. [D6] Incrémenter le numéro de version
    Par Lung dans le forum EDI
    Réponses: 3
    Dernier message: 08/08/2005, 10h12
  5. [CR8.5] le plus petit numéro de commande
    Par Damien69 dans le forum Formules
    Réponses: 3
    Dernier message: 26/05/2004, 10h35

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