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 :

recupérer la plus grande valeur dans une bdd


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant process engineer industrial
    Inscrit en
    Janvier 2010
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant process engineer industrial
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2010
    Messages : 150
    Par défaut recupérer la plus grande valeur dans une bdd
    Bonjour,
    Un petit souci dans mon php

    dans ma base de donnée j'enregistre tout les numéros de facture généré,
    afin de générer une nouvelle facture celui-ci va récupérer le dernier numéro de facture.
    voici comment ce présente met numéro de facture:
    Numéro de fature:
    2012-0001
    2012-0002
    2012-0003
    2012-0004
    2012-0005

    Je veux récupérer le dernier numéro de facture lui donnée une valeur +1 pour que ma nouvel facture soit en claire 2012-0006

    pour cela voici ce que je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $query = "select numfacture from facture order by numfacture DESC limit 1";
    	$result = mysql_query($query) or die ("Exécution de la requête impossible");
    	$maxnumfacture = mysql_result ($result,0)+1;
    avant j'utilisais un nombre entier aujourd'hui j'ai changer ma façon de générer met numéros de facture, le problème et présent depuis que j'ai ajouté un - dans mon numéro de facture .

    Cordialement

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select max(numfacture) as numMax from facture
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant process engineer industrial
    Inscrit en
    Janvier 2010
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant process engineer industrial
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2010
    Messages : 150
    Par défaut
    ton code permet de récupérer le dernier enregistrement il me semble !? et agi simplement sur une valeur numérique entier, en occurrence la j'ai un tiret dans le numéro de ma facture..

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Par défaut
    Quelque chose de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    list($pat1, $part2) = split('-', mysql_result ($result,0));
    $part2++;
    $maxnumfacture = $part1."-".$part2;

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant process engineer industrial
    Inscrit en
    Janvier 2010
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant process engineer industrial
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2010
    Messages : 150
    Par défaut
    nsanabi

    ça résolue pas le problème ce que tu propose, le problème de base il est a la sélection dans la base de donnée... ça ne veux sélectionné le plus grand..

    merci tout de même de ton intervention.

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par djo007 Voir le message
    ton code permet de récupérer le dernier enregistrement il me semble
    Pas du tout, dans une base de données c'est une erreur que de parler de dernier enregistrement. A vrai dire la notion de premier, dernier ou milieu n'existe pas. Il n'y a pas de position à moins que tu n'utilises un champs spécifique porteur de cette information qui reste, somme toute, très très relative.

    Citation Envoyé par djo007 Voir le message
    et agi simplement sur une valeur numérique entier, en occurrence la j'ai un tiret dans le numéro de ma facture..
    Encore raté
    MAX() se contente des deux formats : numérique ou texte. Donc le code donné par Bovino répond parfaitement à ton problème. Essayes-le et tu verras. Regardes ici

  7. #7
    Membre confirmé
    Homme Profil pro
    Consultant process engineer industrial
    Inscrit en
    Janvier 2010
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant process engineer industrial
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2010
    Messages : 150
    Par défaut
    salut rawsrc

    J'ai essayé ce que Bovino ma proposé, le problèmes c'est que ça affiche les 4 premier chiffre donc ça s'arrete au tiret et sa ajoute +1

    pourquoi récupère t-il seulement les 4 premiers chiffres...

    dans ma table j'ai bien met

    2012-0001
    2012-0002
    2012-0003
    2012-0004
    2012-0005

    donc du coup dans ma variable il enregistre que le 2012 et y ajoute +1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $query = "SELECT max(numfacture) AS numMax FROM facture";
    	$result = mysql_query($query) or die ("Exécution de la requête impossible");
    	$maxnumfacture = mysql_result ($result,0)+1;

  8. #8
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Euh, c'est tout à fait normal.
    Tu récupère un string avec le sql.
    '2012-0001' n'est pas un nombre valide, tu ne peux pas lui faire un +1.
    D'où le tronquage au premier caractère non numérique rencontré.
    Gardes le code de Bovino et essayes avec le code de nsanabi

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

Discussions similaires

  1. [10g] Afficher la plus grande valeur dans une requête
    Par alexis trotta dans le forum SQL
    Réponses: 6
    Dernier message: 14/03/2014, 14h54
  2. Récupérer la 2ème plus grande valeur dans une variable
    Par lyonnaisdu26 dans le forum QlikView
    Réponses: 3
    Dernier message: 12/03/2012, 13h58
  3. cherche la plus grande valeur dans une matrice
    Par thtghgh dans le forum MATLAB
    Réponses: 9
    Dernier message: 28/12/2009, 19h35
  4. pb pour rentrer une valeur dans une bdd mysql
    Par gaetan.tranvouez dans le forum Requêtes
    Réponses: 25
    Dernier message: 02/06/2006, 21h29
  5. Probleme pour insérer une valeur dans une bdd
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 30/05/2006, 10h58

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