Afficher qu'un fois une donnée...

Eléphant du PHP | 226 Messages

11 févr. 2009, 13:08

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 : Tout sélectionner

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 : Tout sélectionner

SELECT * FROM commandes WHERE idUser=1 ORDER BY section ASC
Puis ensuite une boucle:
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,
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.

Eléphant du PHP | 447 Messages

11 févr. 2009, 13:48

Hello,

regarde du côté de la fonction array_unique :

http://fr.php.net/manual/fr/function.array-unique.php
Probably (only a) Human Problem?

Eléphant du PHP | 226 Messages

11 févr. 2009, 15:41

merci Stef,

Mais force de constater que je ne vois pas trop comment l'employer cette fonction... Si je fais
while($data = mysql_fetch_array($requete)) {
	echo $section = array_unique($data['section']).'<br>';
}
je lis
Warning: array_unique() [function.array-unique]: The argument should be an array in C:\Program Files\wamp\www\...
Ce que je ne comprends pas trop par ailleurs car $data['section'] est bien un tableau...
merci,
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.

Eléphant du PHP | 447 Messages

11 févr. 2009, 17:24

hum, à mon avis $data['section'] c'est pas un tableau, c'est normal que tu ais cette erreur, par contre

$section = array_unique($data) devrait être ok....

test et dis moi!
Probably (only a) Human Problem?

Eléphant du PHP | 226 Messages

11 févr. 2009, 18:13

Voici ce cela donne:
Array
Julienne de légumes
Array
Côte de porc
Array
faux-filet
...
Il y a encore un problème apparemment...
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.

Eléphant du PHP | 447 Messages

11 févr. 2009, 18:16

Ça c'est quand tu fais un echo?


bon, alors il doit y avoir un autre traitement a effectuer sur ton tableau, en amont ou en aval, je ne saurais te dire... ou alors une autre façon d'utiliser ton tableau...

mais bon ça progresse quand même, non?! :D
Probably (only a) Human Problem?