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

Requêtes MySQL Discussion :

SELECT avec MYSQL


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 21
    Par défaut SELECT avec MYSQL
    Bonjour à tous,

    Voilà, j'ai créé un fichier clinetèle pour l'activité de ma femme.
    Tout est nickel mais je cale sur un détail.

    Quand je clique sur le nom d'un client, on arrive sur son profile et sa fiche personnelle s'affiche.

    Sous la fiche, j'ai créé un div où je veux afficher la dernière commande que ce client a fait mais je veux garder toutes les commandes dans la tables pour afficher sur une autre page toutes les commandes qu'un client x a passé depuis ses débuts.

    Voici la structure de ma table "commande" :

    id (auto - clé)
    id_client (doit correspondre à l'id de la table clients)
    nom1 (varchar)
    prix1 (varchar)
    quantite1 (varchar)
    date (date)

    Pour une commande, j'introduis chaque fois le produit + date 0000-00-00, ce qui permet de relier tous les produits d'une même commande grâce à la date.

    Donc, on fur et à mesure, la table se rempli pour les différents clients et la date évolue grâce aux nouvelles commandes.

    Ce que j'aimerais, c'est afficher uniquement la dernière commande.

    Voici ma requête :

    $requete = 'SELECT * FROM commande WHERE id_client="'.$_GET['id'].'" ORDER BY date DESC';

    Quand je fais cela, il m'affiche toutes les commandes en ordre de passage.
    J'ai essayé avec LIMIT 1 mais à ce moment là, il ne m'affiche que la premiere ligne de la table.

    Je suis perdu.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 124
    Par défaut
    Essaie peut-être quelque chose comme:
    SELECT * FROM commande
    WHERE id_client="'.$_GET['id'].'" AND date = (SELECT max(date) FROM commande WHERE id_client="'.$_GET['id'].'")

  3. #3
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Salut !

    le problème vient du fait que tu ne disocie pas une commande de son contenu...

    le plus logique serait de faire :
    une table commande :
    id (auto - clé)
    id_client (doit correspondre à l'id de la table clients)
    date (date)

    une table ligne de commande :
    id (auto - clé)
    id_commande (doit correspondre à l'id de la table commande)
    nom1 (varchar)
    prix1 (varchar)
    quantite1 (varchar)

    comme ça ça serait déjà plus cohérent...

    Bon, évidemment, ça ne résout pas ton problème...

    pour le résoudre avec une seule et unique requête, il te faut une sous-requête, ceci ne sera possible que pour MySQL >= 4.1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT *
    FROM commande
    WHERE
       id_client=@id_client
       AND date = (
          SELECT MAX(date)
          FROM commande
          WHERE id_client=@id_clident
       )
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 21
    Par défaut
    Voila une partie du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $requete = 'SELECT * FROM commande WHERE id_client="'.$_GET['id'].'" AND date = (SELECT max(date) FROM commande WHERE id_client="'.$_GET['id'].'")';
            $result = mysql_query($requete);
            $nb = mysql_num_rows($result);
    et voilà l'erreur qu'il affiche :

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/microf/public_html/clients/profile.php on line 253



  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 124
    Par défaut
    Tu as entouré l'id par des guillements, y'a pas besoin. Ca doit être une cause de l'erreur. Les guillements ne sont pas nécessaires pour les nombres mais juste pour les chaines et dates.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 21
    Par défaut
    ca ne change rien les '

  7. #7
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query(...) or die(mysql_error());
    J'ai bien précisé qu'il te fallait une version de MySQL >= 4.1 tu es sûr que c'est le cas ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

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

Discussions similaires

  1. [MySQL] [MySQL] Select avec WHERE sur un champs d'une autre table ?
    Par danydan01 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 06/05/2011, 16h05
  2. [MySQL]Requête select avec double classement
    Par GyZmoO dans le forum Requêtes
    Réponses: 8
    Dernier message: 09/10/2009, 11h01
  3. Problème avec select sous MYSQL
    Par Thomad dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/01/2006, 11h26
  4. pb de select avec size avec choix multiple
    Par La_picolle dans le forum ASP
    Réponses: 10
    Dernier message: 28/08/2003, 15h21
  5. requete SELECT avec un nombre constant
    Par gurumeditation dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/07/2003, 20h04

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