|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() ![]() Inscription : mars 2003 Messages : 1 043 ![]() |
Bonjour à tous,
Je voudrais récupérer le champ "mots-clefs" d'une table qui comporte une dizaine de lignes. la 1ere comporte: toto, tata, velo, moto la 2eme: roue, rayon, velo, moteur, guidon Ma question: comment ne pas récupérer (ou ne pas afficher) 2 fois "vélo" dans le résultat sachant que DISTINCT et GROUP BY ne fonctionnent pas dans ce cas ? |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Inscription : avril 2003 Messages : 3 286 ![]() |
Montre-nous comment tu utilises DISTINCT
__________________
Tous mes tutoriels Pas de questions techniques par MP ni par e-mail, merci ! Prolog rules! |
|
|
00
|
|
|
#3 | ||
|
Membre confirmé
![]() ![]() Inscription : mars 2003 Messages : 1 043 ![]() |
Code :
|
||
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() ![]() Inscription : avril 2003 Messages : 3 286 ![]() |
Pardon j'avais pas vraiment compris ce que tu voulais faire.
Je ne pense pas que tu puisses faire ça en SQL, il va falloir faire une élimination des doublons en PHP. J'ai pas d'algo optimisé en tête.
__________________
Tous mes tutoriels Pas de questions techniques par MP ni par e-mail, merci ! Prolog rules! |
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() ![]() Inscription : mars 2003 Messages : 1 043 ![]() |
ça fait un moment que je me creuse la tête sans succès avec ce truc qui parait simple...t'aurais pas une piste, tuto vers où je pourrais chercher ?
|
|
|
00
|
|
|
#6 | |
|
Expert Confirmé
![]() ![]() Inscription : avril 2003 Messages : 3 286 ![]() |
Citation:
__________________
Tous mes tutoriels Pas de questions techniques par MP ni par e-mail, merci ! Prolog rules! |
|
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
si tu stockes les deux résultats dans le meme tableau, apres tu fais :
http://fr.php.net/manual/fr/function.array-unique.php voila.
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
00
|
|
|
#8 |
|
Membre confirmé
![]() ![]() Inscription : mars 2003 Messages : 1 043 ![]() |
justement, "parcourir tout pour éliminer les doublons", je vois pas trop comment faire ça en php...ranger les réponses dans un tableau et le parcourir ?
|
|
|
00
|
|
|
#9 | |
|
Expert Confirmé
![]() ![]() Inscription : avril 2003 Messages : 3 286 ![]() |
Citation:
PS Un modèle de base de données digne de ce nom t'aurait fait mettre un mot par champ, dans une seconde table, et une table de correspondance entre les deux... Ouais c'est lourd, mais t'aurais tout fait en SQL !
__________________
Tous mes tutoriels Pas de questions techniques par MP ni par e-mail, merci ! Prolog rules! |
|
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
array_unique supprimes les doublons, tu as vu mon post ?
EDIT : exact Eusebius un petit explode quelque part
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
00
|
|
|
#11 | ||
|
Membre à l'essai
![]() Inscription : septembre 2003 Messages : 79 ![]() |
peut etre aussi qq chose du genre :
Code :
|
||
|
|
00
|
|
|
#12 |
|
Membre confirmé
![]() ![]() Inscription : mars 2003 Messages : 1 043 ![]() |
Merci pour ta suggestion, mais je crains que le SELECT DISTINCT ne fonctionne pas et que je reproduise aussi les doublons dans la table temp...
Je cherche plutôt du côté de array_unique...mais je rame... |
|
|
00
|
|
|
#13 | ||
|
Membre confirmé
![]() ![]() Inscription : mars 2003 Messages : 1 043 ![]() |
re,
Voici ce que j'ai fait Code :
Mais comme je le disais au début, ma table comporte une dizaine de ligne, donc je parcours toute la table...et là, array_unique ou non, les doublons sont toujours là... schéma de la table id mots_clefs 1 toto, tata, velo, moto 2 roue, rayon, velo, moteur, guidon ...et je veux tout récup, mais pas 2 fois "velo".... |
||
|
|
00
|
|
|
#14 | ||
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
Code :
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
||
|
|
00
|
|
|
#15 | ||
|
Membre confirmé
![]() ![]() Inscription : mars 2003 Messages : 1 043 ![]() |
Merci Maxoo, ta piste était bonnne...pour des questions de présentation, j'ai fait une boucle for plutôt que print_r:
Code :
Notice: Undefined offset: 46 sur ma boucle for jusqu'à l'indice 130...Si je mets la boucle for dans la boucle while, je retrouve ma liste complète, doublons compris... T'as une idée la dessus ? |
||
|
|
00
|
|
|
#16 | |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
Ah oui mince, quand on fait un array_unique, il y reste de trous dans le tableau, comme tu as dit, du coup il faut refaire un array_merge dessus !!
C'est expliqué dans la doc, j'avoue c'est pas facile à trouver, mais faut chercher aussi http://fr.php.net/manual/fr/function.array-merge.php Citation:
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
|
00
|
|
|
#17 | |||
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Salut
La meilleure solution consiste toujours à enregistrer des données atomiques (càd les plus petites possibles) dans une table de BDD. Dans le cas qui nous occupe, cela suppose une table comme celle-ci : keyword(id_foreign, name); Sémantiquement, je trouve que c'est une erreur d'appeler une table "keywords" si tu ne lui donnes que des listes de mots clefs (pas des mots clefs isolés). Ta table actuelle devrait à la limite s'appeler "keyword_list"... Ta requête actuelle telle que je la vois : Citation:
Mise en aplication concrète de ce dont je te parle : Citation:
Citation:
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|||
|
|
00
|
|
|
#18 | |||
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Salut
La meilleure solution consiste toujours à enregistrer des données atomiques (càd les plus petites possibles) dans une table de BDD. Dans le cas qui nous occupe, cela suppose une table comme celle-ci : keyword(id_foreign, name); Sémantiquement, je trouve que c'est une erreur d'appeler une table "keywords" si tu ne lui donnes que des listes de mots clefs (pas des mots clefs isolés). Ta table actuelle devrait à la limite s'appeler "keyword_list"... Ta requête actuelle telle que je la vois : Citation:
Mise en aplication concrète de ce dont je te parle : Citation:
Citation:
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|||
|
|
00
|
|
|
#19 |
|
Membre confirmé
![]() ![]() Inscription : mars 2003 Messages : 1 043 ![]() |
Déjà merci à vous de se pencher sur mon prob. Sympa...Yogui, ton code affiche les mots clefs de toute la table mais non dédoublonnés. Je vais creuser ton idée de table.
Maxoo, effectivement un array_merge par dessus le array_unique fonctionne bien. Reste que pour trier les données, j'ai tenté de glisser un sort() quelque part...sans succès jusqu'à présent: toujours des warnings de wrong parameters... |
|
|
00
|
|
|
#20 |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
ca marche pas ?
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com