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 :

recuperation de l'id max [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 53
    Par défaut recuperation de l'id max
    Bonjour à tous.

    Je suis actuellement en train de développer un logiciel de gestion de stocks pour un parc automobile et je rencontre actuellement une difficulté concernant une requête MySQL.

    Je désire récupérer les informations concernant le bon de commande ayant le plus grand id.

    Voila donc mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req_bon = mysql_query("SELECT * FROM gvo_bons_commande WHERE id = (SELECT MAX(id) FROM gvo_bons_commande)");
    Cette requête ne fonctionne pas, donc si qqn connait le problème...

    Merci d'avance

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $id_max = 0;
    $req = "SELECT MAX(id) FROM gvo_bons_commande";
    $q = mysql_query($req);
    if (mysql_num_rows($q) > 0) {
       $id_max = mysql_result($q, 0);
    }

    Si $id_max = 0 c'est qu'il n'y a pas de bon de commande, sinon il aura la valeur du plus grand id


    EDIT :
    Pour récupérer toutes les valeurs en une seule requete :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req = "SELECT * FROM gvo_bons_commande ORDER BY id DESC LIMIT 1";
    $q = mysql_query($req);
    if (mysql_num_rows($q) > 0) {
       $bon = mysql_fetch_assoc($q);
    }

    $bon est un array qui contient tous les champs de l'ID le plus élevé

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 53
    Par défaut
    J'arrive bien à récuperer l'id max mais le soucis et de récupérer les informations du bon ayant l'id max.
    Le tout en une seule requête.

  4. #4
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Citation Envoyé par mowegan Voir le message
    J'arrive bien à récuperer l'id max mais le soucis et de récupérer les informations du bon ayant l'id max.
    Le tout en une seule requête.
    (j'ai édit mon post, t'as lu trop vite pour moi ^^ un petit F5 et tout est bon )

    PS : ce message est juste un UP pour que tu vois que j'ai mis une réponse :p

  5. #5
    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
    donc si qqn connait le problème...
    Quel est le problème que tu rencontres d'ailleurs ?
    La syntaxe de ta requete a l'air correct et devrait donc fonctionner.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 53
    Par défaut
    L'erreur qui se produit est :
    You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT MAX(id) FROM gvo_bons_commande) LIMIT 0, 30' at line 1
    La solution de darkstar123456 est tout a fait correcte et fonctionne bien.

    @andry.aime : c'est exactement ca que je veux faire donc je vais tester ta methode.

    Merci à tous.

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,
    Si c'est récupéré les informations sur l'enregistrement que tu viens d'insérer que tu veux, mysql_insert_id retourne la dernière valeur d'un auto_increment durant la session.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_bon = mysql_query("SELECT * FROM gvo_bons_commande WHERE id = ".mysql_insert_id());

  8. #8
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    hmm non mais normalement j'ai donné la solution :s et avec un seul SELECT
    je remet mon code ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $req = "SELECT * FROM gvo_bons_commande ORDER BY id DESC LIMIT 1";
    $q = mysql_query($req);
    if (mysql_num_rows($q) > 0) {
       $bon = mysql_fetch_assoc($q);
       // $bon est maintenant un array() contenant tous les champs et valeurs du MAX(id)
    }
    ?>

  9. #9
    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
    Ca n'explique pas pourquoi sa requete ne fonctionne pas.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Ca n'explique pas pourquoi sa requete ne fonctionne pas.
    Faudrait qu'il fasse un echo de la requête à l'erreur pour être certain de voir ce qu'elle affiche... p-e est-ce une autre requête que celle qu'il a montré

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

Discussions similaires

  1. [MySQL, PostGreSQL] Récupérer les max sur une jointure
    Par genova dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/12/2017, 15h25
  2. Recuperer un champ varbinary(MAX)
    Par Msysteme dans le forum C#
    Réponses: 2
    Dernier message: 19/10/2009, 16h23
  3. recuperer size max d'une JLabel
    Par ferrero dans le forum AWT/Swing
    Réponses: 19
    Dernier message: 17/08/2006, 17h54
  4. recuperer valeur MAX du jour courant
    Par duck54 dans le forum Requêtes
    Réponses: 1
    Dernier message: 31/05/2006, 23h03
  5. [SQL Server] Requete récupérant les 2 max
    Par Franck2mars dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/04/2006, 13h45

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