Lister des tags

thedeejay Messages postés 74 Date d'inscription dimanche 2 avril 2006 Statut Membre Dernière intervention 23 juin 2010 - 31 janv. 2009 à 10:51
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 31 janv. 2009 à 15:39
Bonjour!
Je suis en train de creer un script de news, qui se présente comme ca:
Table articles: id|titre|contenu[...]|tags
La colonne tags contient une variable avec les tags de l'article sous cette forme: Test, Défaut, Vive, PHPCS, Allez, Les, bleus etc.

Ce que je souhaite faire c'est récuperer tous les tags de tous les articles, puis les mettres sous cette forme sans doublons:

["Tags 1", "Tags 2", (...)]

Si vous n'avez pas compris n'hésitez pas!

7 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
31 janv. 2009 à 11:16
salut

ta base de donnee est mal foutue : tu as plusieurs tags dans un seul champ.

tu aurais du faire une table tags (id, texte, id_article)
0
thedeejay Messages postés 74 Date d'inscription dimanche 2 avril 2006 Statut Membre Dernière intervention 23 juin 2010
31 janv. 2009 à 11:28
oui mais la si il y a 200 articles, à 10 tags par articles ca commence à faire beaucoup...
0
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
31 janv. 2009 à 14:03
Salut,


2000 = beaucoup ??


Ce qui risque de faire beaucoup c'est le traitement PHP pour mettre en forme.


Ce que tu peux faire :
$q = mysql_query("SELECT tags FROM articles");

$arr_tags = array();


while ($r = mysql_fetch_array($q, MYSQL_NUM)) {

  $tags = explode(',', $r[0]);

  $arr_tags = array_merge($arr_tags, $tags);

}


array_unique($arr_tags);


// traitement avec un foreach pour produire la chaine rechercher

foreach($arr_tags as $k=>$v) {

  echo $v.', ';

}
(+ virer la dernière virgule)


J'ai écrit ça un peu à l'arrache et je n'ai pas testé, mais ça devrait fonctionner.


Cordialement,

Kohntark -
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
31 janv. 2009 à 14:20
en mysql, j'ai deja vu des tables avec 4 000 000 de lignes.

mysql> SELECT COUNT(*) FROM clients;
+----------+
| COUNT(*) |
+----------+
|     1698 |
+----------+

mysql> SELECT COUNT(*) FROM encaissements;
+----------+
| COUNT(*) |
+----------+
|     9811 |
+----------+

mysql> SELECT COUNT(*) FROM passage_prestation;
+----------+
| COUNT(*) |
+----------+
|    11705 |
+----------+

2000 lignes, c'est rien...

j'arrive a faire des extractions avec 4 ou 5 jointures sur un p2 400 mhz en quelques secondes, et ca, sans avoir mis AUCUN index autre que les primary keys...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thedeejay Messages postés 74 Date d'inscription dimanche 2 avril 2006 Statut Membre Dernière intervention 23 juin 2010
31 janv. 2009 à 14:44
en fait je doit simplifier le code au max, mais si j'utilise cette méthode c'est principalement pour avoir le moins de requetes possibles, par exemple lorsqu'on fais voir les articles par tag, avec votre méthode on fais 2 requete par tag par article...
donc je redemande en plus simple, comment comparer deux tableaux, ajouter au deuxième les valeurs du premier qui ne sont pas dans le deuxième?
0
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
31 janv. 2009 à 15:00
donc je redemande en plus simple, comment comparer deux tableaux,
ajouter au deuxième les valeurs du premier qui ne sont pas dans le
deuxième?
C'est quoi qui ne va pas avec la méthode que je te propose ?

on fais 2 requete par tag par article...
Je ne comprends pas bien là, tu peux préciser ?

Kohntark-
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
31 janv. 2009 à 15:39
thedeejay, tu peux le faire en une seule requete avec ma methode, suffit de faire une requete imbriquee ou une jointure.

et comme tu le vois, ta methode (en plus de ne pas etre semantique) pose BEAUCOUP PLUS de problemes.

donc est-elle reellement plus simple ?
0
Rejoignez-nous