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 :

Afficher qu'un fois une donnée [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Points : 92
    Points
    92
    Par défaut Afficher qu'un fois une donnée
    Bonjour,

    Je dois développer un listing pour des commandes. Chaque listing se lit par laboratoire (pâtisserie, boulangerie, charcuterie etc...) et ensuite par section (adultes, bac pro, BEP...) Pour parler concrètement, voici un exemple:

    Labo Boulangerie
    ---------------------------
    Section Adultes
    Oeuf 15 unités
    Farine 3 kilos
    Chocolat 5 kilos

    Bac pro
    Brioche 3 kilos
    Chocolat 5 kilos
    etc...

    Maintenant, voici la composition de la table 'commandes':
    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
    19
    CREATE TABLE `commandes` (
      `idCom` int(4) NOT NULL auto_increment,
      `designation` text collate utf8_unicode_ci NOT NULL,
      `quantite` decimal(10,0) NOT NULL,
      `section` text collate utf8_unicode_ci NOT NULL,
      `idUser` int(2) NOT NULL,
      PRIMARY KEY  (`idCom`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=10 ;
     
    -- Contenu de la table `commandes`
     
    INSERT INTO `commandes` (`idCom`, `designation`, `quantite`, `section`, `idUser`) VALUES
    (1, 'Julienne de légumes', 3, 'Adultes', 1),
    (2, 'Côte de porc', 5, 'Bac Pro', 1),
    (3, 'faux-filet', 8, 'BEP', 1),
    (6, 'Côte de porc', 3, 'Adultes', 5),
    (7, 'Cuisse de volaille', 8, 'BP', 5),
    (8, 'Cuisse de volaille', 5, 'BEP', 1),
    (9, 'Opéra', 5, 'BP', 5);
    On voit très clairement que j'ai des sections qui reviennent plusieurs fois dans cette table, et ceux pour un même idUser (qui correspond au laboratoire en fait) BEP pour idUser=1 par exemple.
    Comment, pour respecter la mise en page de mon listing ci-dessus, je peux afficher qu'une seule fois la section, mais dérouler l'ensemble des produits (designation dans la table) s'y rattachant ?
    J'ai fais une requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM commandes WHERE idUser=1 ORDER BY section ASC
    Puis ensuite une boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while($data = mysql_fetch_array($requete)) {
        echo $data['section'].'<br>';
        echo $data['designation'].' '.$data['quantite'].'<br>';
    }
    Mais j'ai une redite des informations sur les sections... Comment effacer les doublons ?
    merci,

  2. #2
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 465
    Points : 4 650
    Points
    4 650
    Par défaut
    Salut,
    un distinct fera l'affaire je penses
    select distinct ....
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Points : 92
    Points
    92
    Par défaut re:
    Pas vraiment Demmotte. 'Distinct' supprime bien les doublons, mais sur l'ensemble des données récoltées par la requête... Hors, je ne vise que les sections...

  4. #4
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Bonjour !

    un GROUP BY Section dans ta requete?

    Sinon je te renvoi ici:

    http://www.developpez.net/forums/d68...accueil-forum/

    C'est le même souci
    ►Ne pas oublier le

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Points : 92
    Points
    92
    Par défaut re:
    Bonjour Obito,

    Ton script m'avance pas mal, un fois remanié pour ma sauce, et m'affiche bien les données tel que je le voudrais...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while ($i < $nbRec){
    	$section = mysql_result($requete, $i, "section");
      	echo $section.'<br>';
      	while ($section == mysql_result($requete, $i, "section")){
        	$produits = mysql_result($requete, $i, "designation");
        	echo $produits.'<br>';
       		$i++;
     	}
    }
    mais le serveur me renvoie aussi ce message d'erreur:
    Warning: mysql_result() [function.mysql-result]: Unable to jump to row 4 on MySQL result index 4 in C:\Program Files\wamp\www...
    merci,

  6. #6
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Il te manque une incrémentation je crois:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    while ($i < $nbRec){
    	$section = mysql_result($requete, $i, "section");
      	echo $section.'<br>';
      	while ($section == mysql_result($requete, $i, "section")){
        	$produits = mysql_result($requete, $i, "designation");
        	echo $produits.'<br>';
       		$i++;
     	}
          $i++;
    }
    Il faut aussi augmenter de 1 après le 2eme while^^
    ►Ne pas oublier le

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Points : 92
    Points
    92
    Par défaut re:
    merci Obito...
    Mais j'ai fini par écrire un code encore plus simple peut-être (mais qui, sur le principe, ressemble beaucoup au tien):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $section='';
    while($data = mysql_fetch_array($requete)){
    	if($section != $data['section']){
              $section = $data['section'];
              echo $section.'<br>';
    	} //fin de si
    	echo $data['designation'].' '.$data['quantite'].' '.$data['conditionnement'].'<br>';
    }

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

Discussions similaires

  1. saisir une seule fois une donnée pour plusieurs enregistrements
    Par yulalienor dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 29/06/2010, 18h38
  2. [MySQL] Comment afficher le résultat d'une données mysql dans une table html ?
    Par Alexandrebox dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/03/2010, 22h44
  3. [MySQL] afficher une seule fois les données redondantes
    Par ginger4957 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 20/05/2009, 16h04
  4. Compter une seule fois une donnée
    Par lodan dans le forum Requêtes
    Réponses: 6
    Dernier message: 21/07/2007, 19h26
  5. Réponses: 4
    Dernier message: 29/11/2004, 16h51

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