Page 1 sur 1

cancatenation et requete

Posté : 30 nov. 2011, 11:35
par damien_55
Bonjour à tous,

J'ai une requete ou je recherche un mot dans un champ, ex:
SELECT * FROM `news` WHERE `genre` =5 AND `titre` LIKE '%3D%'
, il me retourne les id etc... qui contiennent le mot et je souhaite ajouté ce mot "3D" dans un champ nommé tag.

A noter que ce champ peut déjà contenir des mots, je voudrais updater ce champ san effacer le reste ???

Re: cancatenation et requete, tag

Posté : 30 nov. 2011, 11:49
par damien_55
En fait j'ai trouvé; Merci quand meme.

Maintenant, je suis en refonte des bdd du site et du site lui-meme.

Du coup je crée des tags par articles.

Donc j'ai bien mar requete:
SELECT * FROM `news` WHERE `genre` =5 AND `titre` LIKE '%3D%'
qui me retourne les id etc... mais je souhaite

ajouter le tag "3D" dans une tables "tag" qui contient les champ id_tag et tag

et dans une table tags_articles ajouter id_tag et id_articles

Tous cela automatiquement a partir de ma requete, puis je le faire directement a partir de mysql ou dois je passer par une page php pour générer tout ça?

Re: cancatenation et requete

Posté : 30 nov. 2011, 12:11
par moogli
salut,

tu compte sérieusement insérer des truc à partir d'un select O_o

je crois que je n'ai pas bien saisis ce que tu souhaite faire.

tu ne pourras pas insérer quoi que ce soit dans une table à partir d'un select.
A la limite si tu passe par une procédure stockée tu fera ce que tu veux.

peux être que si tu explique plus clairement ce que tu souhaite on sera plus en mesure de t'aider.

Je ne pense qu'ajouter des tags à la volé sans aucun contrôle soit une bonne idée, ça va vitre être le brin dans tes tables.

Par contre gérer cette liste de tags a la création de la news cela est tout a fait gérable (par exemple une liste a choix multiple, oublie pas de la nommer avec la notation tableau, et passe l'id du tag en value et non le "nom". ).

Pour la mise à jour c'est la même chose, juste un peu plus complexe pour afficher la liste avec les tags déja selectionné mais c'est relativement simple quand même :)

@+

PS : c'est concaténation c'est les canards qui cancane :)

Re: cancatenation et requete

Posté : 30 nov. 2011, 12:45
par damien_55
Re,

En fait, j'ai recréer une liste de tag dans la table tag; Ok pour l'id du tag, c'est clair.

PAr contre j'ai à peu prés 10 000 news à retraité. les tags sont issus de ces news donc je me disais qu'à la main pour les 10 000 ça va mettre un paquet de temps donc j'en suis arrivé à la conclusion que pour les tags aujourd'hui déjà vérifié le faire automatiquement en inserant dans une base JOIN l'id_tag et l'id_article et ensuite pour les nouveaux tags effectivement gérér ça dés l'ajout de la news.

En fait, l'idée est de réduire les erreurs d'orthographe sur les tags et d'éviter les duplicate.

Re: cancatenation et requete

Posté : 30 nov. 2011, 14:19
par moogli
le problème va être le choix des tags.

si tu les choisis simplement par recherche dans le titre / corps de la news ça peux être "relativement simple" mais je maintient qu'une procédure stockée sera l'élément adapté a ce que tu souhaite faire et surtout réutilisable.

ta procédure devrait,
parcourir tout les tuples la table,
vérifier si un tag se trouve dedans et insérer dans la table "tagsnews" les correspondances.
dit comme cela c'est simple mais nécessite quand même pas mal de boulot.

je te conseil
- une requête préparée pour l' insertion (insert into tagsnew values (null, ?, ?); par exemple).
- une première requête afin d'alimenter un tableau ou un curseur que tu va parcourir pour chaque élément de la table.
- une requête qui select tout les news et pour chaque news (donc un curseur) tu va vérifier la présence de l'un ou l'autre des tags dans le titre ou texte et si c'est le cas tu place les deux variables que va utiliser pour la requête préparée et tu l'exécute.

Les trucs en plus :
ajouter une requête qui vérifie que le couple ne soit pas présent ou alors utiliser le couple comme clef primaire ce qui va imposer l'unicité ;)
dans ce cas attention de bien gérer les exceptions générée en cas de doublon pour ne pas arrêter la procédure en court de route :).
voir faire les deux ;)

Attention ce que tu cherche à faire est réalisable mais risque de demander pas mal de ressource, il pourrait être intéressant de la faire en plusieurs fois ;)

si tu souhaite que la chose soit réutilisable par la suite, je te conseil de créer une fonction qui va chercher les tags dans le titre / texte et qui va gérer l'insertion ou nom dans la tables "tagsnews". ensuite un p'tit trigger after insert sur la table news et le truc est automatique pas besoin de le gérer coté client (au risque des possible doublon que tu indique ;) ).

@+

@+